Lines Matching +full:pmic +full:- +full:id

1 // SPDX-License-Identifier: GPL-2.0
9 #include "prm-regbits-34xx.h"
10 #include "prm-regbits-44xx.h"
15 struct omap_vp_instance *vp = voltdm->vp; in _vp_set_init_voltage()
19 vsel = voltdm->pmic->uv_to_vsel(volt); in _vp_set_init_voltage()
21 vpconfig = voltdm->read(vp->vpconfig); in _vp_set_init_voltage()
22 vpconfig &= ~(vp->common->vpconfig_initvoltage_mask | in _vp_set_init_voltage()
23 vp->common->vpconfig_forceupdate | in _vp_set_init_voltage()
24 vp->common->vpconfig_initvdd); in _vp_set_init_voltage()
25 vpconfig |= vsel << __ffs(vp->common->vpconfig_initvoltage_mask); in _vp_set_init_voltage()
26 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
29 voltdm->write((vpconfig | vp->common->vpconfig_initvdd), in _vp_set_init_voltage()
30 vp->vpconfig); in _vp_set_init_voltage()
33 voltdm->write(vpconfig, vp->vpconfig); in _vp_set_init_voltage()
41 struct omap_vp_instance *vp = voltdm->vp; in omap_vp_init()
45 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) { in omap_vp_init()
46 pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name); in omap_vp_init()
50 if (!voltdm->read || !voltdm->write) { in omap_vp_init()
52 __func__, voltdm->name); in omap_vp_init()
56 vp->enabled = false; in omap_vp_init()
59 sys_clk_rate = voltdm->sys_clk.rate / 1000; in omap_vp_init()
61 timeout = (sys_clk_rate * voltdm->pmic->vp_timeout_us) / 1000; in omap_vp_init()
62 vddmin = max(voltdm->vp_param->vddmin, voltdm->pmic->vddmin); in omap_vp_init()
63 vddmax = min(voltdm->vp_param->vddmax, voltdm->pmic->vddmax); in omap_vp_init()
64 vddmin = voltdm->pmic->uv_to_vsel(vddmin); in omap_vp_init()
65 vddmax = voltdm->pmic->uv_to_vsel(vddmax); in omap_vp_init()
67 waittime = DIV_ROUND_UP(voltdm->pmic->step_size * sys_clk_rate, in omap_vp_init()
68 1000 * voltdm->pmic->slew_rate); in omap_vp_init()
69 vstepmin = voltdm->pmic->vp_vstepmin; in omap_vp_init()
70 vstepmax = voltdm->pmic->vp_vstepmax; in omap_vp_init()
76 val = (voltdm->pmic->vp_erroroffset << in omap_vp_init()
77 __ffs(voltdm->vp->common->vpconfig_erroroffset_mask)) | in omap_vp_init()
78 vp->common->vpconfig_timeouten; in omap_vp_init()
79 voltdm->write(val, vp->vpconfig); in omap_vp_init()
82 val = (waittime << vp->common->vstepmin_smpswaittimemin_shift) | in omap_vp_init()
83 (vstepmin << vp->common->vstepmin_stepmin_shift); in omap_vp_init()
84 voltdm->write(val, vp->vstepmin); in omap_vp_init()
87 val = (vstepmax << vp->common->vstepmax_stepmax_shift) | in omap_vp_init()
88 (waittime << vp->common->vstepmax_smpswaittimemax_shift); in omap_vp_init()
89 voltdm->write(val, vp->vstepmax); in omap_vp_init()
92 val = (vddmax << vp->common->vlimitto_vddmax_shift) | in omap_vp_init()
93 (vddmin << vp->common->vlimitto_vddmin_shift) | in omap_vp_init()
94 (timeout << vp->common->vlimitto_timeout_shift); in omap_vp_init()
95 voltdm->write(val, vp->vlimitto); in omap_vp_init()
103 if (!voltdm->vp) in omap_vp_update_errorgain()
104 return -EINVAL; in omap_vp_update_errorgain()
109 return -EINVAL; in omap_vp_update_errorgain()
112 voltdm->rmw(voltdm->vp->common->vpconfig_errorgain_mask, in omap_vp_update_errorgain()
113 volt_data->vp_errgain << in omap_vp_update_errorgain()
114 __ffs(voltdm->vp->common->vpconfig_errorgain_mask), in omap_vp_update_errorgain()
115 voltdm->vp->vpconfig); in omap_vp_update_errorgain()
124 struct omap_vp_instance *vp = voltdm->vp; in omap_vp_forceupdate_scale()
138 vp->common->ops->clear_txdone(vp->id); in omap_vp_forceupdate_scale()
139 if (!vp->common->ops->check_txdone(vp->id)) in omap_vp_forceupdate_scale()
145 __func__, voltdm->name); in omap_vp_forceupdate_scale()
146 return -ETIMEDOUT; in omap_vp_forceupdate_scale()
152 voltdm->write(vpconfig | vp->common->vpconfig_forceupdate, in omap_vp_forceupdate_scale()
153 voltdm->vp->vpconfig); in omap_vp_forceupdate_scale()
160 omap_test_timeout(vp->common->ops->check_txdone(vp->id), in omap_vp_forceupdate_scale()
164 __func__, voltdm->name); in omap_vp_forceupdate_scale()
174 vp->common->ops->clear_txdone(vp->id); in omap_vp_forceupdate_scale()
175 if (!vp->common->ops->check_txdone(vp->id)) in omap_vp_forceupdate_scale()
182 __func__, voltdm->name); in omap_vp_forceupdate_scale()
185 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_forceupdate_scale()
191 * omap_vp_enable() - API to enable a particular VP
207 vp = voltdm->vp; in omap_vp_enable()
208 if (!voltdm->read || !voltdm->write) { in omap_vp_enable()
210 __func__, voltdm->name); in omap_vp_enable()
215 if (vp->enabled) in omap_vp_enable()
221 __func__, voltdm->name); in omap_vp_enable()
228 vpconfig |= vp->common->vpconfig_vpenable; in omap_vp_enable()
229 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_enable()
231 vp->enabled = true; in omap_vp_enable()
235 * omap_vp_disable() - API to disable a particular VP
252 vp = voltdm->vp; in omap_vp_disable()
253 if (!voltdm->read || !voltdm->write) { in omap_vp_disable()
255 __func__, voltdm->name); in omap_vp_disable()
260 if (!vp->enabled) { in omap_vp_disable()
262 __func__, voltdm->name); in omap_vp_disable()
267 vpconfig = voltdm->read(vp->vpconfig); in omap_vp_disable()
268 vpconfig &= ~vp->common->vpconfig_vpenable; in omap_vp_disable()
269 voltdm->write(vpconfig, vp->vpconfig); in omap_vp_disable()
274 omap_test_timeout((voltdm->read(vp->vstatus)), in omap_vp_disable()
278 pr_warn("%s: vdd_%s idle timedout\n", __func__, voltdm->name); in omap_vp_disable()
280 vp->enabled = false; in omap_vp_disable()