forked from luck/tmp_suning_uos_patched
OMAP3+: VP: create VP helper function for updating error gain
Create new helper function in VP layer for updating VP error gain. Currently used during pre-scale for VP force update and VC bypass. TODO: determine if this can be removed from the pre-scale path and moved to VP enable path. Signed-off-by: Kevin Hilman <khilman@ti.com>
This commit is contained in:
parent
6f56727383
commit
76ea7424f8
|
@ -105,9 +105,7 @@ int omap_vc_pre_scale(struct voltagedomain *voltdm,
|
|||
u8 *target_vsel, u8 *current_vsel)
|
||||
{
|
||||
struct omap_vc_channel *vc = voltdm->vc;
|
||||
struct omap_vdd_info *vdd = voltdm->vdd;
|
||||
struct omap_volt_data *volt_data;
|
||||
u32 vc_cmdval, vp_errgain_val;
|
||||
u32 vc_cmdval;
|
||||
|
||||
/* Check if sufficient pmic info is available for this vdd */
|
||||
if (!voltdm->pmic) {
|
||||
|
@ -129,11 +127,6 @@ int omap_vc_pre_scale(struct voltagedomain *voltdm,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Get volt_data corresponding to target_volt */
|
||||
volt_data = omap_voltage_get_voltdata(voltdm, target_volt);
|
||||
if (IS_ERR(volt_data))
|
||||
volt_data = NULL;
|
||||
|
||||
*target_vsel = voltdm->pmic->uv_to_vsel(target_volt);
|
||||
*current_vsel = voltdm->pmic->uv_to_vsel(vdd->curr_volt);
|
||||
|
||||
|
@ -143,15 +136,7 @@ int omap_vc_pre_scale(struct voltagedomain *voltdm,
|
|||
vc_cmdval |= (*target_vsel << vc->common->cmd_on_shift);
|
||||
voltdm->write(vc_cmdval, vc->cmdval_reg);
|
||||
|
||||
/* Setting vp errorgain based on the voltage */
|
||||
if (volt_data) {
|
||||
vp_errgain_val = voltdm->read(voltdm->vp->vpconfig);
|
||||
vdd->vp_rt_data.vpconfig_errorgain = volt_data->vp_errgain;
|
||||
vp_errgain_val &= voltdm->vp->common->vpconfig_errorgain_mask;
|
||||
vp_errgain_val |= vdd->vp_rt_data.vpconfig_errorgain <<
|
||||
__ffs(voltdm->vp->common->vpconfig_errorgain_mask);
|
||||
voltdm->write(vp_errgain_val, voltdm->vp->vpconfig);
|
||||
}
|
||||
omap_vp_update_errorgain(voltdm, target_volt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -106,6 +106,25 @@ void __init omap_vp_init(struct voltagedomain *voltdm)
|
|||
voltdm->write(vp_val, vp->vlimitto);
|
||||
}
|
||||
|
||||
int omap_vp_update_errorgain(struct voltagedomain *voltdm,
|
||||
unsigned long target_volt)
|
||||
{
|
||||
struct omap_volt_data *volt_data;
|
||||
|
||||
/* Get volt_data corresponding to target_volt */
|
||||
volt_data = omap_voltage_get_voltdata(voltdm, target_volt);
|
||||
if (IS_ERR(volt_data))
|
||||
return -EINVAL;
|
||||
|
||||
/* Setting vp errorgain based on the voltage */
|
||||
voltdm->rmw(voltdm->vp->common->vpconfig_errorgain_mask,
|
||||
volt_data->vp_errgain <<
|
||||
__ffs(voltdm->vp->common->vpconfig_errorgain_mask),
|
||||
voltdm->vp->vpconfig);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* VP force update method of voltage scaling */
|
||||
int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,
|
||||
unsigned long target_volt)
|
||||
|
|
|
@ -149,5 +149,7 @@ void omap_vp_disable(struct voltagedomain *voltdm);
|
|||
unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm);
|
||||
int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,
|
||||
unsigned long target_volt);
|
||||
int omap_vp_update_errorgain(struct voltagedomain *voltdm,
|
||||
unsigned long target_volt);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user