Lines Matching +full:write +full:- +full:to +full:- +full:write

8 #include "prm-regbits-34xx.h"
9 #include "prm-regbits-44xx.h"
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()
21 vpconfig &= ~(vp->common->vpconfig_initvoltage_mask | in _vp_set_init_voltage()
22 vp->common->vpconfig_forceupdate | in _vp_set_init_voltage()
23 vp->common->vpconfig_initvdd); in _vp_set_init_voltage()
24 vpconfig |= vsel << __ffs(vp->common->vpconfig_initvoltage_mask); in _vp_set_init_voltage()
25 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
27 /* Trigger initVDD value copy to voltage processor */ in _vp_set_init_voltage()
28 voltdm->write((vpconfig | vp->common->vpconfig_initvdd), in _vp_set_init_voltage()
29 vp->vpconfig); in _vp_set_init_voltage()
32 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
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()
50 pr_err("%s: No read/write API for accessing vdd_%s regs\n", in omap_vp_init()
51 __func__, voltdm->name); in omap_vp_init()
55 vp->enabled = false; in omap_vp_init()
57 /* Divide to avoid overflow */ 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 = voltdm->pmic->vp_vddmin; in omap_vp_init()
62 vddmax = voltdm->pmic->vp_vddmax; in omap_vp_init()
64 waittime = ((voltdm->pmic->step_size / voltdm->pmic->slew_rate) * in omap_vp_init()
66 vstepmin = voltdm->pmic->vp_vstepmin; in omap_vp_init()
67 vstepmax = voltdm->pmic->vp_vstepmax; in omap_vp_init()
73 val = (voltdm->pmic->vp_erroroffset << in omap_vp_init()
74 __ffs(voltdm->vp->common->vpconfig_erroroffset_mask)) | in omap_vp_init()
75 vp->common->vpconfig_timeouten; in omap_vp_init()
76 voltdm->write(val, vp->vpconfig); in omap_vp_init()
79 val = (waittime << vp->common->vstepmin_smpswaittimemin_shift) | in omap_vp_init()
80 (vstepmin << vp->common->vstepmin_stepmin_shift); in omap_vp_init()
81 voltdm->write(val, vp->vstepmin); in omap_vp_init()
84 val = (vstepmax << vp->common->vstepmax_stepmax_shift) | in omap_vp_init()
85 (waittime << vp->common->vstepmax_smpswaittimemax_shift); in omap_vp_init()
86 voltdm->write(val, vp->vstepmax); in omap_vp_init()
89 val = (vddmax << vp->common->vlimitto_vddmax_shift) | in omap_vp_init()
90 (vddmin << vp->common->vlimitto_vddmin_shift) | in omap_vp_init()
91 (timeout << vp->common->vlimitto_timeout_shift); in omap_vp_init()
92 voltdm->write(val, vp->vlimitto); in omap_vp_init()
100 if (!voltdm->vp) in omap_vp_update_errorgain()
101 return -EINVAL; in omap_vp_update_errorgain()
103 /* Get volt_data corresponding to target_volt */ in omap_vp_update_errorgain()
106 return -EINVAL; in omap_vp_update_errorgain()
109 voltdm->rmw(voltdm->vp->common->vpconfig_errorgain_mask, in omap_vp_update_errorgain()
110 volt_data->vp_errgain << in omap_vp_update_errorgain()
111 __ffs(voltdm->vp->common->vpconfig_errorgain_mask), in omap_vp_update_errorgain()
112 voltdm->vp->vpconfig); in omap_vp_update_errorgain()
121 struct omap_vp_instance *vp = voltdm->vp; in omap_vp_forceupdate_scale()
135 vp->common->ops->clear_txdone(vp->id); in omap_vp_forceupdate_scale()
136 if (!vp->common->ops->check_txdone(vp->id)) in omap_vp_forceupdate_scale()
142 "Voltage change aborted", __func__, voltdm->name); in omap_vp_forceupdate_scale()
143 return -ETIMEDOUT; in omap_vp_forceupdate_scale()
149 voltdm->write(vpconfig | vp->common->vpconfig_forceupdate, in omap_vp_forceupdate_scale()
150 voltdm->vp->vpconfig); in omap_vp_forceupdate_scale()
157 omap_test_timeout(vp->common->ops->check_txdone(vp->id), in omap_vp_forceupdate_scale()
162 __func__, voltdm->name); in omap_vp_forceupdate_scale()
172 vp->common->ops->clear_txdone(vp->id); in omap_vp_forceupdate_scale()
173 if (!vp->common->ops->check_txdone(vp->id)) in omap_vp_forceupdate_scale()
180 "to clear the TRANXDONE status\n", 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()
190 * omap_vp_enable() - API to enable a particular VP
191 * @voltdm: pointer to the VDD whose VP is to be enabled.
206 vp = voltdm->vp; in omap_vp_enable()
207 if (!voltdm->read || !voltdm->write) { in omap_vp_enable()
208 pr_err("%s: No read/write API for accessing vdd_%s regs\n", in omap_vp_enable()
209 __func__, voltdm->name); in omap_vp_enable()
214 if (vp->enabled) in omap_vp_enable()
219 pr_warning("%s: unable to find current voltage for %s\n", in omap_vp_enable()
220 __func__, voltdm->name); in omap_vp_enable()
227 vpconfig |= vp->common->vpconfig_vpenable; in omap_vp_enable()
228 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_enable()
230 vp->enabled = true; in omap_vp_enable()
234 * omap_vp_disable() - API to disable a particular VP
235 * @voltdm: pointer to the VDD whose VP is to be disabled.
251 vp = voltdm->vp; in omap_vp_disable()
252 if (!voltdm->read || !voltdm->write) { in omap_vp_disable()
253 pr_err("%s: No read/write API for accessing vdd_%s regs\n", in omap_vp_disable()
254 __func__, voltdm->name); in omap_vp_disable()
259 if (!vp->enabled) { in omap_vp_disable()
260 pr_warning("%s: Trying to disable VP for vdd_%s when" in omap_vp_disable()
261 "it is already disabled\n", __func__, voltdm->name); in omap_vp_disable()
266 vpconfig = voltdm->read(vp->vpconfig); in omap_vp_disable()
267 vpconfig &= ~vp->common->vpconfig_vpenable; 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()
278 __func__, voltdm->name); in omap_vp_disable()
280 vp->enabled = false; in omap_vp_disable()