All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/7] Add support for mp2733 battery charger
@ 2022-11-23 17:54 Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name Saravanan Sekar
                   ` (7 more replies)
  0 siblings, 8 replies; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar

changes in v6:
  - splitted chip id to v6-0003 and support of mp2733 to v6-0004 patch
  - fixed commit message English grammar

changes in v5:
  - fixed commit message on v5-0002 and v5-0004

changes in v4:
  - fixed attributes groups review comments in v3
  - added new bug fix patches v4-0007 and v4-0008 

changes in v3:
  - fixed dt_binding_check error
  - fixed spelling usb->USB

changes in v2:
  - fixed spelling
  - revert back probe to probe_new in mfd driver

add support for mp2733 Battery charger control driver for Monolithic
Power System's MP2733 chipset 

Saravanan Sekar (7):
  mfd: mp2629: fix failed to get iio channel by device name
  power: supply: fix wrong interpretation of register value
  mfd: mp2629: introduce chip id machanism to distinguish chip
  mfd: mp2629: Add support for mps mp2733 battery charger
  iio: adc: mp2629: restrict input voltage mask for mp2629
  power: supply: Add support for mp2733 battery charger
  power: supply: mp2629: Add USB fast charge settings

 .../ABI/testing/sysfs-class-power-mp2629      |  16 ++
 drivers/iio/adc/mp2629_adc.c                  |   5 +-
 drivers/mfd/mp2629.c                          |   7 +-
 drivers/power/supply/mp2629_charger.c         | 229 +++++++++++++++---
 include/linux/mfd/mp2629.h                    |   6 +
 5 files changed, 226 insertions(+), 37 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2023-01-19 15:00   ` Lee Jones
  2022-11-23 17:54 ` [PATCH v6 2/7] power: supply: fix wrong interpretation of register value Saravanan Sekar
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar

The mfd cell devices name populated on sysfs entry is dynamically derived
from an auto instance which introduced a regression. As a result
mpc2629_charger driver failed to get adc channel because of iio consumer
name mismatch with the sysfs.

/sys/class/i2c-adapter/i2c-1/mp2629_adc.0.auto/
/sys/class/i2c-adapter/i2c-1/mp2629_charger.1.auto/

Fixes: 466a62d7642f ("mfd: core: Make a best effort attempt to match devices with the correct of_nodes")
Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
---
 drivers/mfd/mp2629.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c
index 16840ec5fd1c..f4c5aa06f38c 100644
--- a/drivers/mfd/mp2629.c
+++ b/drivers/mfd/mp2629.c
@@ -51,7 +51,7 @@ static int mp2629_probe(struct i2c_client *client)
 		return PTR_ERR(ddata->regmap);
 	}
 
-	ret = devm_mfd_add_devices(ddata->dev, PLATFORM_DEVID_AUTO, mp2629_cell,
+	ret = devm_mfd_add_devices(ddata->dev, PLATFORM_DEVID_NONE, mp2629_cell,
 				   ARRAY_SIZE(mp2629_cell), NULL, 0, NULL);
 	if (ret)
 		dev_err(ddata->dev, "Failed to register sub-devices %d\n", ret);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 2/7] power: supply: fix wrong interpretation of register value
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2022-11-24 21:45   ` Sebastian Reichel
  2022-11-23 17:54 ` [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip Saravanan Sekar
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar

Fix the switch cases to match the register value.

Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
---
 drivers/power/supply/mp2629_charger.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/power/supply/mp2629_charger.c b/drivers/power/supply/mp2629_charger.c
index bf9c27b463a8..46d620bd23b9 100644
--- a/drivers/power/supply/mp2629_charger.c
+++ b/drivers/power/supply/mp2629_charger.c
@@ -284,10 +284,10 @@ static int mp2629_charger_battery_get_prop(struct power_supply *psy,
 			val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
 			break;
 		case 0x01:
-		case 0x10:
+		case 0x02:
 			val->intval = POWER_SUPPLY_STATUS_CHARGING;
 			break;
-		case 0x11:
+		case 0x03:
 			val->intval = POWER_SUPPLY_STATUS_FULL;
 		}
 		break;
@@ -305,7 +305,7 @@ static int mp2629_charger_battery_get_prop(struct power_supply *psy,
 		case 0x01:
 			val->intval = POWER_SUPPLY_CHARGE_TYPE_TRICKLE;
 			break;
-		case 0x10:
+		case 0x02:
 			val->intval = POWER_SUPPLY_CHARGE_TYPE_STANDARD;
 			break;
 		default:
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 2/7] power: supply: fix wrong interpretation of register value Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2023-01-19 15:06   ` Lee Jones
  2022-11-23 17:54 ` [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar

Introduce chip id machanism to distinguish chip

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 },
 	{ }
 };
 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


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
                   ` (2 preceding siblings ...)
  2022-11-23 17:54 ` [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2023-01-19 15:08   ` Lee Jones
  2022-11-23 17:54 ` [PATCH v6 5/7] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar

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>
---
 drivers/mfd/mp2629.c       | 1 +
 include/linux/mfd/mp2629.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c
index a3fc02ad5ec1..57db0f5009b9 100644
--- a/drivers/mfd/mp2629.c
+++ b/drivers/mfd/mp2629.c
@@ -63,6 +63,7 @@ static int mp2629_probe(struct i2c_client *client)
 
 static const struct of_device_id mp2629_of_match[] = {
 	{ .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 072c8181b48b..ee0e65720c75 100644
--- a/include/linux/mfd/mp2629.h
+++ b/include/linux/mfd/mp2629.h
@@ -11,6 +11,7 @@
 
 enum mp2xx_chip_id {
 	CHIP_ID_MP2629,
+	CHIP_ID_MP2733,
 };
 
 struct mp2629_data {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 5/7] iio: adc: mp2629: restrict input voltage mask for mp2629
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
                   ` (3 preceding siblings ...)
  2022-11-23 17:54 ` [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 6/7] power: supply: Add support for mp2733 battery charger Saravanan Sekar
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar, Jonathan Cameron

Add support for mp2733 which is updated version of mp2629
with a higher range of input voltage.

Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/adc/mp2629_adc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/mp2629_adc.c b/drivers/iio/adc/mp2629_adc.c
index 88e947f300cf..18290e176e1e 100644
--- a/drivers/iio/adc/mp2629_adc.c
+++ b/drivers/iio/adc/mp2629_adc.c
@@ -66,6 +66,7 @@ static int mp2629_read_raw(struct iio_dev *indio_dev,
 			int *val, int *val2, long mask)
 {
 	struct mp2629_adc *info = iio_priv(indio_dev);
+	struct mp2629_data *ddata = dev_get_drvdata(info->dev);
 	unsigned int rval;
 	int ret;
 
@@ -75,8 +76,10 @@ static int mp2629_read_raw(struct iio_dev *indio_dev,
 		if (ret)
 			return ret;
 
-		if (chan->channel == MP2629_INPUT_VOLT)
+		if (chan->channel == MP2629_INPUT_VOLT &&
+		    ddata->chip_id == CHIP_ID_MP2629)
 			rval &= GENMASK(6, 0);
+
 		*val = rval;
 		return IIO_VAL_INT;
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 6/7] power: supply: Add support for mp2733 battery charger
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
                   ` (4 preceding siblings ...)
  2022-11-23 17:54 ` [PATCH v6 5/7] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2022-11-23 17:54 ` [PATCH v6 7/7] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
  2022-12-06 16:05 ` [PATCH v6 0/7] Add support for mp2733 battery charger saravanan sekar
  7 siblings, 0 replies; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar, Sebastian Reichel

mp2733 is updated version of mp2629 battery charge management
which 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>
---
 drivers/power/supply/mp2629_charger.c | 223 ++++++++++++++++++++++----
 1 file changed, 192 insertions(+), 31 deletions(-)

diff --git a/drivers/power/supply/mp2629_charger.c b/drivers/power/supply/mp2629_charger.c
index 46d620bd23b9..2ff3729afc48 100644
--- a/drivers/power/supply/mp2629_charger.c
+++ b/drivers/power/supply/mp2629_charger.c
@@ -30,12 +30,15 @@
 #define MP2629_REG_INTERRUPT		0x0b
 #define MP2629_REG_STATUS		0x0c
 #define MP2629_REG_FAULT		0x0d
+#define MP2629_REG_FAST_CHARGE		0x17
 
 #define MP2629_MASK_INPUT_TYPE		GENMASK(7, 5)
 #define MP2629_MASK_CHARGE_TYPE		GENMASK(4, 3)
 #define MP2629_MASK_CHARGE_CTRL		GENMASK(5, 4)
 #define MP2629_MASK_WDOG_CTRL		GENMASK(5, 4)
 #define MP2629_MASK_IMPEDANCE		GENMASK(7, 4)
+#define MP2733_MASK_FAST_CHARGE		GENMASK(2, 1)
+#define MP2733_MASK_FAST_CHARGE_RESET	BIT(0)
 
 #define MP2629_INPUTSOURCE_CHANGE	GENMASK(7, 5)
 #define MP2629_CHARGING_CHANGE		GENMASK(4, 3)
@@ -62,6 +65,17 @@ enum mp2629_source_type {
 	MP2629_SOURCE_TYPE_OTG = 7,
 };
 
+enum mp2733_source_type {
+	MP2733_SOURCE_TYPE_NO_INPUT,
+	MP2733_SOURCE_TYPE_NON_STD,
+	MP2733_SOURCE_TYPE_APPLE_1p0,
+	MP2733_SOURCE_TYPE_APPLE_2p1,
+	MP2733_SOURCE_TYPE_APPLE_2p4,
+	MP2733_SOURCE_TYPE_SDP,
+	MP2733_SOURCE_TYPE_CDP,
+	MP2733_SOURCE_TYPE_DCP,
+};
+
 enum mp2629_field {
 	INPUT_ILIM,
 	INPUT_VLIM,
@@ -72,11 +86,30 @@ enum mp2629_field {
 	MP2629_MAX_FIELD
 };
 
+struct mp2629_prop {
+	int reg;
+	int mask;
+	int min;
+	int max;
+	int step;
+	int shift;
+};
+
+struct mp2xx_chip_info {
+	const struct reg_field *rfields;
+	struct mp2629_prop *chip_props;
+	bool has_impedance;
+	bool has_fast_charge;
+
+	int (*mp2xx_get_usb_type)(unsigned int rval);
+};
+
 struct mp2629_charger {
 	struct device *dev;
 	int status;
 	int fault;
 
+	const struct mp2xx_chip_info *chip_info;
 	struct regmap *regmap;
 	struct regmap_field *regmap_fields[MP2629_MAX_FIELD];
 	struct mutex lock;
@@ -85,15 +118,6 @@ struct mp2629_charger {
 	struct iio_channel *iiochan[MP2629_ADC_CHAN_END];
 };
 
-struct mp2629_prop {
-	int reg;
-	int mask;
-	int min;
-	int max;
-	int step;
-	int shift;
-};
-
 static enum power_supply_usb_type mp2629_usb_types[] = {
 	POWER_SUPPLY_USB_TYPE_SDP,
 	POWER_SUPPLY_USB_TYPE_DCP,
@@ -126,7 +150,25 @@ static enum power_supply_property mp2629_charger_bat_props[] = {
 	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
 };
 
-static struct mp2629_prop props[] = {
+static struct mp2629_prop mp2733_chip_props[] = {
+	MP2629_PROPS(INPUT_ILIM, 100000, 3250000, 50000),
+	MP2629_PROPS(INPUT_VLIM, 3800000, 15200000, 100000),
+	MP2629_PROPS(CHARGE_ILIM, 320000, 4520000, 40000),
+	MP2629_PROPS(CHARGE_VLIM, 3400000, 4670000, 10000),
+	MP2629_PROPS(PRECHARGE, 120000, 720000, 40000),
+	MP2629_PROPS(TERM_CURRENT, 80000, 680000, 40000),
+};
+
+static const struct reg_field mp2733_reg_fields[] = {
+	[INPUT_ILIM]	= REG_FIELD(MP2629_REG_INPUT_ILIM, 0, 5),
+	[INPUT_VLIM]	= REG_FIELD(MP2629_REG_INPUT_VLIM, 0, 6),
+	[CHARGE_ILIM]	= REG_FIELD(MP2629_REG_CHARGE_ILIM, 0, 6),
+	[CHARGE_VLIM]	= REG_FIELD(MP2629_REG_CHARGE_VLIM, 1, 7),
+	[PRECHARGE]	= REG_FIELD(MP2629_REG_PRECHARGE, 4, 7),
+	[TERM_CURRENT]	= REG_FIELD(MP2629_REG_TERM_CURRENT, 0, 3),
+};
+
+static struct mp2629_prop mp2629_chip_props[] = {
 	MP2629_PROPS(INPUT_ILIM, 100000, 3250000, 50000),
 	MP2629_PROPS(INPUT_VLIM, 3800000, 5300000, 100000),
 	MP2629_PROPS(CHARGE_ILIM, 320000, 4520000, 40000),
@@ -174,6 +216,7 @@ static int mp2629_get_prop(struct mp2629_charger *charger,
 {
 	int ret;
 	unsigned int rval;
+	struct mp2629_prop *props = charger->chip_info->chip_props;
 
 	ret = regmap_field_read(charger->regmap_fields[fld], &rval);
 	if (ret)
@@ -189,6 +232,7 @@ static int mp2629_set_prop(struct mp2629_charger *charger,
 			   const union power_supply_propval *val)
 {
 	unsigned int rval;
+	struct mp2629_prop *props = charger->chip_info->chip_props;
 
 	if (val->intval < props[fld].min || val->intval > props[fld].max)
 		return -EINVAL;
@@ -311,6 +355,16 @@ static int mp2629_charger_battery_get_prop(struct power_supply *psy,
 		default:
 			val->intval = POWER_SUPPLY_CHARGE_TYPE_UNKNOWN;
 		}
+
+		if (charger->chip_info->has_fast_charge) {
+			ret = regmap_read(charger->regmap,
+					  MP2629_REG_FAST_CHARGE, &rval);
+			if (ret)
+				break;
+
+			if (rval & BIT(6))
+				val->intval = POWER_SUPPLY_CHARGE_TYPE_FAST;
+		}
 		break;
 
 	default:
@@ -344,6 +398,40 @@ static int mp2629_charger_battery_set_prop(struct power_supply *psy,
 	}
 }
 
+static int mp2733_get_usb_type(unsigned int rval)
+{
+	switch (rval) {
+	case MP2733_SOURCE_TYPE_APPLE_1p0:
+	case MP2733_SOURCE_TYPE_APPLE_2p1:
+	case MP2733_SOURCE_TYPE_APPLE_2p4:
+		return POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID;
+	case MP2733_SOURCE_TYPE_SDP:
+		return POWER_SUPPLY_USB_TYPE_SDP;
+	case MP2733_SOURCE_TYPE_CDP:
+		return POWER_SUPPLY_USB_TYPE_CDP;
+	case MP2733_SOURCE_TYPE_DCP:
+		return POWER_SUPPLY_USB_TYPE_DCP;
+	default:
+		return POWER_SUPPLY_USB_TYPE_UNKNOWN;
+	}
+}
+
+static int mp2629_get_usb_type(unsigned int rval)
+{
+	switch (rval) {
+	case MP2629_SOURCE_TYPE_SDP:
+		return POWER_SUPPLY_USB_TYPE_SDP;
+	case MP2629_SOURCE_TYPE_CDP:
+		return POWER_SUPPLY_USB_TYPE_CDP;
+	case MP2629_SOURCE_TYPE_DCP:
+		return POWER_SUPPLY_USB_TYPE_DCP;
+	case MP2629_SOURCE_TYPE_OTG:
+		return POWER_SUPPLY_USB_TYPE_PD_DRP;
+	default:
+		return POWER_SUPPLY_USB_TYPE_UNKNOWN;
+	}
+}
+
 static int mp2629_charger_usb_get_prop(struct power_supply *psy,
 				enum power_supply_property psp,
 				union power_supply_propval *val)
@@ -367,23 +455,7 @@ static int mp2629_charger_usb_get_prop(struct power_supply *psy,
 			break;
 
 		rval = (rval & MP2629_MASK_INPUT_TYPE) >> 5;
-		switch (rval) {
-		case MP2629_SOURCE_TYPE_SDP:
-			val->intval = POWER_SUPPLY_USB_TYPE_SDP;
-			break;
-		case MP2629_SOURCE_TYPE_CDP:
-			val->intval = POWER_SUPPLY_USB_TYPE_CDP;
-			break;
-		case MP2629_SOURCE_TYPE_DCP:
-			val->intval = POWER_SUPPLY_USB_TYPE_DCP;
-			break;
-		case MP2629_SOURCE_TYPE_OTG:
-			val->intval = POWER_SUPPLY_USB_TYPE_PD_DRP;
-			break;
-		default:
-			val->intval = POWER_SUPPLY_USB_TYPE_UNKNOWN;
-			break;
-		}
+		val->intval = charger->chip_info->mp2xx_get_usb_type(rval);
 		break;
 
 	case POWER_SUPPLY_PROP_VOLTAGE_NOW:
@@ -550,11 +622,72 @@ static ssize_t batt_impedance_compensation_store(struct device *dev,
 
 static DEVICE_ATTR_RW(batt_impedance_compensation);
 
-static struct attribute *mp2629_charger_sysfs_attrs[] = {
+static struct attribute *mp2xx_batt_imp_sysfs_attrs[] = {
+	&dev_attr_batt_impedance_compensation.attr,
+	NULL
+};
+ATTRIBUTE_GROUPS(mp2xx_batt_imp_sysfs);
+
+static ssize_t usb_fast_charge_show(struct device *dev,
+				    struct device_attribute *attr,
+				    char *buf)
+{
+	struct mp2629_charger *charger = dev_get_drvdata(dev->parent);
+	unsigned int rval;
+	int ret;
+
+	ret = regmap_read(charger->regmap, MP2629_REG_INTERRUPT, &rval);
+	if (ret)
+		return ret;
+
+	return  sysfs_emit(buf, "USB DP %u:DM %u\n", !!(rval & BIT(2)),
+			 !!(rval & BIT(1)));
+}
+
+static ssize_t usb_fast_charge_store(struct device *dev,
+				     struct device_attribute *attr,
+				     const char *buf,
+				     size_t count)
+{
+	struct mp2629_charger *charger = dev_get_drvdata(dev->parent);
+	unsigned int val;
+	int ret;
+
+	ret = kstrtouint(buf, 10, &val);
+	if (ret)
+		return ret;
+
+	if (val > 3)
+		return -ERANGE;
+
+	ret = regmap_update_bits(charger->regmap, MP2629_REG_INTERRUPT,
+				 MP2733_MASK_FAST_CHARGE, val << 1);
+	if (ret)
+		return ret;
+
+	ret = regmap_update_bits(charger->regmap, MP2629_REG_INTERRUPT,
+				 MP2733_MASK_FAST_CHARGE_RESET,
+				 MP2733_MASK_FAST_CHARGE_RESET);
+	if (ret)
+		return ret;
+
+	return count;
+}
+
+static DEVICE_ATTR_RW(usb_fast_charge);
+
+static struct attribute *mp2xx_fast_charge_sysfs_attrs[] = {
+	&dev_attr_usb_fast_charge.attr,
+	NULL
+};
+ATTRIBUTE_GROUPS(mp2xx_fast_charge_sysfs);
+
+static struct attribute *mp2xx_all_sysfs_attrs[] = {
+	&dev_attr_usb_fast_charge.attr,
 	&dev_attr_batt_impedance_compensation.attr,
 	NULL
 };
-ATTRIBUTE_GROUPS(mp2629_charger_sysfs);
+ATTRIBUTE_GROUPS(mp2xx_all_sysfs);
 
 static void mp2629_charger_disable(void *data)
 {
@@ -564,6 +697,23 @@ static void mp2629_charger_disable(void *data)
 					MP2629_MASK_CHARGE_CTRL, 0);
 }
 
+static const struct mp2xx_chip_info mp2xx_chip_info_tbl[] = {
+	[CHIP_ID_MP2629] = {
+		.rfields = mp2629_reg_fields,
+		.chip_props = mp2629_chip_props,
+		.has_impedance = 1,
+
+		.mp2xx_get_usb_type = mp2629_get_usb_type,
+	},
+	[CHIP_ID_MP2733] = {
+		.rfields = mp2733_reg_fields,
+		.chip_props = mp2733_chip_props,
+		.has_fast_charge = 1,
+
+		.mp2xx_get_usb_type = mp2733_get_usb_type,
+	},
+};
+
 static int mp2629_charger_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -578,6 +728,7 @@ static int mp2629_charger_probe(struct platform_device *pdev)
 
 	charger->regmap = ddata->regmap;
 	charger->dev = dev;
+	charger->chip_info = &mp2xx_chip_info_tbl[ddata->chip_id];
 	platform_set_drvdata(pdev, charger);
 
 	irq = platform_get_irq(to_platform_device(dev->parent), 0);
@@ -586,7 +737,8 @@ static int mp2629_charger_probe(struct platform_device *pdev)
 
 	for (i = 0; i < MP2629_MAX_FIELD; i++) {
 		charger->regmap_fields[i] = devm_regmap_field_alloc(dev,
-					charger->regmap, mp2629_reg_fields[i]);
+					charger->regmap,
+					charger->chip_info->rfields[i]);
 		if (IS_ERR(charger->regmap_fields[i])) {
 			dev_err(dev, "regmap field alloc fail %d\n", i);
 			return PTR_ERR(charger->regmap_fields[i]);
@@ -613,7 +765,16 @@ static int mp2629_charger_probe(struct platform_device *pdev)
 	}
 
 	psy_cfg.drv_data = charger;
-	psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
+
+	if (charger->chip_info->has_impedance &&
+	    charger->chip_info->has_fast_charge) {
+		psy_cfg.attr_grp = mp2xx_all_sysfs_groups;
+	} else if (charger->chip_info->has_impedance) {
+		psy_cfg.attr_grp = mp2xx_batt_imp_sysfs_groups;
+	} else if (charger->chip_info->has_fast_charge) {
+		psy_cfg.attr_grp = mp2xx_fast_charge_sysfs_groups;
+	}
+
 	charger->battery = devm_power_supply_register(dev,
 					 &mp2629_battery_desc, &psy_cfg);
 	if (IS_ERR(charger->battery)) {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v6 7/7] power: supply: mp2629: Add USB fast charge settings
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
                   ` (5 preceding siblings ...)
  2022-11-23 17:54 ` [PATCH v6 6/7] power: supply: Add support for mp2733 battery charger Saravanan Sekar
@ 2022-11-23 17:54 ` Saravanan Sekar
  2022-12-06 16:05 ` [PATCH v6 0/7] Add support for mp2733 battery charger saravanan sekar
  7 siblings, 0 replies; 15+ messages in thread
From: Saravanan Sekar @ 2022-11-23 17:54 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko
  Cc: linux-pm, linux-iio, Saravanan Sekar, Sebastian Reichel

Allows the user to change the USB device fast charge setting to advertise
host on enumeration helps to accelerate the charging cycle. Altering this
value resets USB existing connection.

Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
 .../ABI/testing/sysfs-class-power-mp2629         | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-power-mp2629 b/Documentation/ABI/testing/sysfs-class-power-mp2629
index 914d67caac0d..40abb9a11d97 100644
--- a/Documentation/ABI/testing/sysfs-class-power-mp2629
+++ b/Documentation/ABI/testing/sysfs-class-power-mp2629
@@ -1,3 +1,19 @@
+What:		/sys/class/power_supply/mp2629_battery/usb_fast_charge
+Date:		November 2022
+KernelVersion:	6.1
+Description:
+		Represents a USB device fast charge settings.Altering this
+		value resets USB existing connection
+		USB DP:DM[0:0] 0.6V : Hi-Z
+		USB DP:DM[0:1] 3.3V : 0.6V
+		USB DP:DM[1:0] 0.6V : 0.6V
+		USB DP:DM[1:1] 0.6V : 3.3V
+
+                Access: Read, Write
+
+                Valid values: Represented in bit DP & DM setting. Valid
+			      range is [0, 3].
+
 What:		/sys/class/power_supply/mp2629_battery/batt_impedance_compen
 Date:		April 2020
 KernelVersion:	5.7
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 2/7] power: supply: fix wrong interpretation of register value
  2022-11-23 17:54 ` [PATCH v6 2/7] power: supply: fix wrong interpretation of register value Saravanan Sekar
