-static struct ldo_ctl_info* LDO_GetLdoCtl(LDO_ID_E ldo_id)
-{
- int i = 0;
- struct ldo_ctl_info* ctl = NULL;
-
- for ( i = 0; i < ARRAY_SIZE(s_ldo_ctl_data); ++i)
- {
- if (s_ldo_ctl_data[i].id == ldo_id)
- {
- ctl = &s_ldo_ctl_data[i];
- break;
- }
- }
-
- SCI_PASSERT(ctl != NULL, ("ldo_id = %d", ldo_id));
- return ctl;
-}
-
-LDO_ERR_E LDO_SetVoltLevel(LDO_ID_E ldo_id, LDO_VOLT_LEVEL_E volt_level)
-{
- unsigned short reg_data;
- struct ldo_ctl_info* ctl = NULL;
-
- ctl = LDO_GetLdoCtl(ldo_id);
- SCI_PASSERT(ctl != NULL, ("ldo_id = %d", ldo_id));
-
- if (ctl->level_reg_b0 == LDO_INVALID_REG_ADDR)
- {
- goto Err_Exit;
- }
-
- if (ctl->level_reg_b0 != ctl->level_reg_b1)
- {
- printf("ldo_id:%d, level_reg_b0:%08x, level_reg_b1:%08x\r\n", ldo_id, ctl->level_reg_b0, ctl->level_reg_b1);
- goto Err_Exit;
- }
-
- switch (volt_level)
- {
- case LDO_VOLT_LEVEL0:
- ANA_REG_AND(ctl->level_reg_b0, (~(ctl->b0|ctl->b1)));
- break;
-
- case LDO_VOLT_LEVEL1:
- reg_data = ANA_REG_GET(ctl->level_reg_b0);
- reg_data &=~ctl->b1;
- reg_data |= ctl->b0;
- ANA_REG_SET(ctl->level_reg_b0, reg_data);
- break;
-
- case LDO_VOLT_LEVEL2:
- reg_data = ANA_REG_GET(ctl->level_reg_b0);
- reg_data &=~ctl->b0;
- reg_data |= ctl->b1;
- ANA_REG_SET(ctl->level_reg_b0, reg_data);
- break;
-
- case LDO_VOLT_LEVEL3:
- ANA_REG_OR (ctl->level_reg_b0, (ctl->b0|ctl->b1));
- break;
-
- default:
- goto Err_Exit;
- }
-
- ctl->current_volt_level = volt_level;
- return LDO_ERR_OK;
-Err_Exit:
- return LDO_ERR_ERR;
-}
-