Merge branch 'for-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
[firefly-linux-kernel-4.4.55.git] / drivers / regulator / mc13892-regulator.c
index 96c9f80d9550b28ceafdab692fe996588c6dd180..793b662a1967f7a6f64335a552dd013e3c8d1f34 100644 (file)
@@ -274,25 +274,25 @@ static struct mc13xxx_regulator mc13892_regulators[] = {
        MC13892_SW_DEFINE(SW4, SWITCHERS3, SWITCHERS3, mc13892_sw),
        MC13892_FIXED_DEFINE(SWBST, SWITCHERS5, mc13892_swbst),
        MC13892_FIXED_DEFINE(VIOHI, REGULATORMODE0, mc13892_viohi),
-       MC13892_DEFINE_REGU(VPLL, REGULATORMODE0, REGULATORSETTING0,    \
+       MC13892_DEFINE_REGU(VPLL, REGULATORMODE0, REGULATORSETTING0,
                mc13892_vpll),
-       MC13892_DEFINE_REGU(VDIG, REGULATORMODE0, REGULATORSETTING0,    \
+       MC13892_DEFINE_REGU(VDIG, REGULATORMODE0, REGULATORSETTING0,
                mc13892_vdig),
-       MC13892_DEFINE_REGU(VSD, REGULATORMODE1, REGULATORSETTING1,     \
+       MC13892_DEFINE_REGU(VSD, REGULATORMODE1, REGULATORSETTING1,
                mc13892_vsd),
-       MC13892_DEFINE_REGU(VUSB2, REGULATORMODE0, REGULATORSETTING0,   \
+       MC13892_DEFINE_REGU(VUSB2, REGULATORMODE0, REGULATORSETTING0,
                mc13892_vusb2),
-       MC13892_DEFINE_REGU(VVIDEO, REGULATORMODE1, REGULATORSETTING1,  \
+       MC13892_DEFINE_REGU(VVIDEO, REGULATORMODE1, REGULATORSETTING1,
                mc13892_vvideo),
-       MC13892_DEFINE_REGU(VAUDIO, REGULATORMODE1, REGULATORSETTING1,  \
+       MC13892_DEFINE_REGU(VAUDIO, REGULATORMODE1, REGULATORSETTING1,
                mc13892_vaudio),
-       MC13892_DEFINE_REGU(VCAM, REGULATORMODE1, REGULATORSETTING0,    \
+       MC13892_DEFINE_REGU(VCAM, REGULATORMODE1, REGULATORSETTING0,
                mc13892_vcam),
-       MC13892_DEFINE_REGU(VGEN1, REGULATORMODE0, REGULATORSETTING0,   \
+       MC13892_DEFINE_REGU(VGEN1, REGULATORMODE0, REGULATORSETTING0,
                mc13892_vgen1),
-       MC13892_DEFINE_REGU(VGEN2, REGULATORMODE0, REGULATORSETTING0,   \
+       MC13892_DEFINE_REGU(VGEN2, REGULATORMODE0, REGULATORSETTING0,
                mc13892_vgen2),
-       MC13892_DEFINE_REGU(VGEN3, REGULATORMODE1, REGULATORSETTING0,   \
+       MC13892_DEFINE_REGU(VGEN3, REGULATORMODE1, REGULATORSETTING0,
                mc13892_vgen3),
        MC13892_FIXED_DEFINE(VUSB, USB1, mc13892_vusb),
        MC13892_GPO_DEFINE(GPO1, POWERMISC, mc13892_gpo),
@@ -476,8 +476,8 @@ static int mc13892_sw_regulator_set_voltage_sel(struct regulator_dev *rdev,
        }
 
        mc13xxx_lock(priv->mc13xxx);
-       ret = mc13xxx_reg_rmw(priv->mc13xxx, mc13892_regulators[id].vsel_reg, mask,
-                             reg_value);
+       ret = mc13xxx_reg_rmw(priv->mc13xxx, mc13892_regulators[id].vsel_reg,
+                             mask, reg_value);
        mc13xxx_unlock(priv->mc13xxx);
 
        return ret;
@@ -526,6 +526,7 @@ static unsigned int mc13892_vcam_get_mode(struct regulator_dev *rdev)
        return REGULATOR_MODE_NORMAL;
 }
 
+static struct regulator_ops mc13892_vcam_ops;
 
 static int mc13892_regulator_probe(struct platform_device *pdev)
 {
@@ -582,10 +583,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev)
        }
        mc13xxx_unlock(mc13892);
 
-       mc13892_regulators[MC13892_VCAM].desc.ops->set_mode
-               = mc13892_vcam_set_mode;
-       mc13892_regulators[MC13892_VCAM].desc.ops->get_mode
-               = mc13892_vcam_get_mode;
+       /* update mc13892_vcam ops */
+       memcpy(&mc13892_vcam_ops, mc13892_regulators[MC13892_VCAM].desc.ops,
+                                               sizeof(struct regulator_ops));
+       mc13892_vcam_ops.set_mode = mc13892_vcam_set_mode,
+       mc13892_vcam_ops.get_mode = mc13892_vcam_get_mode,
+       mc13892_regulators[MC13892_VCAM].desc.ops = &mc13892_vcam_ops;
 
        mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators,
                                        ARRAY_SIZE(mc13892_regulators));