OMAP: VP: Explicitly mask VPVOLTAGE field
Subsystems (3)
PATCH 1/1 OMAP: VP: Explicitly mask VPVOLTAGE field
Reading the VPVOLTAGE field of PRM_VP_*_VOLTAGE registers currently relies on a u32 -> u8 conversion to mask off the FORCEUPDATEWAIT field in the upper bits. Make this explicit using the mask symbol already defined, added as a new field in struct omap_vp_common.
Signed-off-by Todd Poynor <[email protected]>
---
V2 based on Kevin's feedback (thanks!):
* Drop the shift field, use __ffs().
* Updated subject prefix.
arch/arm/mach-omap2/vp.c | 3 ++- arch/arm/mach-omap2/vp.h | 2 ++ arch/arm/mach-omap2/vp3xxx_data.c | 2 ++ arch/arm/mach-omap2/vp44xx_data.c | 1 + 4 files changed, 7 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/vp.c +2 -1
@@ -227,7 +227,8 @@ unsigned long omap_vp_get_curr_volt(struct voltagedomain *voltdm)return 0 ; } - curr_vsel = voltdm->read (vp->voltage); + curr_vsel = (voltdm->read (vp->voltage) & vp->common->vpvoltage_mask) + >>__ffs (vp->common->vpvoltage_mask);if (!voltdm->pmic || !voltdm->pmic->vsel_to_uv) { pr_warning("%s: PMIC function to convert vsel to voltage"
arch/arm/mach-omap2/vp.h +2 -0
@@ -63,6 +63,7 @@ struct omap_vp_ops {* @vlimitto_vddmin_shift: VDDMIN field shift in PRM_VP*_VLIMITTO reg * @vlimitto_vddmax_shift: VDDMAX field shift in PRM_VP*_VLIMITTO reg * @vlimitto_timeout_shift: TIMEOUT field shift in PRM_VP*_VLIMITTO reg +* @vpvoltage_mask: VPVOLTAGE field mask in PRM_VP*_VOLTAGE reg */ struct omap_vp_common {u32 vpconfig_erroroffset_mask;
@@ -79,6 +80,7 @@ struct omap_vp_common {u8 vlimitto_vddmin_shift;u8 vlimitto_vddmax_shift;u8 vlimitto_timeout_shift; +u8 vpvoltage_mask;const struct omap_vp_ops *ops; };
arch/arm/mach-omap2/vp3xxx_data.c +2 -0
@@ -51,6 +51,8 @@ static const struct omap_vp_common omap3_vp_common = { .vlimitto_vddmin_shift = OMAP3430_VDDMIN_SHIFT, .vlimitto_vddmax_shift = OMAP3430_VDDMAX_SHIFT, .vlimitto_timeout_shift = OMAP3430_TIMEOUT_SHIFT, + .vpvoltage_mask = OMAP3430_VPVOLTAGE_MASK, + .ops = &omap3_vp_ops, };
arch/arm/mach-omap2/vp44xx_data.c +1 -0
@@ -51,6 +51,7 @@ static const struct omap_vp_common omap4_vp_common = { .vlimitto_vddmin_shift = OMAP4430_VDDMIN_SHIFT, .vlimitto_vddmax_shift = OMAP4430_VDDMAX_SHIFT, .vlimitto_timeout_shift = OMAP4430_TIMEOUT_SHIFT, + .vpvoltage_mask = OMAP4430_VPVOLTAGE_MASK, .ops = &omap4_vp_ops, };
Signature · 1 line
1.7.3.1
Kevin Hilman
AppliedQuoted 6 lines · Todd Poynor
Reading the VPVOLTAGE field of PRM_VP_*_VOLTAGE registers currently relies on a u32 -> u8 conversion to mask off the FORCEUPDATEWAIT field in the upper bits. Make this explicit using the mask symbol already defined, added as a new field in struct
omap_vp_common.Signed-off-by Todd Poynor <[email protected]>
Thanks, applied.
Kevin