regulator: core: add const to regulator_ops and fix build error in mc13892
authorGuodong Xu <guodong.xu@linaro.org>
Tue, 19 Aug 2014 10:07:41 +0000 (18:07 +0800)
committerMark Brown <broonie@linaro.org>
Tue, 19 Aug 2014 15:36:07 +0000 (10:36 -0500)
Commit 272e2315fac3 ("regulator: core: add const qualifier to ops in
struct regulator_desc") introduced const qualifier to ops in regulator_desc.

This patch adds 'const' to regulator_ops vars in newly added core APIs
for v3.17-rc1:
 - regulator_get_hardware_vsel_register()
 - regulator_list_hardware_vsel()

This patch also fix a build error in mc13892-regulator.c due to const
regulator_desc.ops. Modification of regulator_desc.ops' member fields is not
allowed.

Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/regulator/core.c
drivers/regulator/mc13892-regulator.c

index 1e976b6320a27978ba7a72fbfe1be060f92109ae..7bce7158d7e6267c166c0b7b02ef787db4cd7bbc 100644 (file)
@@ -2307,8 +2307,8 @@ int regulator_get_hardware_vsel_register(struct regulator *regulator,
                                         unsigned *vsel_reg,
                                         unsigned *vsel_mask)
 {
-       struct regulator_dev    *rdev = regulator->rdev;
-       struct regulator_ops    *ops = rdev->desc->ops;
+       struct regulator_dev *rdev = regulator->rdev;
+       const struct regulator_ops *ops = rdev->desc->ops;
 
        if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
                return -EOPNOTSUPP;
@@ -2334,8 +2334,8 @@ EXPORT_SYMBOL_GPL(regulator_get_hardware_vsel_register);
 int regulator_list_hardware_vsel(struct regulator *regulator,
                                 unsigned selector)
 {
-       struct regulator_dev    *rdev = regulator->rdev;
-       struct regulator_ops    *ops = rdev->desc->ops;
+       struct regulator_dev *rdev = regulator->rdev;
+       const struct regulator_ops *ops = rdev->desc->ops;
 
        if (selector >= rdev->desc->n_voltages)
                return -EINVAL;
index f374fa57220f6d7699c739ea41569eed4538949d..793b662a1967f7a6f64335a552dd013e3c8d1f34 100644 (file)
@@ -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));
This page took 0.027534 seconds and 5 git commands to generate.