@ 2022-11-24 21:45   ` Sebastian Reichel
  0 siblings, 0 replies; 15+ messages in thread
From: Sebastian Reichel @ 2022-11-24 21:45 UTC (permalink / raw)
  To: Saravanan Sekar; +Cc: lee, jic23, lars, andy.shevchenko, linux-pm, linux-iio

[-- Attachment #1: Type: text/plain, Size: 1315 bytes --]

Hi,

On Wed, Nov 23, 2022 at 06:54:20PM +0100, Saravanan Sekar wrote:
> Fix the switch cases to match the register value.
> 
> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> ---

Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>

-- Sebastian

>  drivers/power/supply/mp2629_charger.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/power/supply/mp2629_charger.c b/drivers/power/supply/mp2629_charger.c
> index bf9c27b463a8..46d620bd23b9 100644
> --- a/drivers/power/supply/mp2629_charger.c
> +++ b/drivers/power/supply/mp2629_charger.c
> @@ -284,10 +284,10 @@ static int mp2629_charger_battery_get_prop(struct power_supply *psy,
>  			val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
>  			break;
>  		case 0x01:
> -		case 0x10:
> +		case 0x02:
>  			val->intval = POWER_SUPPLY_STATUS_CHARGING;
>  			break;
> -		case 0x11:
> +		case 0x03:
>  			val->intval = POWER_SUPPLY_STATUS_FULL;
>  		}
>  		break;
> @@ -305,7 +305,7 @@ static int mp2629_charger_battery_get_prop(struct power_supply *psy,
>  		case 0x01:
>  			val->intval = POWER_SUPPLY_CHARGE_TYPE_TRICKLE;
>  			break;
> -		case 0x10:
> +		case 0x02:
>  			val->intval = POWER_SUPPLY_CHARGE_TYPE_STANDARD;
>  			break;
>  		default:
> -- 
> 2.34.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 0/7] Add support for mp2733 battery charger
  2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
                   ` (6 preceding siblings ...)
  2022-11-23 17:54 ` [PATCH v6 7/7] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
@ 2022-12-06 16:05 ` saravanan sekar
  2022-12-11 11:50   ` Jonathan Cameron
  7 siblings, 1 reply; 15+ messages in thread
From: saravanan sekar @ 2022-12-06 16:05 UTC (permalink / raw)
  To: sre, lee, jic23, lars, andy.shevchenko; +Cc: linux-pm, linux-iio

On 23/11/22 18:54, Saravanan Sekar wrote:
> changes in v6:
>    - splitted chip id to v6-0003 and support of mp2733 to v6-0004 patch
>    - fixed commit message English grammar
> 
> changes in v5:
>    - fixed commit message on v5-0002 and v5-0004
> 
> changes in v4:
>    - fixed attributes groups review comments in v3
>    - added new bug fix patches v4-0007 and v4-0008
> 
> changes in v3:
>    - fixed dt_binding_check error
>    - fixed spelling usb->USB
> 
> changes in v2:
>    - fixed spelling
>    - revert back probe to probe_new in mfd driver
> 
> add support for mp2733 Battery charger control driver for Monolithic
> Power System's MP2733 chipset
> 
> Saravanan Sekar (7):
>    mfd: mp2629: fix failed to get iio channel by device name
>    power: supply: fix wrong interpretation of register value
>    mfd: mp2629: introduce chip id machanism to distinguish chip
>    mfd: mp2629: Add support for mps mp2733 battery charger
>    iio: adc: mp2629: restrict input voltage mask for mp2629
>    power: supply: Add support for mp2733 battery charger
>    power: supply: mp2629: Add USB fast charge settings
> 
>   .../ABI/testing/sysfs-class-power-mp2629      |  16 ++
>   drivers/iio/adc/mp2629_adc.c                  |   5 +-
>   drivers/mfd/mp2629.c                          |   7 +-
>   drivers/power/supply/mp2629_charger.c         | 229 +++++++++++++++---
>   include/linux/mfd/mp2629.h                    |   6 +
>   5 files changed, 226 insertions(+), 37 deletions(-)
> 

Hi,

Can someone give me share the plan for this series?

Thanks,
Saravanan

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 0/7] Add support for mp2733 battery charger
  2022-12-06 16:05 ` [PATCH v6 0/7] Add support for mp2733 battery charger saravanan sekar
