OMAP3+: VP: struct omap_vp_common: replace shift with __ffs(mask)
authorKevin Hilman <khilman@ti.com>
Mon, 4 Apr 2011 23:02:28 +0000 (16:02 -0700)
committerKevin Hilman <khilman@ti.com>
Thu, 15 Sep 2011 19:09:07 +0000 (12:09 -0700)
In struct omap_vp_common, the shift value can be derived from the mask
value by using __ffs(), so remove the shift value for the various
VPCONFIG bitfields, and use __ffs() in the code for the shift value.

While here, rename field names in kerneldoc comment to match actual
field names in structure.  Also, cleanup indendentaion for other VP
register accesses in omap_vp_init().

No functional changes.

Signed-off-by: Kevin Hilman <khilman@ti.com>
arch/arm/mach-omap2/vc.c
arch/arm/mach-omap2/voltage.c
arch/arm/mach-omap2/vp.c
arch/arm/mach-omap2/vp.h
arch/arm/mach-omap2/vp3xxx_data.c
arch/arm/mach-omap2/vp44xx_data.c

index e872a0369afb8ee4e4a8378cd4945f3ba3034e48..7b87ea16ce4344c3561729920c001f188e986a62 100644 (file)
@@ -149,7 +149,7 @@ int omap_vc_pre_scale(struct voltagedomain *voltdm,
                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 <<
-                       voltdm->vp->common->vpconfig_errorgain_shift;
+                       __ffs(voltdm->vp->common->vpconfig_errorgain_mask);
                voltdm->write(vp_errgain_val, voltdm->vp->vpconfig);
        }
 
index eaa5f93021aeae6a0affa82f077bdb59bdacf3d9..5b16fd1fe373d86a5adcd5ad22718d351e30fefe 100644 (file)
@@ -82,7 +82,7 @@ static int __init _config_common_vdd_data(struct voltagedomain *voltdm)
 
        vdd->vp_rt_data.vpconfig_erroroffset =
                (voltdm->pmic->vp_erroroffset <<
-                voltdm->vp->common->vpconfig_erroroffset_shift);
+                __ffs(voltdm->vp->common->vpconfig_erroroffset_mask));
 
        timeout_val = (sys_clk_speed * voltdm->pmic->vp_timeout_us) / 1000;
        vdd->vp_rt_data.vlimitto_timeout = timeout_val;
index c9a315f9d3d8e99a130ce3fe74670d92fa3c9d77..297d094263aa5f00a9057e7200c62fc97ac6610e 100644 (file)
@@ -34,8 +34,7 @@ static void vp_latch_vsel(struct voltagedomain *voltdm)
        vpconfig = voltdm->read(vp->vpconfig);
        vpconfig &= ~(vp->common->vpconfig_initvoltage_mask |
                        vp->common->vpconfig_initvdd);
-       vpconfig |= vsel << vp->common->vpconfig_initvoltage_shift;
-
+       vpconfig |= vsel << __ffs(vp->common->vpconfig_initvoltage_mask);
        voltdm->write(vpconfig, vp->vpconfig);
 
        /* Trigger initVDD value copy to voltage processor */
