Message ID | 20221029093000.45451-6-sravanhome@gmail.com |
---|---|
State | New |
Headers | show |
Series | Add support for mp2733 battery charger | expand |
On Sat, 29 Oct 2022 11:29:57 +0200 Saravanan Sekar <sravanhome@gmail.com> wrote: > mp2733 is updated version of mp2629 battery charge management > device for single-cell Li-ion or Li-polymer battery. Additionally > supports USB fast-charge and higher range of input voltage. > > Signed-off-by: Saravanan Sekar <sravanhome@gmail.com> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> > Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com> There is a small ordering issue wrt to the next patch. Ideal way to solve that is to introduce the new infrastructure for the chip ID, but not the new ID itself until after the next patch ensures we don't apply the wrong mask. Jonathan > --- > drivers/mfd/mp2629.c | 5 ++++- > include/linux/mfd/mp2629.h | 6 ++++++ > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c > index f4c5aa06f38c..57db0f5009b9 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,8 @@ 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 }, > + { .compatible = "mps,mp2733", .data = (void *)CHIP_ID_MP2733 }, > { } > }; > MODULE_DEVICE_TABLE(of, mp2629_of_match); > diff --git a/include/linux/mfd/mp2629.h b/include/linux/mfd/mp2629.h > index 89b706900b57..ee0e65720c75 100644 > --- a/include/linux/mfd/mp2629.h > +++ b/include/linux/mfd/mp2629.h > @@ -9,9 +9,15 @@ > #include <linux/device.h> > #include <linux/regmap.h> > > +enum mp2xx_chip_id { > + CHIP_ID_MP2629, > + CHIP_ID_MP2733, > +}; > + > struct mp2629_data { > struct device *dev; > struct regmap *regmap; > + enum mp2xx_chip_id chip_id; > }; > > enum mp2629_adc_chan {
diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c index f4c5aa06f38c..57db0f5009b9 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,8 @@ 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 }, + { .compatible = "mps,mp2733", .data = (void *)CHIP_ID_MP2733 }, { } }; MODULE_DEVICE_TABLE(of, mp2629_of_match); diff --git a/include/linux/mfd/mp2629.h b/include/linux/mfd/mp2629.h index 89b706900b57..ee0e65720c75 100644 --- a/include/linux/mfd/mp2629.h +++ b/include/linux/mfd/mp2629.h @@ -9,9 +9,15 @@ #include <linux/device.h> #include <linux/regmap.h> +enum mp2xx_chip_id { + CHIP_ID_MP2629, + CHIP_ID_MP2733, +}; + struct mp2629_data { struct device *dev; struct regmap *regmap; + enum mp2xx_chip_id chip_id; }; enum mp2629_adc_chan {