@ 2022-12-11 11:50   ` Jonathan Cameron
  2023-01-03 12:37     ` Lee Jones
  0 siblings, 1 reply; 15+ messages in thread
From: Jonathan Cameron @ 2022-12-11 11:50 UTC (permalink / raw)
  To: saravanan sekar; +Cc: sre, lee, lars, andy.shevchenko, linux-pm, linux-iio

On Tue, 6 Dec 2022 17:05:26 +0100
saravanan sekar <sravanhome@gmail.com> wrote:

> On 23/11/22 18:54, Saravanan Sekar wrote:
> > changes in v6:
> >    - splitted chip id to v6-0003 and support of mp2733 to v6-0004 patch
> >    - fixed commit message English grammar
> > 
> > changes in v5:
> >    - fixed commit message on v5-0002 and v5-0004
> > 
> > changes in v4:
> >    - fixed attributes groups review comments in v3
> >    - added new bug fix patches v4-0007 and v4-0008
> > 
> > changes in v3:
> >    - fixed dt_binding_check error
> >    - fixed spelling usb->USB
> > 
> > changes in v2:
> >    - fixed spelling
> >    - revert back probe to probe_new in mfd driver
> > 
> > add support for mp2733 Battery charger control driver for Monolithic
> > Power System's MP2733 chipset
> > 
> > Saravanan Sekar (7):
> >    mfd: mp2629: fix failed to get iio channel by device name
> >    power: supply: fix wrong interpretation of register value
> >    mfd: mp2629: introduce chip id machanism to distinguish chip
> >    mfd: mp2629: Add support for mps mp2733 battery charger
> >    iio: adc: mp2629: restrict input voltage mask for mp2629
> >    power: supply: Add support for mp2733 battery charger
> >    power: supply: mp2629: Add USB fast charge settings
> > 
> >   .../ABI/testing/sysfs-class-power-mp2629      |  16 ++
> >   drivers/iio/adc/mp2629_adc.c                  |   5 +-
> >   drivers/mfd/mp2629.c                          |   7 +-
> >   drivers/power/supply/mp2629_charger.c         | 229 +++++++++++++++---
> >   include/linux/mfd/mp2629.h                    |   6 +
> >   5 files changed, 226 insertions(+), 37 deletions(-)
> >   
> 
> Hi,
> 
> Can someone give me share the plan for this series?