@@ -61,28 +60,28 @@ void __init omap_vp_init(struct voltagedomain *voltdm)
 
        vp_val = vdd->vp_rt_data.vpconfig_erroroffset |
                (vdd->vp_rt_data.vpconfig_errorgain <<
-               vp->common->vpconfig_errorgain_shift) |
+                __ffs(vp->common->vpconfig_errorgain_mask)) |
                vp->common->vpconfig_timeouten;
        voltdm->write(vp_val, vp->vpconfig);
 
        vp_val = ((vdd->vp_rt_data.vstepmin_smpswaittimemin <<
-               vp->common->vstepmin_smpswaittimemin_shift) |
-               (vdd->vp_rt_data.vstepmin_stepmin <<
-               vp->common->vstepmin_stepmin_shift));
+                  vp->common->vstepmin_smpswaittimemin_shift) |
+                 (vdd->vp_rt_data.vstepmin_stepmin <<
+                  vp->common->vstepmin_stepmin_shift));
        voltdm->write(vp_val, vp->vstepmin);
 
        vp_val = ((vdd->vp_rt_data.vstepmax_smpswaittimemax <<
-               vp->common->vstepmax_smpswaittimemax_shift) |
-               (vdd->vp_rt_data.vstepmax_stepmax <<
-               vp->common->vstepmax_stepmax_shift));
+                  vp->common->vstepmax_smpswaittimemax_shift) |
+                 (vdd->vp_rt_data.vstepmax_stepmax <<
+                  vp->common->vstepmax_stepmax_shift));
        voltdm->write(vp_val, vp->vstepmax);
 
        vp_val = ((vdd->vp_rt_data.vlimitto_vddmax <<
-               vp->common->vlimitto_vddmax_shift) |
-               (vdd->vp_rt_data.vlimitto_vddmin <<
-               vp->common->vlimitto_vddmin_shift) |
-               (vdd->vp_rt_data.vlimitto_timeout <<
-               vp->common->vlimitto_timeout_shift));
+                  vp->common->vlimitto_vddmax_shift) |
+                 (vdd->vp_rt_data.vlimitto_vddmin <<
+                  vp->common->vlimitto_vddmin_shift) |
+                 (vdd->vp_rt_data.vlimitto_timeout <<
+                  vp->common->vlimitto_timeout_shift));
        voltdm->write(vp_val, vp->vlimitto);
 }
 
@@ -121,7 +120,7 @@ int omap_vp_forceupdate_scale(struct voltagedomain *voltdm,
                        vp->common->vpconfig_forceupdate |
                        vp->common->vpconfig_initvoltage_mask);
        vpconfig |= ((target_vsel <<
-                       vp->common->vpconfig_initvoltage_shift));
+                     __ffs(vp->common->vpconfig_initvoltage_mask)));
        voltdm->write(vpconfig, vp->vpconfig);
 
        /* Trigger initVDD value copy to voltage processor */
