DRV_PMU

[English]

DRV_PMU API Status

API

drv_pmu_initialise()

drv_pmu_reg_vusb_callback()

drv_pmu_reg_ana_callback()

drv_pmu_enable_mbist_check_bypass()

drv_pmu_select_aon_32k_source()

drv_pmu_select_watchdog_dest()

drv_pmu_enable_usb_interrput()

drv_pmu_enable_dlp_reset_chip()

drv_pmu_get_usb_level_active_state()

drv_pmu_cfg_wakeup_source()

drv_pmu_enable_ana_interrput()

drv_pmu_cfg_dlp_pull()

drv_pmu_cfg_dlp_driver_strength()

drv_pmu_cfg_flash_sck_driver_strength()

drv_pmu_halt_config()

drv_pmu_enable_aon_timer_clk()

drv_pmu_set_retention_regbit()

drv_pmu_get_retention_regbit()

drv_pmu_set_retention_reg()

drv_pmu_get_retention_reg()

drv_pmu_set_rw_wakeup_req()

drv_pmu_set_bt_iso_en()

drv_pmu_get_wakeup_deepsleep_source()

DRV_PMU API Reference

Header File

Functions

int32_t drv_pmu_initialise(void)

pmu driver initialise.

pmu driver的初始化,主要是中断的注册,开机的时候调用一次

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_reg_vusb_callback(pfunc_vusb_cb_t pfn_cb, bool enable)

注册充电口的vusb中断.

如果多个用户注册,只有最后一个是生效的

参数:
  • pfn_cb[in] 注册的callback中断函数

  • enable[in] true: 注册 false: 反注册

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_reg_ana_callback(pfunc_wkup_cb_t pfn_cb, bool enable)

注册模拟部分的其他中断callback.

如果多个用户注册,只有最后一个是生效的

参数:
  • pfn_cb[in] 注册的callback中断函数

  • enable[in] true: 注册 false: 反注册

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_enable_mbist_check_bypass(bool bypass)

enable Mbist memory check bypass or not.

参数:

bypass[in] true: bypass false: not bypass(default)

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_select_aon_32k_source(drv_pmu_32k_src_e e_src)

select aon 32k source.

参数:

e_src[in] see drv_pmu_32k_src_e

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_select_watchdog_dest(drv_pmu_wdt_dst_e e_wdt_rst_dst, bool permit)

select watch dog reset destionation.

配置watchdog reset的时候reset哪些部分

参数:
  • e_wdt_rst_dst[in] see drv_pmu_wdt_dst_e,枚举类型可以或起来一起传入

  • permit[in] true: permit false: not permit

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_enable_usb_interrput(drv_pmu_usb_voltage_e e_vol, bool enable_irq, bool irq_lvl_low)

config usb interrupt.

配置充电口的中断电压选择

参数:
  • e_vol[in] 选择的中断电压 see drv_pmu_usb_voltage_e

  • enable_irq[in] true: enable interrutp false: disable interrupt

  • irq_lvl_low[in] true: generate interrrupt in low level false: generate interrrupt in high level

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_enable_dlp_reset_chip(bool en_reset)

enable DLP reset chip or not.

参数:

en_reset[in] true: enable reset chip false: disable reset chip

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

drv_pmu_usb_voltage_e drv_pmu_get_usb_level_active_state(void)

get current usb voltage state

返回:

voltage state see drv_pmu_usb_voltage_e

int32_t drv_pmu_cfg_wakeup_source(drv_pmu_wakeup_src_e e_src, bool enable_wakeup)

config deep wakeup enable source.

参数:
返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_enable_ana_interrput(uint32_t ana_idx, bool enable_irq, bool irq_lvl_low)

config analog wakeup.

模拟wakeup的中断配置

参数:
  • ana_idx[in] analog wakeup index, 0 ~ 7, see @drv_pmu_ana_src_e

  • enable_irq[in] true: enable interrupt false: disable interrupt

  • irq_lvl_low[in] true: generate interrrupt in low level false: generate interrrupt in high level

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_cfg_dlp_pull(bool pull_en, bool pull_down)

DLP pull config.

参数:
  • pull_en[in] true: enable pull false: disable pull

  • pull_down[in] true: pull down false: pull up

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_cfg_dlp_driver_strength(uint32_t strenth)

配置DLP的驱动强度

参数:

strenth[in] 驱动强度 0~3 ,default=0

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_cfg_flash_sck_driver_strength(uint32_t strenth)

配置flash sck的驱动强度

参数:

strenth[in] 驱动强度 0~3 ,default=0

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_halt_config(pmu_halt_cfg_t *cfg)

drv_pmu_halt_config brief description

参数:

cfg[in] 指向halt config的指针,默认不配置时,该config对应的register默认为0

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_enable_aon_timer_clk(bool enable)

enable or disable aon timer clock.

控制AON timer的clock是否打开

参数:

enable[in] true: 打开clock false: 关闭clock

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_set_retention_regbit(uint32_t reg_index, uint32_t bit, uint32_t val)

set retention register bit value.

配置retention register的值,一个有4个retention register,需要指定

参数:
  • reg_index[in] 0~3, 指定是哪个retention register

  • bit[in] 0~31, 指定retention register的哪个bit

  • val[in] 0 or 1, 该bit对应的值

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

uint32_t drv_pmu_get_retention_regbit(uint32_t reg_index, uint32_t bit)

get retention register bit value.

获取某个retention register的某个bit对应的值

参数:
  • reg_index[in] 0~3, 指定是哪个retention register

  • bit[in] 0~31, 指定retention register的哪个bit

返回:

