mfd: da9063: Replace model with type
authorMarek Vasut <marek.vasut@gmail.com>
Mon, 11 Jun 2018 11:58:45 +0000 (13:58 +0200)
committerLee Jones <lee.jones@linaro.org>
Wed, 4 Jul 2018 06:16:25 +0000 (07:16 +0100)
The model number stored in the struct da9063 is the same for all
variants of the da9063 since it is the chip ID, which is always
the same. Replace that with a separate identifier instead, which
allows us to discern the DA9063 variants by setting the type
based on either DT match or otherwise.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Acked-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/da9063-core.c
drivers/mfd/da9063-i2c.c
drivers/regulator/da9063-regulator.c
include/linux/mfd/da9063/core.h

index c54777cc2f12b478dff75edf404d8f6b12227306..ded59990f18c5ae1aef0ba4bd7c110f094a854d4 100644 (file)
@@ -215,7 +215,6 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
                return -ENODEV;
        }
 
-       da9063->model = model;
        da9063->variant_code = variant_code;
 
        ret = da9063_irq_init(da9063);
index d1fe88777e3fa2131acb11856319dc99c0b9a6bb..6fe9c3464b410aaffa0028ef771b9acc395b8502 100644 (file)
@@ -146,7 +146,7 @@ static const struct of_device_id da9063_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, da9063_dt_ids);
 static int da9063_i2c_probe(struct i2c_client *i2c,
-       const struct i2c_device_id *id)
+                           const struct i2c_device_id *id)
 {
        struct da9063 *da9063;
        int ret;
@@ -158,6 +158,7 @@ static int da9063_i2c_probe(struct i2c_client *i2c,
        i2c_set_clientdata(i2c, da9063);
        da9063->dev = &i2c->dev;
        da9063->chip_irq = i2c->irq;
+       da9063->type = id->driver_data;
 
        if (da9063->variant_code == PMIC_DA9063_AD) {
                da9063_regmap_config.rd_table = &da9063_ad_readable_table;
@@ -181,7 +182,7 @@ static int da9063_i2c_probe(struct i2c_client *i2c,
 }
 
 static const struct i2c_device_id da9063_i2c_id[] = {
-       { "da9063", PMIC_CHIP_ID_DA9063 },
+       { "da9063", PMIC_TYPE_DA9063 },
        {},
 };
 MODULE_DEVICE_TABLE(i2c, da9063_i2c_id);
index 7f4ac0413182b751a245724a6ab887fcfa79e690..27ba2a1d14a3e473a415f31955d2688f905563b4 100644 (file)
@@ -98,7 +98,7 @@ struct da9063_regulator_info {
 struct da9063_dev_model {
        const struct da9063_regulator_info      *regulator_info;
        unsigned                                n_regulators;
-       unsigned                                dev_model;
+       enum da9063_type                        type;
 };
 
 /* Single regulator settings */
@@ -585,7 +585,7 @@ static struct da9063_dev_model regulators_models[] = {
        {
                .regulator_info = da9063_regulator_info,
                .n_regulators = ARRAY_SIZE(da9063_regulator_info),
-               .dev_model = PMIC_CHIP_ID_DA9063,
+               .type = PMIC_TYPE_DA9063,
        },
        { }
 };
@@ -741,12 +741,12 @@ static int da9063_regulator_probe(struct platform_device *pdev)
 
        /* Find regulators set for particular device model */
        for (model = regulators_models; model->regulator_info; model++) {
-               if (model->dev_model == da9063->model)
+               if (model->type == da9063->type)
                        break;
        }
        if (!model->regulator_info) {
                dev_err(&pdev->dev, "Chip model not recognised (%u)\n",
-                       da9063->model);
+                       da9063->type);
                return -ENODEV;
        }
 
index e015b065db7e8232ed09d0f8f016471492a0e28f..9e36097adc42f34787b78b1d0423540bc12ba87a 100644 (file)
 
 #define PMIC_CHIP_ID_DA9063            0x61
 
+enum da9063_type {
+       PMIC_TYPE_DA9063 = 0,
+};
+
 enum da9063_variant_codes {
        PMIC_DA9063_AD = 0x3,
        PMIC_DA9063_BB = 0x5,
@@ -73,7 +77,7 @@ enum da9063_irqs {
 struct da9063 {
        /* Device */
        struct device   *dev;
-       unsigned short  model;
+       enum da9063_type type;
        unsigned char   variant_code;
        unsigned int    flags;