Lines Matching refs:voltdm
12 static u32 _vp_set_init_voltage(struct voltagedomain *voltdm, u32 volt) in _vp_set_init_voltage() argument
14 struct omap_vp_instance *vp = voltdm->vp; in _vp_set_init_voltage()
18 vsel = voltdm->pmic->uv_to_vsel(volt); in _vp_set_init_voltage()
20 vpconfig = voltdm->read(vp->vpconfig); in _vp_set_init_voltage()
25 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
28 voltdm->write((vpconfig | vp->common->vpconfig_initvdd), in _vp_set_init_voltage()
32 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
38 void __init omap_vp_init(struct voltagedomain *voltdm) in omap_vp_init() argument
40 struct omap_vp_instance *vp = voltdm->vp; in omap_vp_init()
44 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) { in omap_vp_init()
45 pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name); in omap_vp_init()
49 if (!voltdm->read || !voltdm->write) { in omap_vp_init()
51 __func__, voltdm->name); in omap_vp_init()
58 sys_clk_rate = voltdm->sys_clk.rate / 1000; in omap_vp_init()
60 timeout = (sys_clk_rate * voltdm->pmic->vp_timeout_us) / 1000; in omap_vp_init()
61 vddmin = max(voltdm->vp_param->vddmin, voltdm->pmic->vddmin); in omap_vp_init()
62 vddmax = min(voltdm->vp_param->vddmax, voltdm->pmic->vddmax); in omap_vp_init()
63 vddmin = voltdm->pmic->uv_to_vsel(vddmin); in omap_vp_init()
64 vddmax = voltdm->pmic->uv_to_vsel(vddmax); in omap_vp_init()
66 waittime = DIV_ROUND_UP(voltdm->pmic->step_size * sys_clk_rate, in omap_vp_init()
67 1000 * voltdm->pmic->slew_rate); in omap_vp_init()
68 vstepmin = voltdm->pmic->vp_vstepmin; in omap_vp_init()
69 vstepmax = voltdm->pmic->vp_vstepmax; in omap_vp_init()
75 val = (voltdm->pmic->vp_erroroffset << in omap_vp_init()
76 __ffs(voltdm->vp->common->vpconfig_erroroffset_mask)) | in omap_vp_init()
78 voltdm->write(val, vp->vpconfig); in omap_vp_init()
83 voltdm->write(val, vp->vstepmin); in omap_vp_init()
88 voltdm->write(val, vp->vstepmax); in omap_vp_init()
94 voltdm->write(val, vp->vlimitto); in omap_vp_init()
97 int omap_vp_update_errorgain(struct voltagedomain *voltdm, in omap_vp_update_errorgain() argument
102 if (!voltdm->vp) in omap_vp_update_errorgain()
106 volt_data = omap_voltage_get_voltdata(voltdm, target_volt); in omap_vp_update_errorgain()
111 voltdm->rmw(voltdm->vp->common->vpconfig_errorgain_mask, in omap_vp_update_errorgain()
113 __ffs(voltdm->vp->common->vpconfig_errorgain_mask), in omap_vp_update_errorgain()
114 voltdm->vp->vpconfig); in omap_vp_update_errorgain()
120 int omap_vp_forceupdate_scale(struct voltagedomain *voltdm, in omap_vp_forceupdate_scale() argument
123 struct omap_vp_instance *vp = voltdm->vp; in omap_vp_forceupdate_scale()
128 ret = omap_vc_pre_scale(voltdm, target_volt, &target_vsel, ¤t_vsel); in omap_vp_forceupdate_scale()
144 __func__, voltdm->name); in omap_vp_forceupdate_scale()
148 vpconfig = _vp_set_init_voltage(voltdm, target_volt); in omap_vp_forceupdate_scale()
151 voltdm->write(vpconfig | vp->common->vpconfig_forceupdate, in omap_vp_forceupdate_scale()
152 voltdm->vp->vpconfig); in omap_vp_forceupdate_scale()
163 __func__, voltdm->name); in omap_vp_forceupdate_scale()
165 omap_vc_post_scale(voltdm, target_volt, target_vsel, current_vsel); in omap_vp_forceupdate_scale()
181 __func__, voltdm->name); in omap_vp_forceupdate_scale()
184 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_forceupdate_scale()
196 void omap_vp_enable(struct voltagedomain *voltdm) in omap_vp_enable() argument
201 if (!voltdm || IS_ERR(voltdm)) { in omap_vp_enable()
206 vp = voltdm->vp; in omap_vp_enable()
207 if (!voltdm->read || !voltdm->write) { in omap_vp_enable()
209 __func__, voltdm->name); in omap_vp_enable()
217 volt = voltdm_get_voltage(voltdm); in omap_vp_enable()
220 __func__, voltdm->name); in omap_vp_enable()
224 vpconfig = _vp_set_init_voltage(voltdm, volt); in omap_vp_enable()
228 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_enable()
240 void omap_vp_disable(struct voltagedomain *voltdm) in omap_vp_disable() argument
246 if (!voltdm || IS_ERR(voltdm)) { in omap_vp_disable()
251 vp = voltdm->vp; in omap_vp_disable()
252 if (!voltdm->read || !voltdm->write) { in omap_vp_disable()
254 __func__, voltdm->name); in omap_vp_disable()
261 __func__, voltdm->name); in omap_vp_disable()
266 vpconfig = voltdm->read(vp->vpconfig); in omap_vp_disable()
268 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_disable()
273 omap_test_timeout((voltdm->read(vp->vstatus)), in omap_vp_disable()
277 pr_warn("%s: vdd_%s idle timedout\n", __func__, voltdm->name); in omap_vp_disable()