bit value, 0 or 1

int32_t drv_pmu_set_retention_reg(uint32_t reg_index, uint32_t reg_val)

set retention register value.

配置retention register的值,一个有4个retention register,需要指定

参数:
  • reg_index[in] 0~3, 指定是哪个retention register

  • reg_val[in] register 对应的值

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

uint32_t drv_pmu_get_retention_reg(uint32_t reg_index)

get retention register value.

获取某个retention register的值

参数:

reg_index[in] 0~3, 指定是哪个retention register

返回:

register value

int32_t drv_pmu_set_rw_wakeup_req(bool value)

drv_pmu_set_rw_wakeup_req.

设置rw唤醒请求

参数:

void[in]

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

int32_t drv_pmu_set_bt_iso_en(bool value)

drv_pmu_set_bt_iso_en.

设置bt休眠锁存信号

参数:

void[in]

返回值:
  • 0 – success [BK_RET_OK]

  • other – fail

返回:

result

uint32_t drv_pmu_get_wakeup_deepsleep_source(void)

get wakeup deepsleep source (register 0x14) bit0: rw bit1: int_TD bit2: touch_wkup bit3: GPIO_DET compare bit4: chg_trc bit5: chg_cv bit6: chg_ccfast bit7: wake_touch bit8: usb4v bit9: usb2v bit10: usb1v bit11: re_chg bit12: chg_finish bit13: rtc bit14: gpio bit15: aon timer

返回:

wakeup source

Structures

struct pmu_halt_cfg_t

Macros

PMU_RETENTION_0_0__FAST_JUMP2FLASH
PMU_RETENTION_0_1__4Line_FASTBOOT
PMU_RETENTION_0_2__reset_flash
PMU_RETENTION_0_3__reset_wait_2times
PMU_RETENTION_0_4__charger_in_deepsleep
PMU_RETENTION_0_5__charger_first_active
PMU_RETENTION_0_6__ota_reboot
PMU_RETENTION_0_7__froce_reboot
PMU_RETENTION_3_14__keep_rom

Type Definitions

typedef enum _drv_pmu_wdt_dst_e drv_pmu_wdt_dst_e

watchdog reset destination select

typedef enum _drv_pmu_32k_src_e drv_pmu_32k_src_e

aon 32k source

typedef enum _drv_pmu_usb_voltage_e drv_pmu_usb_voltage_e

usb电压

typedef void (*pfunc_vusb_cb_t)(drv_pmu_usb_voltage_e e_from, drv_pmu_usb_voltage_e e_to)

vusb interrupt callback

typedef enum _drv_pmu_ana_src_e drv_pmu_ana_src_e

analog source define

typedef enum _drv_pmu_wakeup_src_e drv_pmu_wakeup_src_e

wakeup source

typedef void (*pfunc_wkup_cb_t)(drv_pmu_wakeup_src_e e_src)

wakeup interrupt callback

Enumerations

enum _drv_pmu_wdt_dst_e

watchdog reset destination select

Values:

enumerator DRV_PMU_WDT_RESET_AON
enumerator DRV_PMU_WDT_RESET_DIG
enumerator DRV_PMU_WDT_RESET_ANA
enumerator DRV_PMU_WDT_RESET_PMU
enum _drv_pmu_32k_src_e

aon 32k source

Values:

enumerator DRV_PMU_32K_FROM_26M_DIV
enumerator DRV_PMU_32K_FROM_RC32K
enum _drv_pmu_usb_voltage_e

usb电压

Values:

enumerator DRV_PMU_USB_0V_MORE
enumerator DRV_PMU_USB_1V_MORE
enumerator DRV_PMU_USB_2V_MORE
enumerator DRV_PMU_USB_4V_MORE
enum _drv_pmu_ana_src_e

analog source define

Values:

enumerator DRV_PMU_ANA_chg_term
enumerator DRV_PMU_ANA_re_chg
enumerator DRV_PMU_ANA_chg_ccfast
enumerator DRV_PMU_ANA_chg_cv
enumerator DRV_PMU_ANA_chg_trc
enumerator DRV_PMU_ANA_gpio_det
enumerator DRV_PMU_ANA_touch_wkup
enumerator DRV_PMU_ANA_int_touch
enumerator DRV_PMU_ANA_SRC_MAX
enum _drv_pmu_wakeup_src_e

wakeup source

Values:

enumerator DRV_PMU_WAKEUP_SRC_gpio
enumerator DRV_PMU_WAKEUP_SRC_rtc
enumerator DRV_PMU_WAKEUP_SRC_ana0_chg_term
enumerator DRV_PMU_WAKEUP_SRC_ana1_rechg
enumerator DRV_PMU_WAKEUP_SRC_usb1v
enumerator DRV_PMU_WAKEUP_SRC_usb2v
enumerator DRV_PMU_WAKEUP_SRC_usb4v
enumerator DRV_PMU_WAKEUP_SRC_touch
enumerator DRV_PMU_WAKEUP_SRC_ana2_chg_ccfast
enumerator DRV_PMU_WAKEUP_SRC_ana3_chg_cv
enumerator DRV_PMU_WAKEUP_SRC_ana4_chg_trc
enumerator DRV_PMU_WAKEUP_SRC_ana5_gpio_det
enumerator DRV_PMU_WAKEUP_SRC_ana6_touch_wkup
enumerator DRV_PMU_WAKEUP_SRC_ana7_int_touch
enumerator DRV_PMU_WAKEUP_SRC_rwip
enumerator DRV_PMU_WAKEUP_SRC_aon_timer
enumerator DRV_PMU_WAKEUP_SRC_ALL