/*resume时需要开启电源*/ int bsp_pmu_sdio_resume(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; 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++) for(i = (signed)(sizeof(pmu_volt_sdio)/(sizeof((pmu_volt_sdio)[0])) - 1);i >= 0;i--) { volt_id = pmu_volt_sdio[i].volt_id; hi6551_volt = &hi6551_volt_table->hi6551_volt_attr[volt_id]; if(pmu_volt_sdio[i].flag) { regval = (u8)((u32)0x1 << hi6551_volt->enable_bit_offset); bsp_hi6551_reg_write(hi6551_volt->enable_reg_addr, regval); pmu_volt_sdio[i].flag = 0; if(PMIC_HI6551_LDO22 == volt_id) udelay(20); } } return BSP_PMU_OK; }
/*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; }
static int __ddrrun_func pmussi_send_data (int reg_addr, char *buffer, int len) { int i; for (i = 0; i < len; i++) { bsp_hi6551_reg_write( reg_addr + i, *(buffer + i)); PMUSSI_DELAY(); } return 0; }
/***************************************************************************** * 函 数 名 : hi6551_reg_read * * 功能描述 : 对pmu芯片寄存器的读函数 * * 输入参数 : u16 addr:待写入的寄存器地址 * u8 u8Data:读出的数据 * * 输出参数 : 无 * * 返 回 值 : 无 *****************************************************************************/ void bsp_dr_reg_write( u16 addr, u8 value) { bsp_hi6551_reg_write(addr,value); }
void coul_reg_write(u16 reg, u8 val) { bsp_hi6551_reg_write(reg, val); }