index b50ca91fef246a6739c9fd032d0354f277d40f7d..1cfde5a55f9b41e34686fcaf3e6dc8caebb14d95 100644 (file)
@@ -46,37 +46,32 @@ struct omap_vp_ops {
 
 /**
  * struct omap_vp_common - register data common to all VDDs
+ * @vpconfig_erroroffset_mask: ERROROFFSET bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_errorgain_mask: ERRORGAIN bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_initvoltage_mask: INITVOLTAGE bitmask in the PRM_VP*_CONFIG reg
- * @vpconfig_timeouten_mask: TIMEOUT bitmask in the PRM_VP*_CONFIG reg
+ * @vpconfig_timeouten: TIMEOUT bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_initvdd: INITVDD bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_forceupdate: FORCEUPDATE bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_vpenable: VPENABLE bitmask in the PRM_VP*_CONFIG reg
  * @vpconfig_erroroffset_shift: ERROROFFSET field shift in PRM_VP*_CONFIG reg
  * @vpconfig_errorgain_shift: ERRORGAIN field shift in PRM_VP*_CONFIG reg
  * @vpconfig_initvoltage_shift: INITVOLTAGE field shift in PRM_VP*_CONFIG reg
- * @vpconfig_stepmin_shift: VSTEPMIN field shift in the PRM_VP*_VSTEPMIN reg
- * @vpconfig_smpswaittimemin_shift: SMPSWAITTIMEMIN field shift in PRM_VP*_VSTEPMIN reg
- * @vpconfig_stepmax_shift: VSTEPMAX field shift in the PRM_VP*_VSTEPMAX reg
- * @vpconfig_smpswaittimemax_shift: SMPSWAITTIMEMAX field shift in PRM_VP*_VSTEPMAX reg
- * @vpconfig_vlimitto_vddmin_shift: VDDMIN field shift in PRM_VP*_VLIMITTO reg
- * @vpconfig_vlimitto_vddmax_shift: VDDMAX field shift in PRM_VP*_VLIMITTO reg
- * @vpconfig_vlimitto_timeout_shift: TIMEOUT field shift in PRM_VP*_VLIMITTO reg
- *
- * XXX It it not necessary to have both a mask and a shift for the same
- *     bitfield - remove one
- * XXX Many of these fields are wrongly named -- e.g., vpconfig_smps* -- fix!
+ * @vstepmin_stepmin_shift: VSTEPMIN field shift in the PRM_VP*_VSTEPMIN reg
+ * @vstepmin_smpswaittimemin_shift: SMPSWAITTIMEMIN field shift in PRM_VP*_VSTEPMIN reg
+ * @vstepmax_stepmax_shift: VSTEPMAX field shift in the PRM_VP*_VSTEPMAX reg
+ * @vstepmax_smpswaittimemax_shift: SMPSWAITTIMEMAX field shift in PRM_VP*_VSTEPMAX reg
+ * @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
  */
 struct omap_vp_common {
+       u32 vpconfig_erroroffset_mask;
        u32 vpconfig_errorgain_mask;
        u32 vpconfig_initvoltage_mask;
-       u32 vpconfig_timeouten;
-       u32 vpconfig_initvdd;
-       u32 vpconfig_forceupdate;
-       u32 vpconfig_vpenable;
-       u8 vpconfig_erroroffset_shift;
-       u8 vpconfig_errorgain_shift;
-       u8 vpconfig_initvoltage_shift;
+       u8 vpconfig_timeouten;
+       u8 vpconfig_initvdd;
+       u8 vpconfig_forceupdate;
+       u8 vpconfig_vpenable;
        u8 vstepmin_stepmin_shift;
        u8 vstepmin_smpswaittimemin_shift;
        u8 vstepmax_stepmax_shift;
@@ -128,7 +123,6 @@ struct omap_vp_instance {
  * XXX Is this structure really needed?  Why not just program the
  * device directly?  They are in PRM space, therefore in the WKUP
  * powerdomain, so register contents should not be lost in off-mode.
- * XXX Some of these fields are incorrectly named, e.g., vstep*
  */
 struct omap_vp_runtime_data {
        u32 vpconfig_erroroffset;
index 79c3df94f5007487994de62cbdada4976e4cd836..d429c447eef0682754a44476970efffe29c1dd8d 100644 (file)
@@ -37,10 +37,8 @@ static const struct omap_vp_ops omap3_vp_ops = {
  * XXX This stuff presumably belongs in the vp3xxx.c or vp.c file.
  */
 static const struct omap_vp_common omap3_vp_common = {
-       .vpconfig_erroroffset_shift = OMAP3430_ERROROFFSET_SHIFT,
+       .vpconfig_erroroffset_mask = OMAP3430_ERROROFFSET_MASK,
        .vpconfig_errorgain_mask = OMAP3430_ERRORGAIN_MASK,
-       .vpconfig_errorgain_shift = OMAP3430_ERRORGAIN_SHIFT,
-       .vpconfig_initvoltage_shift = OMAP3430_INITVOLTAGE_SHIFT,
        .vpconfig_initvoltage_mask = OMAP3430_INITVOLTAGE_MASK,
        .vpconfig_timeouten = OMAP3430_TIMEOUTEN_MASK,
        .vpconfig_initvdd = OMAP3430_INITVDD_MASK,
index 8f75cd9e7e660ab28998ebcf3ae22e297eeda421..0daf2a47dc28321678bba0de936bf97a791b8ea8 100644 (file)
@@ -37,10 +37,8 @@ static const struct omap_vp_ops omap4_vp_ops = {
  * XXX This stuff presumably belongs in the vp44xx.c or vp.c file.
  */
 static const struct omap_vp_common omap4_vp_common = {
-       .vpconfig_erroroffset_shift = OMAP4430_ERROROFFSET_SHIFT,
+       .vpconfig_erroroffset_mask = OMAP4430_ERROROFFSET_MASK,
        .vpconfig_errorgain_mask = OMAP4430_ERRORGAIN_MASK,
-       .vpconfig_errorgain_shift = OMAP4430_ERRORGAIN_SHIFT,
-       .vpconfig_initvoltage_shift = OMAP4430_INITVOLTAGE_SHIFT,
        .vpconfig_initvoltage_mask = OMAP4430_INITVOLTAGE_MASK,
        .vpconfig_timeouten = OMAP4430_TIMEOUTEN_MASK,
        .vpconfig_initvdd = OMAP4430_INITVDD_MASK,