Files
AC707N/SDK/interface/driver/cpu/br35/asm/power/power_api.h
T
2025-12-03 11:12:34 +08:00

181 lines
5.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __POWER_API_H__
#define __POWER_API_H__
#define AT_VOLATILE_RAM_POWER AT(.power_driver.data)
#define AT_VOLATILE_RAM_BSS_POWER AT(.power_driver.data.bss)
#define AT_VOLATILE_RAM_CODE_POWER AT(.power_driver.text.cache.L1)
#define AT_VOLATILE_RAM_LOWPOWER AT_VOLATILE_RAM_POWER //AT(.power_driver.data.overlay)
#define AT_VOLATILE_RAM_BSS_LOWPOWER AT(.power_driver.data.bss.overlay)//AT_VOLATILE_RAM_BSS_POWER
#define AT_VOLATILE_RAM_CODE_LOWPOWER AT_VOLATILE_RAM_CODE_POWER //AT(.power_driver.text.cache.L1.overlay)
#define AT_VOLATILE_CACHE_LOWPOWER
#define AT_VOLATILE_CACHE_BSS_LOWPOWER
#define AT_VOLATILE_CACHE_CODE_LOWPOWER AT(.power_driver.text.cache.fetch)
//
//
// platform_data
//
//
//
//******************************************************************
//config
enum LOWPOWER_CONFIG {
LOWPOWER_CLOSE,
SLEEP_EN,
DEEP_SLEEP_EN,
};
//osc_type
enum LOWPOWER_OSC_TYPE {
OSC_TYPE_LRC,
OSC_TYPE_BT_OSC,
OSC_TYPE_NULL,
};
struct _power_param {
//sleep
u32 btosc_hz; //蓝牙晶振频率(默认使用24M)
u32 osc_delay_us; //低功耗晶振起振延时,为预留配置。
u32 t1; //低功耗参数,预留配置
u32 t2; //低功耗参数,预留配置
u32 t3; //低功耗参数,预留配置
u32 t4; //低功耗参数,预留配置
//power
//vddiom\vddiow在进出低功耗时使用 VDDIO_KEEP_TYPE 配置
u8 vddiom_lev; //vddiom,系统工作时使用vddiom ldo(使用enum VDDIOM_VOL配置)
u8 vddiow_lev; //vddiow,系统低功耗时使用vddiow ldo(使用enum VDDIOW_VOL配置)
//sleep
u8 config; //低功耗使能,蓝牙&&系统空闲可进入低功耗(使用LOWPOWER_CONFIG配置)
u8 osc_type; //低功耗晶振类型(使用enum LOWPOWER_OSC_TYPE配置)
u8 lptmr_flow; //低功耗参数由用户配置
};
struct _power_pdata {
struct _power_param *power_param_p;
struct _wakeup_param *wakeup_param_p;
};
//
//
// power_api
//
//
//
//******************************************************************
enum VDDIO_KEEP_TYPE {
VDDIO_KEEP_TYPE_NULL, //vddiow使用配置值
VDDIO_KEEP_TYPE_NORMAL, //vddiow使用配置值使用vddiom挡位,即vddiom_lev
VDDIO_KEEP_TYPE_TRIM, //vddiow使用trim值
VDDIO_KEEP_TYPE_PG, //保持vddiom不关闭
VDDIO_KEEP_TYPE_CLOSE, //vddio关闭
};
#include "power/low_power.h"
void power_early_init(u32 arg);
void power_later_init(u32 arg);
void power_init(struct _power_pdata *pdata);
enum PCONTROL_CMD {
PCONTROL_POWER_DRIVER_RESERVE = 0,
PCONTROL_P_PUTBYTE, //串口调试函数
//*****************************************************
/* power
*/
PCONTROL_POWER_MODE = 0x100,
PCONTROL_DCVDD_CAP_SW, //0DCVDD上没有外挂电容 1DCVDD上有外挂电容
PCONTROL_FLASH_PG_VDDIO, //0FLASH电源引脚使用IO 1FLASH电源引脚没有使用IO
PCONTROL_RTC_CLK, //RTC_CLK类型,配置开机、关机晶振流程
PCONTROL_POWER_SUPPLY, //供电方式,0IOVDD供电,1VPWR供电
//*****************************************************
/* sleep
*/
PCONTROL_PD_VDDIO_KEEP, //pdown vddio切换流程(使用enum VDDIO_KEEP_TYPE配置)
PCONTROL_PD_WDVDD_LEV, //pdown wvdd挡位
PCONTROL_PD_DVDD_LEV, //pdown dvdd挡位
PCONTROL_PD_KEEP_LPCTMU, //pdown 触摸是否保持 0:不保持 1:保持
PCONTROL_PD_KEEP_NVDD, //pdown 模式pvdd是否掉电 0, 不掉点 1:掉电
//*****************************************************
/* soff
*/
PCONTROL_SF_KEEP_LRC, //soff lrc是否保持 0:不保持 1:保持
PCONTROL_SF_VDDIO_KEEP, //soff vddio切换流程(使用enum VDDIO_KEEP_TYPE配置)
PCONTROL_SF_KEEP_NVDD, //soff nvdd是否保持 0:不保持 1:保持
PCONTROL_SF_KEEP_PVDD, //soff pvdd是否保持 0:不保持 1:保持
//*****************************************************
/* 以下配置为对应子模块的预留配置
*/
PCONTROL_PHW_RESERVE = 0x100, //使用enum POWER_MODE配置
PCONTROL_P33_RESERVE = 0x200, //使用PCONTROL_P33_CMD配置
PCONTROL_P11_RESERVE = 0x300, //使用PCONTROL_P11_CMD配置
PCONTROL_LP_FLOW_IC_RESERVE = 0x400, //使用PCONTROL_IC_CMD配置
};
u32 power_control(enum PCONTROL_CMD cmd, u32 arg);
void dvdd2_bypass_en(u8 mode);
//
//
// lowpower
//
//
//
//******************************************************************
void pmu_trim(u32 force_trim, u32 vddio_tieup_vbat);
//
//
// soff
//
//
//
//******************************************************************
//p33 soft flag
enum soft_flag_io_stage {
SOFTFLAG_HIGH_RESISTANCE,
SOFTFLAG_PU,
SOFTFLAG_PD,
SOFTFLAG_OUT0,
SOFTFLAG_OUT0_HD0,
SOFTFLAG_OUT0_HD,
SOFTFLAG_OUT0_HD0_HD,
SOFTFLAG_OUT1,
SOFTFLAG_OUT1_HD0,
SOFTFLAG_OUT1_HD,
SOFTFLAG_OUT1_HD0_HD,
SOFTFLAG_PU100K,
SOFTFLAG_PU1M,
SOFTFLAG_PD100K,
SOFTFLAG_PD1M,
};
struct app_soft_flag_t {
u8 sfc_fast_boot;
u8 flash_stable_delay_sel;
u8 usbdp;
u8 usbdm;
u8 pp0;
};
void mask_softflag_config(struct app_soft_flag_t *softflag);
#endif