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