/*suspend时需要关闭电源*/ int bsp_pmu_suspend(void) { int iret = BSP_PMU_OK; PMIC_HI6551_VLTGS_TABLE *hi6551_volt_table = (PMIC_HI6551_VLTGS_TABLE *)SHM_PMU_VOLTTABLE_ADDR; PMIC_HI6551_VLTGS_ATTR *hi6551_volt; unsigned int i = 0 ; u8 volt_id = 0; u8 regval = 0; /*DDR中电压属性表安全性检查*/ iret = hi6551_volt_table_check(hi6551_volt_table); if(BSP_PMU_OK != iret) return BSP_PMU_VOLTTABLE_ERROR; for(i = 0;i < sizeof(pmu_volt)/(sizeof((pmu_volt)[0]));i++) { volt_id = pmu_volt[i].volt_id; hi6551_volt = &hi6551_volt_table->hi6551_volt_attr[volt_id]; bsp_hi6551_reg_read(hi6551_volt->is_enabled_reg_addr, ®val); if(regval & ((u32)0x1 << hi6551_volt->is_enabled_bit_offset)) { regval = (u8)((u32)0x1 << hi6551_volt->disable_bit_offset); bsp_hi6551_reg_write(hi6551_volt->disable_reg_addr, regval); pmu_volt[i].flag = 1; } } return BSP_PMU_OK; }
int bsp_hi6551_dr_get_current(int dr_id) { u8 regval = 0; int iret = BSP_PMU_OK; PMIC_HI6551_DRS_ATTR *hi6551_dr; u32 cur = 0; /*参数有效性检查*/ iret = hi6551_dr_para_check(dr_id); if(BSP_PMU_OK != iret) return BSP_PMU_PARA_ERROR; hi6551_dr = &hi6551_dr_attr[dr_id]; bsp_hi6551_reg_read(hi6551_dr->current_reg_addr, ®val); /* 获取电压档位值 */ cur = (regval & hi6551_dr->current_bit_mask) >> hi6551_dr->current_bit_offset; cur = hi6551_dr->current_list[cur]; pmic_print_info("dr_id %d's current is %d uA!\n", dr_id,cur); return cur; }
u8 bsp_pmu_version_get(void) { u8 regval = 0; bsp_hi6551_reg_read(HI6551_VERSION_OFFSET, ®val); return regval; }
u8 coul_reg_read(u16 reg) { unsigned char val = 0; bsp_hi6551_reg_read(reg, &val); return val; }
static char __ddrrun_func pmussi_reg_read(int reg_addr) { char regval; bsp_hi6551_reg_read(reg_addr, ®val); PMUSSI_DELAY(); return regval; }
static int __ddrrun_func pmussi_recv_data (int reg_addr, char *buffer, int len) { int i; for (i = 0; i < len; i++) { bsp_hi6551_reg_read(reg_addr + i, (buffer + i)); PMUSSI_DELAY(); } return 0; }
/***************************************************************************** * 函 数 名 : hi6551_reg_read * * 功能描述 : 对pmu芯片寄存器的读函数 * * 输入参数 : u16 addr:待写入的寄存器地址 * u8 u8Data:读出的数据 * * 输出参数 : 无 * * 返 回 值 : 无 *****************************************************************************/ void bsp_dr_reg_read( u16 addr, u8 *pValue) { bsp_hi6551_reg_read(addr,pValue); }