Given some cross dependencies I think the whole lot should go through
mfd.  Lee?

Thanks,

Jonathan
> 
> Thanks,
> Saravanan


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 0/7] Add support for mp2733 battery charger
  2022-12-11 11:50   ` Jonathan Cameron
@ 2023-01-03 12:37     ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2023-01-03 12:37 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: saravanan sekar, sre, lars, andy.shevchenko, linux-pm, linux-iio

On Sun, 11 Dec 2022, Jonathan Cameron wrote:

> On Tue, 6 Dec 2022 17:05:26 +0100
> saravanan sekar <sravanhome@gmail.com> wrote:
> 
> > On 23/11/22 18:54, Saravanan Sekar wrote:
> > > changes in v6:
> > >    - splitted chip id to v6-0003 and support of mp2733 to v6-0004 patch
> > >    - fixed commit message English grammar
> > > 
> > > changes in v5:
> > >    - fixed commit message on v5-0002 and v5-0004
> > > 
> > > changes in v4:
> > >    - fixed attributes groups review comments in v3
> > >    - added new bug fix patches v4-0007 and v4-0008
> > > 
> > > changes in v3:
> > >    - fixed dt_binding_check error
> > >    - fixed spelling usb->USB
> > > 
> > > changes in v2:
> > >    - fixed spelling
> > >    - revert back probe to probe_new in mfd driver
> > > 
> > > add support for mp2733 Battery charger control driver for Monolithic
> > > Power System's MP2733 chipset
> > > 
> > > Saravanan Sekar (7):
> > >    mfd: mp2629: fix failed to get iio channel by device name
> > >    power: supply: fix wrong interpretation of register value
> > >    mfd: mp2629: introduce chip id machanism to distinguish chip
> > >    mfd: mp2629: Add support for mps mp2733 battery charger
> > >    iio: adc: mp2629: restrict input voltage mask for mp2629
> > >    power: supply: Add support for mp2733 battery charger
> > >    power: supply: mp2629: Add USB fast charge settings
> > > 
> > >   .../ABI/testing/sysfs-class-power-mp2629      |  16 ++
> > >   drivers/iio/adc/mp2629_adc.c                  |   5 +-
> > >   drivers/mfd/mp2629.c                          |   7 +-
> > >   drivers/power/supply/mp2629_charger.c         | 229 +++++++++++++++---
> > >   include/linux/mfd/mp2629.h                    |   6 +
> > >   5 files changed, 226 insertions(+), 37 deletions(-)
> > >   
> > 
> > Hi,
> > 
> > Can someone give me share the plan for this series?
> 
> Given some cross dependencies I think the whole lot should go through
> mfd.  Lee?

That's fine by me.

I have some serious catching up to do though.

Please bear with me.

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name
  2022-11-23 17:54 ` [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name Saravanan Sekar
@ 2023-01-19 15:00   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2023-01-19 15:00 UTC (permalink / raw)
  To: Saravanan Sekar; +Cc: sre, jic23, lars, andy.shevchenko, linux-pm, linux-iio

On Wed, 23 Nov 2022, Saravanan Sekar wrote:

> The mfd cell devices name populated on sysfs entry is dynamically derived

Could you please make an attempt to capitalise words that require it?

MFD, ADC, IIO, etc.  Also the start of the subject line description.

> from an auto instance which introduced a regression. As a result
> mpc2629_charger driver failed to get adc channel because of iio consumer

How can you regress something that doesn't appear to exist?

$ git grep -i mpc2629 next/master

> name mismatch with the sysfs.

Why is the charger driver reading sysfs?

> /sys/class/i2c-adapter/i2c-1/mp2629_adc.0.auto/
> /sys/class/i2c-adapter/i2c-1/mp2629_charger.1.auto/

Can you provide an error message or some debug prints or something that
will help describe the exact issue you are facing please?
 
> Fixes: 466a62d7642f ("mfd: core: Make a best effort attempt to match devices with the correct of_nodes")
> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> ---
>  drivers/mfd/mp2629.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mfd/mp2629.c b/drivers/mfd/mp2629.c
> index 16840ec5fd1c..f4c5aa06f38c 100644
> --- a/drivers/mfd/mp2629.c
> +++ b/drivers/mfd/mp2629.c
> @@ -51,7 +51,7 @@ static int mp2629_probe(struct i2c_client *client)
>  		return PTR_ERR(ddata->regmap);
>  	}
>  
> -	ret = devm_mfd_add_devices(ddata->dev, PLATFORM_DEVID_AUTO, mp2629_cell,
> +	ret = devm_mfd_add_devices(ddata->dev, PLATFORM_DEVID_NONE, mp2629_cell,
>  				   ARRAY_SIZE(mp2629_cell), NULL, 0, NULL);
>  	if (ret)
>  		dev_err(ddata->dev, "Failed to register sub-devices %d\n", ret);
> -- 
> 2.34.1
> 

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip
  2022-11-23 17:54 ` [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip Saravanan Sekar
@ 2023-01-19 15:06   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2023-01-19 15:06 UTC (permalink / raw)
  To: Saravanan Sekar; +Cc: sre, jic23, lars, andy.shevchenko, linux-pm, linux-iio

"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
> 

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger
  2022-11-23 17:54 ` [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
@ 2023-01-19 15:08   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2023-01-19 15:08 UTC (permalink / raw)
  To: Saravanan Sekar; +Cc: sre, jic23, lars, andy.shevchenko, linux-pm, linux-iio

MP2733, MP2629, MPS, Battery Charge Management? 

On Wed, 23 Nov 2022, Saravanan Sekar 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>
> ---
>  drivers/mfd/mp2629.c       | 1 +
>  include/linux/mfd/mp2629.h | 1 +
>  2 files changed, 2 insertions(+)

Once the above has been fixed, please add my:

For my own reference (apply this as-is to your sign-off block):

Acked-for-MFD-by: Lee Jones <lee@kernel.org>

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-01-19 15:08 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-23 17:54 [PATCH v6 0/7] Add support for mp2733 battery charger Saravanan Sekar
2022-11-23 17:54 ` [PATCH v6 1/7] mfd: mp2629: fix failed to get iio channel by device name Saravanan Sekar
2023-01-19 15:00   ` Lee Jones
2022-11-23 17:54 ` [PATCH v6 2/7] power: supply: fix wrong interpretation of register value Saravanan Sekar
2022-11-24 21:45   ` Sebastian Reichel
2022-11-23 17:54 ` [PATCH v6 3/7] mfd: mp2629: introduce chip id machanism to distinguish chip Saravanan Sekar
2023-01-19 15:06   ` Lee Jones
2022-11-23 17:54 ` [PATCH v6 4/7] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
2023-01-19 15:08   ` Lee Jones
2022-11-23 17:54 ` [PATCH v6 5/7] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
2022-11-23 17:54 ` [PATCH v6 6/7] power: supply: Add support for mp2733 battery charger Saravanan Sekar
2022-11-23 17:54 ` [PATCH v6 7/7] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
2022-12-06 16:05 ` [PATCH v6 0/7] Add support for mp2733 battery charger saravanan sekar
2022-12-11 11:50   ` Jonathan Cameron
2023-01-03 12:37     ` Lee Jones

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.