xref: /optee_os/core/drivers/pm/sam/at91_pm.h (revision 46f0e73383512fcc3244674c764c81a1d19c9055)
115300b40SClément Léger /* SPDX-License-Identifier: BSD-2-Clause */
215300b40SClément Léger /*
315300b40SClément Léger  * Copyright (c) 2021, Microchip
415300b40SClément Léger  */
515300b40SClément Léger 
615300b40SClément Léger #ifndef AT91_PM_H
715300b40SClément Léger #define AT91_PM_H
815300b40SClément Léger 
915300b40SClément Léger #define	AT91_PM_STANDBY		0x00
1015300b40SClément Léger #define AT91_PM_ULP0		0x01
1115300b40SClément Léger #define AT91_PM_ULP0_FAST	0x02
1215300b40SClément Léger #define AT91_PM_ULP1		0x03
1315300b40SClément Léger #define	AT91_PM_BACKUP		0x04
1415300b40SClément Léger 
1515300b40SClément Léger #ifndef __ASSEMBLER__
1615300b40SClément Léger 
1715300b40SClément Léger #include <kernel/thread.h>
1815300b40SClément Léger #include <sm/sm.h>
1915300b40SClément Léger #include <tee_api_types.h>
2015300b40SClément Léger #include <types_ext.h>
2115300b40SClément Léger 
2215300b40SClément Léger struct at91_pm_data {
2315300b40SClément Léger 	vaddr_t shdwc;
2415300b40SClément Léger 	vaddr_t securam;
2515300b40SClément Léger 	vaddr_t secumod;
2615300b40SClément Léger 	vaddr_t sfrbu;
2715300b40SClément Léger 	vaddr_t pmc;
2815300b40SClément Léger 	vaddr_t ramc;
29*46f0e733STony Han 	vaddr_t ramc_phy;
3015300b40SClément Léger 	unsigned int mode;
3115300b40SClément Léger 	const void *fdt;
3215300b40SClément Léger };
3315300b40SClément Léger 
3415300b40SClément Léger void at91_pm_suspend_in_sram(struct at91_pm_data *pm_data);
3515300b40SClément Léger void at91_pm_cpu_resume(void);
3615300b40SClément Léger extern uint32_t at91_pm_suspend_in_sram_sz;
3715300b40SClément Léger 
3815300b40SClément Léger void at91_pm_resume(struct at91_pm_data *pm_data);
3915300b40SClément Léger 
4015300b40SClément Léger #endif /* __ASSEMBLER__ */
4115300b40SClément Léger 
4215300b40SClément Léger #endif /* AT91_PM_H */
43