Message ID | 20221123175425.564042-4-sravanhome@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v6,1/7] mfd: mp2629: fix failed to get iio channel by device name | expand |
"Use DT API to pass through chip ID" On Wed, 23 Nov 2022, Saravanan Sekar wrote: > Introduce chip id machanism to distinguish chip Please be more imaginative than simply repeating the subject line. Also: "ID" > Signed-off-by: Saravanan Sekar <sravanhome@gmail.com> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> > --- > drivers/mfd/mp2629.c | 4 +++- > include/linux/mfd/mp2629.h | 5 +++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c > index f4c5aa06f38c..a3fc02ad5ec1 100644 > --- a/drivers/mfd/mp2629.c > +++ b/drivers/mfd/mp2629.c > @@ -13,6 +13,7 @@ > #include <linux/mfd/mp2629.h> > #include <linux/module.h> > #include <linux/platform_device.h> > +#include <linux/property.h> > #include <linux/regmap.h> > #include <linux/slab.h> > > @@ -43,6 +44,7 @@ static int mp2629_probe(struct i2c_client *client) > return -ENOMEM; > > ddata->dev = &client->dev; > + ddata->chip_id = (uintptr_t)device_get_match_data(&client->dev); > i2c_set_clientdata(client, ddata); > > ddata->regmap = devm_regmap_init_i2c(client, &mp2629_regmap_config); > @@ -60,7 +62,7 @@ static int mp2629_probe(struct i2c_client *client) > } > > static const struct of_device_id mp2629_of_match[] = { > - { .compatible = "mps,mp2629"}, > + { .compatible = "mps,mp2629", .data = (void *)CHIP_ID_MP2629 }, Is this value something you can ask the H/W for? > { } > }; > MODULE_DEVICE_TABLE(of, mp2629_of_match); > diff --git a/include/linux/mfd/mp2629.h b/include/linux/mfd/mp2629.h > index 89b706900b57..072c8181b48b 100644 > --- a/include/linux/mfd/mp2629.h > +++ b/include/linux/mfd/mp2629.h > @@ -9,9 +9,14 @@ > #include <linux/device.h> > #include <linux/regmap.h> > > +enum mp2xx_chip_id { > + CHIP_ID_MP2629, > +}; > + > struct mp2629_data { > struct device *dev; > struct regmap *regmap; > + enum mp2xx_chip_id chip_id; > }; > > enum mp2629_adc_chan { > -- > 2.34.1 >
diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c index f4c5aa06f38c..a3fc02ad5ec1 100644 --- a/drivers/mfd/mp2629.c +++ b/drivers/mfd/mp2629.c @@ -13,6 +13,7 @@ #include <linux/mfd/mp2629.h> #include <linux/module.h> #include <linux/platform_device.h> +#include <linux/property.h> #include <linux/regmap.h> #include <linux/slab.h> @@ -43,6 +44,7 @@ static int mp2629_probe(struct i2c_client *client) return -ENOMEM; ddata->dev = &client->dev; + ddata->chip_id = (uintptr_t)device_get_match_data(&client->dev); i2c_set_clientdata(client, ddata); ddata->regmap = devm_regmap_init_i2c(client, &mp2629_regmap_config); @@ -60,7 +62,7 @@ static int mp2629_probe(struct i2c_client *client) } static const struct of_device_id mp2629_of_match[] = { - { .compatible = "mps,mp2629"}, + { .compatible = "mps,mp2629", .data = (void *)CHIP_ID_MP2629 }, { } }; MODULE_DEVICE_TABLE(of, mp2629_of_match); diff --git a/include/linux/mfd/mp2629.h b/include/linux/mfd/mp2629.h index 89b706900b57..072c8181b48b 100644 --- a/include/linux/mfd/mp2629.h +++ b/include/linux/mfd/mp2629.h @@ -9,9 +9,14 @@ #include <linux/device.h> #include <linux/regmap.h> +enum mp2xx_chip_id { + CHIP_ID_MP2629, +}; + struct mp2629_data { struct device *dev; struct regmap *regmap; + enum mp2xx_chip_id chip_id; }; enum mp2629_adc_chan {