Having instance specific copy of desc is enough to support multiple
instance of pwm regulator.
The regulator_ops is never changed so no need to copy it per instance, make
pwm_regulator_voltage_table_ops and pwm_regulator_voltage_continuous_ops
const to ensure they won't be changed.
The pwm_regulator_desc is a template to be copied so also make it const.

Signed-off-by: Axel Lin <axel....@ingics.com>
---
 drivers/regulator/pwm-regulator.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/regulator/pwm-regulator.c 
b/drivers/regulator/pwm-regulator.c
index a2fd140eff81..3f53f9134b32 100644
--- a/drivers/regulator/pwm-regulator.c
+++ b/drivers/regulator/pwm-regulator.c
@@ -40,9 +40,6 @@ struct pwm_regulator_data {
        /* regulator descriptor */
        struct regulator_desc desc;
 
-       /* Regulator ops */
-       struct regulator_ops ops;
-
        int state;
 
        /* Enable GPIO */
@@ -231,7 +228,7 @@ static int pwm_regulator_set_voltage(struct regulator_dev 
*rdev,
        return 0;
 }
 
-static struct regulator_ops pwm_regulator_voltage_table_ops = {
+static const struct regulator_ops pwm_regulator_voltage_table_ops = {
        .set_voltage_sel = pwm_regulator_set_voltage_sel,
        .get_voltage_sel = pwm_regulator_get_voltage_sel,
        .list_voltage    = pwm_regulator_list_voltage,
@@ -241,7 +238,7 @@ static struct regulator_ops pwm_regulator_voltage_table_ops 
= {
        .is_enabled      = pwm_regulator_is_enabled,
 };
 
-static struct regulator_ops pwm_regulator_voltage_continuous_ops = {
+static const struct regulator_ops pwm_regulator_voltage_continuous_ops = {
        .get_voltage = pwm_regulator_get_voltage,
        .set_voltage = pwm_regulator_set_voltage,
        .enable          = pwm_regulator_enable,
@@ -249,7 +246,7 @@ static struct regulator_ops 
pwm_regulator_voltage_continuous_ops = {
        .is_enabled      = pwm_regulator_is_enabled,
 };
 
-static struct regulator_desc pwm_regulator_desc = {
+static const struct regulator_desc pwm_regulator_desc = {
        .name           = "pwm-regulator",
        .type           = REGULATOR_VOLTAGE,
        .owner          = THIS_MODULE,
@@ -287,9 +284,7 @@ static int pwm_regulator_init_table(struct platform_device 
*pdev,
 
        drvdata->state                  = -EINVAL;
        drvdata->duty_cycle_table       = duty_cycle_table;
-       memcpy(&drvdata->ops, &pwm_regulator_voltage_table_ops,
-              sizeof(drvdata->ops));
-       drvdata->desc.ops = &drvdata->ops;
+       drvdata->desc.ops = &pwm_regulator_voltage_table_ops;
        drvdata->desc.n_voltages        = length / sizeof(*duty_cycle_table);
 
        return 0;
@@ -301,9 +296,7 @@ static int pwm_regulator_init_continuous(struct 
platform_device *pdev,
        u32 dutycycle_range[2] = { 0, 100 };
        u32 dutycycle_unit = 100;
 
-       memcpy(&drvdata->ops, &pwm_regulator_voltage_continuous_ops,
-              sizeof(drvdata->ops));
-       drvdata->desc.ops = &drvdata->ops;
+       drvdata->desc.ops = &pwm_regulator_voltage_continuous_ops;
        drvdata->desc.continuous_voltage_range = true;
 
        of_property_read_u32_array(pdev->dev.of_node,
-- 
2.17.1

Reply via email to