mirror of https://gitee.com/openkylin/linux.git
mfd: da9063: Replace model with type
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>
This commit is contained in:
parent
df7878f9dc
commit
492510dd7d
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,10 @@
|
|||
|
||||
#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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue