#ifndef POWER_INTERFACE_H #define POWER_INTERFACE_H #include "generic/typedef.h" #define NEW_BASEBAND_COMPENSATION 0 #define AT_VOLATILE_RAM AT(.volatile_ram) #define AT_VOLATILE_RAM_CODE AT(.volatile_ram_code) #define AT_NON_VOLATILE_RAM //AT(.non_volatile_ram) #define AT_NON_VOLATILE_RAM_CODE //AT(.non_volatile_ram_code) extern u32 nvbss_begin; extern u32 nvbss_length; extern u32 nvdata_begin; extern u32 nvdata_size; extern u32 nvdata_addr; #define NV_RAM_START &nvbss_begin #define NV_RAM_SIZE &nvbss_length #define NV_RAM_END (NV_RAM_START + NV_RAM_SIZE) enum { MAGIC_ADDR = 2, ENTRY_ADDR = 3, }; #define RAM1_MAGIC_ADDR (NV_RAM_END - MAGIC_ADDR*4) #define RAM1_ENTRY_ADDR (NV_RAM_END - ENTRY_ADDR*4) #define SYS_SLEEP_EN BIT(1) #define SYS_SLEEP_BY_IDLE BIT(2) #define RF_SLEEP_EN BIT(3) #define RF_FORCE_SYS_SLEEP_EN BIT(4) #define SLEEP_SAVE_TIME_US 1L enum { BT_OSC = 0, RTC_OSCL, LRC_32K, LRC_16M, }; enum { OSC_TYPE_BT_OSC = 0, OSC_TYPE_RTC, OSC_TYPE_LRC, }; enum { PWR_NO_CHANGE = 0, PWR_LDO33, PWR_LDO15, PWR_DCDC15, }; enum { LONG_4S_RESET = 0, LONG_8S_RESET, }; //Macro for VDDIOM_VOL_SEL //如果使用内封sdram封装的芯片,并且VDDIO由芯片内部供电, 需要保证大于等于3.3V enum { VDDIOM_VOL_28V = 0, VDDIOM_VOL_29V, VDDIOM_VOL_30V, VDDIOM_VOL_31V, VDDIOM_VOL_32V, VDDIOM_VOL_33V, VDDIOM_VOL_34V, VDDIOM_VOL_35V, VDDIOM_VOL_MAX, }; //Macro for VDDIOW_VOL_SEL enum { VDDIOW_VOL_21V = 0, VDDIOW_VOL_24V, VDDIOW_VOL_28V, VDDIOW_VOL_32V, VDDIOW_VOL_MAX, }; struct low_power_param { u8 osc_type; u32 osc_hz; u16 delay_us; u8 config; u8 btosc_disable; u8 vddiom_lev; u8 vddiow_lev; u8 vdc14_lev; u8 vdc14_dcdc; u8 sysvdd_lev; u8 pd_wdvdd_lev; u8 vlvd_value; u8 vlvd_enable; }; #define BLUETOOTH_RESUME BIT(1)//保留参数 #define POWER_SLEEP_WAKEUP BIT(2)//休眠唤醒支持 #define POWER_OFF_WAKEUP BIT(3)//关机唤醒支持 #define RISING_EDGE 0 //上升沿 #define FALLING_EDGE BIT(0) //下降沿 #define AUTO_PUPD BIT(1) //IO边缘自动配置内部上下拉(IO外部不能接高于VDDIO电压,否则电流倒灌) #define POWER_KEEP_DACVDD BIT(0) //休眠:DACVDD保持工作 #define POWER_KEEP_RTC BIT(1) //休眠:RTC保持工作 #define POWER_KEEP_RESET BIT(2) //休眠:VCM复位保持工作 #define POWER_KEEP_PWM_LED BIT(3) //休眠:PWM_LED复位保持工作 #define POWER_KEEP_SYSPLL BIT(4) //休眠前系统使用SYS_PLL,不切BTOSC_24M时钟 #define POWER_KEEP_FLASH BIT(5) //休眠不关闭flash电源 #define POWER_KEEP_WDT BIT(6) //休眠不关闭看门狗 struct port_wakeup { u8 edge; //[0]: Rising / [1]: Falling u8 attribute; //Relate operation bitmap OS_RESUME | BLUETOOTH_RESUME u8 iomap; //Port Group-Port Index u8 low_power; }; struct long_press { u8 enable; u8 use_sec4; //1:sec 4 , 0:sec8 u8 edge; //rising --> hight reset , falling --> low reset u8 iomap; //Port Group-Port Index }; struct charge_wakeup { u8 attribute; //Relate operation bitmap OS_RESUME | BLUETOOTH_RESUME }; struct alarm_wakeup { u8 attribute; //Relate operation bitmap OS_RESUME | BLUETOOTH_RESUME }; struct lvd_wakeup { u8 attribute; //Relate operation bitmap OS_RESUME | BLUETOOTH_RESUME }; struct sub_wakeup { u8 attribute; //Relate operation bitmap OS_RESUME | BLUETOOTH_RESUME }; //