regulator: bd718x7: Remove struct bd718xx_pmic
authorAxel Lin <axel.lin@ingics.com>
Thu, 4 Oct 2018 07:25:58 +0000 (15:25 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 19 Oct 2018 12:22:45 +0000 (13:22 +0100)
All the fields in struct bd718xx_pmic are not really necessary.
Remove struct bd718xx_pmic to simplify the code.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Reviewed-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/bd718x7-regulator.c
include/linux/mfd/rohm-bd718x7.h

index d2522d4e1505f2ab74e4d03bb49a73c8e1c0926b..3a47e0372e77c81248efc6bf04e7fb832d5b59ac 100644 (file)
 #include <linux/regulator/of_regulator.h>
 #include <linux/slab.h>
 
-struct bd718xx_pmic {
-       struct bd718xx_regulator_data *rdata;
-       struct bd718xx *mfd;
-       struct platform_device *pdev;
-       struct regulator_dev *rdev[BD718XX_REGULATOR_AMOUNT];
-};
-
 /*
  * BUCK1/2/3/4
  * BUCK1RAMPRATE[1:0] BUCK1 DVS ramp rate setting
@@ -33,12 +26,10 @@ struct bd718xx_pmic {
 static int bd718xx_buck1234_set_ramp_delay(struct regulator_dev *rdev,
                                           int ramp_delay)
 {
-       struct bd718xx_pmic *pmic = rdev_get_drvdata(rdev);
-       struct bd718xx *mfd = pmic->mfd;
        int id = rdev->desc->id;
        unsigned int ramp_value = BUCK_RAMPRATE_10P00MV;
 
-       dev_dbg(&pmic->pdev->dev, "Buck[%d] Set Ramp = %d\n", id + 1,
+       dev_dbg(&rdev->dev, "Buck[%d] Set Ramp = %d\n", id + 1,
                ramp_delay);
        switch (ramp_delay) {
        case 1 ... 1250:
@@ -55,12 +46,12 @@ static int bd718xx_buck1234_set_ramp_delay(struct regulator_dev *rdev,
                break;
        default:
                ramp_value = BUCK_RAMPRATE_10P00MV;
-               dev_err(&pmic->pdev->dev,
+               dev_err(&rdev->dev,
                        "%s: ramp_delay: %d not supported, setting 10000mV//us\n",
                        rdev->desc->name, ramp_delay);
        }
 
-       return regmap_update_bits(mfd->regmap, BD718XX_REG_BUCK1_CTRL + id,
+       return regmap_update_bits(rdev->regmap, BD718XX_REG_BUCK1_CTRL + id,
                                  BUCK_RAMPRATE_MASK, ramp_value << 6);
 }
 
@@ -1022,7 +1013,7 @@ struct bd718xx_pmic_inits {
 
 static int bd718xx_probe(struct platform_device *pdev)
 {
-       struct bd718xx_pmic *pmic;
+       struct bd718xx *mfd;
        struct regulator_config config = { 0 };
        struct bd718xx_pmic_inits pmic_regulators[] = {
                [BD718XX_TYPE_BD71837] = {
@@ -1037,54 +1028,46 @@ static int bd718xx_probe(struct platform_device *pdev)
 
        int i, j, err;
 
-       pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL);
-       if (!pmic)
-               return -ENOMEM;
-
-       pmic->pdev = pdev;
-       pmic->mfd = dev_get_drvdata(pdev->dev.parent);
-
-       if (!pmic->mfd) {
+       mfd = dev_get_drvdata(pdev->dev.parent);
+       if (!mfd) {
                dev_err(&pdev->dev, "No MFD driver data\n");
                err = -EINVAL;
                goto err;
        }
-       if (pmic->mfd->chip_type >= BD718XX_TYPE_AMOUNT ||
-           !pmic_regulators[pmic->mfd->chip_type].r_datas) {
+
+       if (mfd->chip_type >= BD718XX_TYPE_AMOUNT ||
+           !pmic_regulators[mfd->chip_type].r_datas) {
                dev_err(&pdev->dev, "Unsupported chip type\n");
                err = -EINVAL;
                goto err;
        }
 
-       platform_set_drvdata(pdev, pmic);
-
        /* Register LOCK release */
-       err = regmap_update_bits(pmic->mfd->regmap, BD718XX_REG_REGLOCK,
+       err = regmap_update_bits(mfd->regmap, BD718XX_REG_REGLOCK,
                                 (REGLOCK_PWRSEQ | REGLOCK_VREG), 0);
        if (err) {
-               dev_err(&pmic->pdev->dev, "Failed to unlock PMIC (%d)\n", err);
+               dev_err(&pdev->dev, "Failed to unlock PMIC (%d)\n", err);
                goto err;
        } else {
-               dev_dbg(&pmic->pdev->dev, "Unlocked lock register 0x%x\n",
+               dev_dbg(&pdev->dev, "Unlocked lock register 0x%x\n",
                        BD718XX_REG_REGLOCK);
        }
 
-       for (i = 0; i < pmic_regulators[pmic->mfd->chip_type].r_amount; i++) {
+       for (i = 0; i < pmic_regulators[mfd->chip_type].r_amount; i++) {
 
                const struct regulator_desc *desc;
                struct regulator_dev *rdev;
                const struct bd718xx_regulator_data *r;
 
-               r = &(*pmic_regulators[pmic->mfd->chip_type].r_datas)[i];
+               r = &(*pmic_regulators[mfd->chip_type].r_datas)[i];
                desc = &r->desc;
 
                config.dev = pdev->dev.parent;
-               config.driver_data = pmic;
-               config.regmap = pmic->mfd->regmap;
+               config.regmap = mfd->regmap;
 
                rdev = devm_regulator_register(&pdev->dev, desc, &config);
                if (IS_ERR(rdev)) {
-                       dev_err(pmic->mfd->dev,
+                       dev_err(&pdev->dev,
                                "failed to register %s regulator\n",
                                desc->name);
                        err = PTR_ERR(rdev);
@@ -1096,28 +1079,26 @@ static int bd718xx_probe(struct platform_device *pdev)
                 * can now switch the control from PMIC state machine to the
                 * register interface
                 */
-               err = regmap_update_bits(pmic->mfd->regmap, r->init.reg,
+               err = regmap_update_bits(mfd->regmap, r->init.reg,
                                         r->init.mask, r->init.val);
                if (err) {
-                       dev_err(&pmic->pdev->dev,
+                       dev_err(&pdev->dev,
                                "Failed to write BUCK/LDO SEL bit for (%s)\n",
                                desc->name);
                        goto err;
                }
                for (j = 0; j < r->additional_init_amnt; j++) {
-                       err = regmap_update_bits(pmic->mfd->regmap,
+                       err = regmap_update_bits(mfd->regmap,
                                                 r->additional_inits[j].reg,
                                                 r->additional_inits[j].mask,
                                                 r->additional_inits[j].val);
                        if (err) {
-                               dev_err(&pmic->pdev->dev,
+                               dev_err(&pdev->dev,
                                        "Buck (%s) initialization failed\n",
                                        desc->name);
                                goto err;
                        }
                }
-
-               pmic->rdev[i] = rdev;
        }
 
 err:
index 26acf9a92498e6fe03ddd37d77f9f828fcb333fa..fd194bfc836f49f79bae3a5c0403ed945a860f1c 100644 (file)
@@ -321,7 +321,6 @@ enum {
        BD718XX_PWRBTN_LONG_PRESS_15S
 };
 
-struct bd718xx_pmic;
 struct bd718xx_clk;
 
 struct bd718xx {
@@ -333,7 +332,6 @@ struct bd718xx {
        int chip_irq;
        struct regmap_irq_chip_data *irq_data;
 
-       struct bd718xx_pmic *pmic;
        struct bd718xx_clk *clk;
 };