linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/6] Add support for mp2733 battery charger
@ 2022-06-15 14:53 Saravanan Sekar
  2022-06-15 14:53 ` [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel Saravanan Sekar
                   ` (6 more replies)
  0 siblings, 7 replies; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

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

I do not see a cover letter, but FWIW,
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
for all patches except DT binding
Note, some of the comments regarding spelling were given, I believe
you are going to address them in v3.


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

Saravanan Sekar (6):
  iio: adc: mp2629: fix wrong comparison of channel
  dt-bindings: mfd: Add mp2733 compatible
  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 ++
 .../devicetree/bindings/mfd/mps,mp2629.yaml   |   4 +-
 drivers/iio/adc/mp2629_adc.c                  |   5 +-
 drivers/mfd/mp2629.c                          |   5 +-
 drivers/power/supply/mp2629_charger.c         | 208 +++++++++++++++---
 include/linux/mfd/mp2629.h                    |   6 +
 6 files changed, 212 insertions(+), 32 deletions(-)

-- 
2.25.1


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

* [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-06-18 16:23   ` Jonathan Cameron
  2022-06-15 14:53 ` [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible Saravanan Sekar
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

Input voltage channel enum is compared against iio address instead
of the channel.

Fixes: 7abd9fb64682 ("iio: adc: mp2629: Add support for mp2629 ADC driver")
Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/iio/adc/mp2629_adc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/mp2629_adc.c b/drivers/iio/adc/mp2629_adc.c
index aca084f1e78a..e7fbfe92e884 100644
--- a/drivers/iio/adc/mp2629_adc.c
+++ b/drivers/iio/adc/mp2629_adc.c
@@ -73,7 +73,7 @@ static int mp2629_read_raw(struct iio_dev *indio_dev,
 		if (ret)
 			return ret;
 
-		if (chan->address == MP2629_INPUT_VOLT)
+		if (chan->channel == MP2629_INPUT_VOLT)
 			rval &= GENMASK(6, 0);
 		*val = rval;
 		return IIO_VAL_INT;
-- 
2.25.1


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

* [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
  2022-06-15 14:53 ` [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-06-27 14:45   ` Lee Jones
  2022-06-15 14:53 ` [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

Add new compatible for mp2733 mfd driver.

Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
---
 Documentation/devicetree/bindings/mfd/mps,mp2629.yaml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mfd/mps,mp2629.yaml b/Documentation/devicetree/bindings/mfd/mps,mp2629.yaml
index f91acc42d652..5ba849d78d8a 100644
--- a/Documentation/devicetree/bindings/mfd/mps,mp2629.yaml
+++ b/Documentation/devicetree/bindings/mfd/mps,mp2629.yaml
@@ -18,7 +18,9 @@ description: |
 
 properties:
   compatible:
-    const: mps,mp2629
+    enum:
+      - mps,mp2629
+      - mps,mp2733
 
   reg:
     maxItems: 1
-- 
2.25.1


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

* [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
  2022-06-15 14:53 ` [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel Saravanan Sekar
  2022-06-15 14:53 ` [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-06-27 12:36   ` Lee Jones
  2022-06-15 14:53 ` [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, 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       | 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 16840ec5fd1c..f59c97e70f83 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 {
-- 
2.25.1


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

* [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
                   ` (2 preceding siblings ...)
  2022-06-15 14:53 ` [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-06-18 16:19   ` Jonathan Cameron
  2022-06-15 14:53 ` [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger Saravanan Sekar
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

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>
---
 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 e7fbfe92e884..28d048eefce3 100644
--- a/drivers/iio/adc/mp2629_adc.c
+++ b/drivers/iio/adc/mp2629_adc.c
@@ -64,6 +64,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;
 
@@ -73,8 +74,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.25.1


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

* [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
                   ` (3 preceding siblings ...)
  2022-06-15 14:53 ` [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-09-11 13:31   ` Sebastian Reichel
  2022-06-15 14:53 ` [PATCH v3 6/6] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
  2022-07-21 15:50 ` [PATCH v3 0/6] Add support for mp2733 battery charger saravanan sekar
  6 siblings, 1 reply; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

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>
---
 drivers/power/supply/mp2629_charger.c | 208 ++++++++++++++++++++++----
 1 file changed, 179 insertions(+), 29 deletions(-)

diff --git a/drivers/power/supply/mp2629_charger.c b/drivers/power/supply/mp2629_charger.c
index bf9c27b463a8..8d4175d0504f 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 (*mpxx_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->mpxx_get_usb_type(rval);
 		break;
 
 	case POWER_SUPPLY_PROP_VOLTAGE_NOW:
@@ -556,6 +628,60 @@ static struct attribute *mp2629_charger_sysfs_attrs[] = {
 };
 ATTRIBUTE_GROUPS(mp2629_charger_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 *mp2733_charger_sysfs_attrs[] = {
+	&dev_attr_usb_fast_charge.attr,
+	NULL
+};
+ATTRIBUTE_GROUPS(mp2733_charger_sysfs);
+
 static void mp2629_charger_disable(void *data)
 {
 	struct mp2629_charger *charger = data;
@@ -564,6 +690,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,
+
+		.mpxx_get_usb_type = mp2629_get_usb_type,
+	},
+	[CHIP_ID_MP2733] = {
+		.rfields = mp2733_reg_fields,
+		.chip_props = mp2733_chip_props,
+		.has_fast_charge = 1,
+
+		.mpxx_get_usb_type = mp2733_get_usb_type,
+	},
+};
+
 static int mp2629_charger_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -578,6 +721,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 +730,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 +758,12 @@ 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)
+		psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
+
+	if (charger->chip_info->has_fast_charge)
+		psy_cfg.attr_grp = mp2733_charger_sysfs_groups;
+
 	charger->battery = devm_power_supply_register(dev,
 					 &mp2629_battery_desc, &psy_cfg);
 	if (IS_ERR(charger->battery)) {
-- 
2.25.1


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

* [PATCH v3 6/6] power: supply: mp2629: Add USB fast charge settings
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
                   ` (4 preceding siblings ...)
  2022-06-15 14:53 ` [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger Saravanan Sekar
@ 2022-06-15 14:53 ` Saravanan Sekar
  2022-07-21 15:50 ` [PATCH v3 0/6] Add support for mp2733 battery charger saravanan sekar
  6 siblings, 0 replies; 19+ messages in thread
From: Saravanan Sekar @ 2022-06-15 14:53 UTC (permalink / raw)
  To: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko
  Cc: linux-pm, devicetree, linux-iio, Saravanan Sekar

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>
---
 .../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..b386d02cb010 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:		June 2022
+KernelVersion:	5.20
+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.25.1


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

* Re: [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629
  2022-06-15 14:53 ` [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
@ 2022-06-18 16:19   ` Jonathan Cameron
  0 siblings, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2022-06-18 16:19 UTC (permalink / raw)
  To: Saravanan Sekar
  Cc: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

On Wed, 15 Jun 2022 16:53:55 +0200
Saravanan Sekar <sravanhome@gmail.com> wrote:

> 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>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

I'm assuming Lee will pick this up via mfd. Shout if you want
to do something else.

Thanks,

Jonathan

> ---
>  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 e7fbfe92e884..28d048eefce3 100644
> --- a/drivers/iio/adc/mp2629_adc.c
> +++ b/drivers/iio/adc/mp2629_adc.c
> @@ -64,6 +64,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;
>  
> @@ -73,8 +74,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;
>  


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

* Re: [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel
  2022-06-15 14:53 ` [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel Saravanan Sekar
@ 2022-06-18 16:23   ` Jonathan Cameron
  2022-06-18 17:27     ` saravanan sekar
  0 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2022-06-18 16:23 UTC (permalink / raw)
  To: Saravanan Sekar
  Cc: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

On Wed, 15 Jun 2022 16:53:52 +0200
Saravanan Sekar <sravanhome@gmail.com> wrote:

> Input voltage channel enum is compared against iio address instead
> of the channel.
> 
> Fixes: 7abd9fb64682 ("iio: adc: mp2629: Add support for mp2629 ADC driver")
> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

So how do you want to handle this?  If I take it as a separate fix it will
take a while to get upstream so that the later part of this series can be
applied on top of it.

If the fix isn't super urgent, then perhaps we just queue it up with the
rest of the series and Lee picks up through MFD?

On basis we might go that way.

Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Also, this probably wants a stable tag.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/mp2629_adc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/mp2629_adc.c b/drivers/iio/adc/mp2629_adc.c
> index aca084f1e78a..e7fbfe92e884 100644
> --- a/drivers/iio/adc/mp2629_adc.c
> +++ b/drivers/iio/adc/mp2629_adc.c
> @@ -73,7 +73,7 @@ static int mp2629_read_raw(struct iio_dev *indio_dev,
>  		if (ret)
>  			return ret;
>  
> -		if (chan->address == MP2629_INPUT_VOLT)
> +		if (chan->channel == MP2629_INPUT_VOLT)
>  			rval &= GENMASK(6, 0);
>  		*val = rval;
>  		return IIO_VAL_INT;


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

* Re: [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel
  2022-06-18 16:23   ` Jonathan Cameron
@ 2022-06-18 17:27     ` saravanan sekar
  0 siblings, 0 replies; 19+ messages in thread
From: saravanan sekar @ 2022-06-18 17:27 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: sre, lee.jones, robh+dt, krzysztof.kozlowski+dt, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

On 18/06/22 18:23, Jonathan Cameron wrote:
Hello Jonathan,

> On Wed, 15 Jun 2022 16:53:52 +0200
> Saravanan Sekar <sravanhome@gmail.com> wrote:
> 
>> Input voltage channel enum is compared against iio address instead
>> of the channel.
>>
>> Fixes: 7abd9fb64682 ("iio: adc: mp2629: Add support for mp2629 ADC driver")
>> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
>> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> 
> So how do you want to handle this?  If I take it as a separate fix it will
> take a while to get upstream so that the later part of this series can be
> applied on top of it.
> 
> If the fix isn't super urgent, then perhaps we just queue it up with the
> rest of the series and Lee picks up through MFD?
> 

Thanks for the review. It is not urgent to integrate now, may wait for 
Lee to take along with the series.

> On basis we might go that way.
> 
> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Also, this probably wants a stable tag.
> 
> Thanks,
> 
> Jonathan
> 
>> ---
>>   drivers/iio/adc/mp2629_adc.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/iio/adc/mp2629_adc.c b/drivers/iio/adc/mp2629_adc.c
>> index aca084f1e78a..e7fbfe92e884 100644
>> --- a/drivers/iio/adc/mp2629_adc.c
>> +++ b/drivers/iio/adc/mp2629_adc.c
>> @@ -73,7 +73,7 @@ static int mp2629_read_raw(struct iio_dev *indio_dev,
>>   		if (ret)
>>   			return ret;
>>   
>> -		if (chan->address == MP2629_INPUT_VOLT)
>> +		if (chan->channel == MP2629_INPUT_VOLT)
>>   			rval &= GENMASK(6, 0);
>>   		*val = rval;
>>   		return IIO_VAL_INT;
> 


Thanks,
Saravanan

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

* Re: [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger
  2022-06-15 14:53 ` [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
@ 2022-06-27 12:36   ` Lee Jones
  0 siblings, 0 replies; 19+ messages in thread
From: Lee Jones @ 2022-06-27 12:36 UTC (permalink / raw)
  To: Saravanan Sekar
  Cc: sre, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

On Wed, 15 Jun 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       | 5 ++++-
>  include/linux/mfd/mp2629.h | 6 ++++++
>  2 files changed, 10 insertions(+), 1 deletion(-)

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

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

-- 
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible
  2022-06-15 14:53 ` [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible Saravanan Sekar
@ 2022-06-27 14:45   ` Lee Jones
  2022-07-01 21:32     ` Rob Herring
  0 siblings, 1 reply; 19+ messages in thread
From: Lee Jones @ 2022-06-27 14:45 UTC (permalink / raw)
  To: Saravanan Sekar
  Cc: sre, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

On Wed, 15 Jun 2022, Saravanan Sekar wrote:

> Add new compatible for mp2733 mfd driver.
> 
> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> ---
>  Documentation/devicetree/bindings/mfd/mps,mp2629.yaml | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Applied in place of v1, thanks.

-- 
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible
  2022-06-27 14:45   ` Lee Jones
@ 2022-07-01 21:32     ` Rob Herring
  2022-07-04  8:53       ` Lee Jones
  0 siblings, 1 reply; 19+ messages in thread
From: Rob Herring @ 2022-07-01 21:32 UTC (permalink / raw)
  To: Lee Jones
  Cc: Saravanan Sekar, Sebastian Reichel, Krzysztof Kozlowski,
	Jonathan Cameron, Lars-Peter Clausen,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
	<devicetree@vger.kernel.org>,
	Hans de Goede <hdegoede@redhat.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,,
	open list:THERMAL, devicetree,
	open list:IIO SUBSYSTEM AND DRIVERS

On Mon, Jun 27, 2022 at 8:45 AM Lee Jones <lee.jones@linaro.org> wrote:
>
> On Wed, 15 Jun 2022, Saravanan Sekar wrote:
>
> > Add new compatible for mp2733 mfd driver.
> >
> > Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> > ---
> >  Documentation/devicetree/bindings/mfd/mps,mp2629.yaml | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
>
> Applied in place of v1, thanks.

Still failing, pushed out?

Rob

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

* Re: [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible
  2022-07-01 21:32     ` Rob Herring
@ 2022-07-04  8:53       ` Lee Jones
  0 siblings, 0 replies; 19+ messages in thread
From: Lee Jones @ 2022-07-04  8:53 UTC (permalink / raw)
  To: Rob Herring
  Cc: Saravanan Sekar, Sebastian Reichel, Krzysztof Kozlowski,
	Jonathan Cameron, Lars-Peter Clausen,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
	<devicetree@vger.kernel.org>,
	Hans de Goede <hdegoede@redhat.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,,
	open list:THERMAL, devicetree,
	open list:IIO SUBSYSTEM AND DRIVERS

On Fri, 01 Jul 2022, Rob Herring wrote:

> On Mon, Jun 27, 2022 at 8:45 AM Lee Jones <lee.jones@linaro.org> wrote:
> >
> > On Wed, 15 Jun 2022, Saravanan Sekar wrote:
> >
> > > Add new compatible for mp2733 mfd driver.
> > >
> > > Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
> > > ---
> > >  Documentation/devicetree/bindings/mfd/mps,mp2629.yaml | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > Applied in place of v1, thanks.
> 
> Still failing, pushed out?

Of course not! :)

Please try again tomorrow.

-- 
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v3 0/6] Add support for mp2733 battery charger
  2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
                   ` (5 preceding siblings ...)
  2022-06-15 14:53 ` [PATCH v3 6/6] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
@ 2022-07-21 15:50 ` saravanan sekar
  2022-07-22  8:14   ` Lee Jones
  6 siblings, 1 reply; 19+ messages in thread
From: saravanan sekar @ 2022-07-21 15:50 UTC (permalink / raw)
  To: lee.jones
  Cc: sre, linux-pm, devicetree, linux-iio, lars,
	krzysztof.kozlowski+dt, andy.shevchenko, robh+dt, jic23

Hello Lee,

May I know what is the plan for merge this change-set !

On 15/06/22 16:53, Saravanan Sekar wrote:
> 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
> 
> I do not see a cover letter, but FWIW,
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> for all patches except DT binding
> Note, some of the comments regarding spelling were given, I believe
> you are going to address them in v3.
> 
> 
> add support for mp2733 Battery charger control driver for Monolithic
> Power System's MP2733 chipset
> 
> Saravanan Sekar (6):
>    iio: adc: mp2629: fix wrong comparison of channel
>    dt-bindings: mfd: Add mp2733 compatible
>    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 ++
>   .../devicetree/bindings/mfd/mps,mp2629.yaml   |   4 +-
>   drivers/iio/adc/mp2629_adc.c                  |   5 +-
>   drivers/mfd/mp2629.c                          |   5 +-
>   drivers/power/supply/mp2629_charger.c         | 208 +++++++++++++++---
>   include/linux/mfd/mp2629.h                    |   6 +
>   6 files changed, 212 insertions(+), 32 deletions(-)
> 

Thanks,
Saravanan

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

* Re: [PATCH v3 0/6] Add support for mp2733 battery charger
  2022-07-21 15:50 ` [PATCH v3 0/6] Add support for mp2733 battery charger saravanan sekar
@ 2022-07-22  8:14   ` Lee Jones
  0 siblings, 0 replies; 19+ messages in thread
From: Lee Jones @ 2022-07-22  8:14 UTC (permalink / raw)
  To: saravanan sekar
  Cc: sre, linux-pm, devicetree, linux-iio, lars,
	krzysztof.kozlowski+dt, andy.shevchenko, robh+dt, jic23

On Thu, 21 Jul 2022, saravanan sekar wrote:

> On 15/06/22 16:53, Saravanan Sekar wrote:
> > 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
> > 
> > I do not see a cover letter, but FWIW,
> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> > for all patches except DT binding
> > Note, some of the comments regarding spelling were given, I believe
> > you are going to address them in v3.
> > 
> > 
> > add support for mp2733 Battery charger control driver for Monolithic
> > Power System's MP2733 chipset
> > 
> > Saravanan Sekar (6):
> >    iio: adc: mp2629: fix wrong comparison of channel
> >    dt-bindings: mfd: Add mp2733 compatible
> >    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 ++
> >   .../devicetree/bindings/mfd/mps,mp2629.yaml   |   4 +-
> >   drivers/iio/adc/mp2629_adc.c                  |   5 +-
> >   drivers/mfd/mp2629.c                          |   5 +-
> >   drivers/power/supply/mp2629_charger.c         | 208 +++++++++++++++---
> >   include/linux/mfd/mp2629.h                    |   6 +
> >   6 files changed, 212 insertions(+), 32 deletions(-)

> May I know what is the plan for merge this change-set !

It's due for v5.21.

If you're not planning on making any more changes, please collect all
of your tags and submit a [RESEND].

-- 
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger
  2022-06-15 14:53 ` [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger Saravanan Sekar
@ 2022-09-11 13:31   ` Sebastian Reichel
  2022-09-25  9:26     ` saravanan sekar
  0 siblings, 1 reply; 19+ messages in thread
From: Sebastian Reichel @ 2022-09-11 13:31 UTC (permalink / raw)
  To: Saravanan Sekar
  Cc: lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

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

Hi,

On Wed, Jun 15, 2022 at 04:53:56PM +0200, Saravanan Sekar wrote:
> 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>
> ---
> [...]
>  	psy_cfg.drv_data = charger;
> -	psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
> +	if (charger->chip_info->has_impedance)
> +		psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
> +
> +	if (charger->chip_info->has_fast_charge)
> +		psy_cfg.attr_grp = mp2733_charger_sysfs_groups;
> +
>  	charger->battery = devm_power_supply_register(dev,
>  					 &mp2629_battery_desc, &psy_cfg);
>  	if (IS_ERR(charger->battery)) {

Instead of having has_impedance and has_fast_charge feature
flag that are mutual exclusive, store the device type and
use if/else or switch statement to chose the correct attr_grp.
Other than that:

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

-- Sebastian

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

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

* Re: [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger
  2022-09-11 13:31   ` Sebastian Reichel
@ 2022-09-25  9:26     ` saravanan sekar
  2022-10-01 21:05       ` Sebastian Reichel
  0 siblings, 1 reply; 19+ messages in thread
From: saravanan sekar @ 2022-09-25  9:26 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

Hi Sebastian,

On 11/09/22 15:31, Sebastian Reichel wrote:
> Hi,
> 
> On Wed, Jun 15, 2022 at 04:53:56PM +0200, Saravanan Sekar wrote:
>> 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>
>> ---
>> [...]
>>   	psy_cfg.drv_data = charger;
>> -	psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
>> +	if (charger->chip_info->has_impedance)
>> +		psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
>> +
>> +	if (charger->chip_info->has_fast_charge)
>> +		psy_cfg.attr_grp = mp2733_charger_sysfs_groups;
>> +
>>   	charger->battery = devm_power_supply_register(dev,
>>   					 &mp2629_battery_desc, &psy_cfg);
>>   	if (IS_ERR(charger->battery)) {
> 
> Instead of having has_impedance and has_fast_charge feature
> flag that are mutual exclusive, store the device type and
> use if/else or switch statement to chose the correct attr_grp.

these flags are not really mutual exclusive, limitation only for 
application between mp2629 and mp2629. In future another chipset on
same series shall have both or none, so I would consider to control 
flags with functionality rather than chipset !

Please feedback if still I have to consider your proposal.

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

Thanks,
Saravanan


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

* Re: [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger
  2022-09-25  9:26     ` saravanan sekar
@ 2022-10-01 21:05       ` Sebastian Reichel
  0 siblings, 0 replies; 19+ messages in thread
From: Sebastian Reichel @ 2022-10-01 21:05 UTC (permalink / raw)
  To: saravanan sekar
  Cc: lee.jones, robh+dt, krzysztof.kozlowski+dt, jic23, lars,
	andy.shevchenko, linux-pm, devicetree, linux-iio

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

Hi,

On Sun, Sep 25, 2022 at 11:26:24AM +0200, saravanan sekar wrote:
> On 11/09/22 15:31, Sebastian Reichel wrote:
> > On Wed, Jun 15, 2022 at 04:53:56PM +0200, Saravanan Sekar wrote:
> > > 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>
> > > ---
> > > [...]
> > >   	psy_cfg.drv_data = charger;
> > > -	psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
> > > +	if (charger->chip_info->has_impedance)
> > > +		psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
> > > +
> > > +	if (charger->chip_info->has_fast_charge)
> > > +		psy_cfg.attr_grp = mp2733_charger_sysfs_groups;
> > > +
> > >   	charger->battery = devm_power_supply_register(dev,
> > >   					 &mp2629_battery_desc, &psy_cfg);
> > >   	if (IS_ERR(charger->battery)) {
> > 
> > Instead of having has_impedance and has_fast_charge feature
> > flag that are mutual exclusive, store the device type and
> > use if/else or switch statement to chose the correct attr_grp.
> 
> these flags are not really mutual exclusive, limitation only for
> application between mp2629 and mp2629. In future another chipset on
> same series shall have both or none, so I would consider to control
> flags with functionality rather than chipset!
> 
> Please feedback if still I have to consider your proposal.

I'm fine with this being flag based, but your code assumes that the
flags are mutual exclusive, since psy_cfg.attr_grp is overwritten.
This is bad style and needs to be fixed:

+       if (charger->chip_info->has_impedance)
+               psy_cfg.attr_grp = mp2629_charger_sysfs_groups;
+
+       if (charger->chip_info->has_fast_charge)
+               psy_cfg.attr_grp = mp2733_charger_sysfs_groups;

-- Sebastian

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

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

end of thread, other threads:[~2022-10-01 21:05 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-15 14:53 [PATCH v3 0/6] Add support for mp2733 battery charger Saravanan Sekar
2022-06-15 14:53 ` [PATCH v3 1/6] iio: adc: mp2629: fix wrong comparison of channel Saravanan Sekar
2022-06-18 16:23   ` Jonathan Cameron
2022-06-18 17:27     ` saravanan sekar
2022-06-15 14:53 ` [PATCH v3 2/6] dt-bindings: mfd: Add mp2733 compatible Saravanan Sekar
2022-06-27 14:45   ` Lee Jones
2022-07-01 21:32     ` Rob Herring
2022-07-04  8:53       ` Lee Jones
2022-06-15 14:53 ` [PATCH v3 3/6] mfd: mp2629: Add support for mps mp2733 battery charger Saravanan Sekar
2022-06-27 12:36   ` Lee Jones
2022-06-15 14:53 ` [PATCH v3 4/6] iio: adc: mp2629: restrict input voltage mask for mp2629 Saravanan Sekar
2022-06-18 16:19   ` Jonathan Cameron
2022-06-15 14:53 ` [PATCH v3 5/6] power: supply: Add support for mp2733 battery charger Saravanan Sekar
2022-09-11 13:31   ` Sebastian Reichel
2022-09-25  9:26     ` saravanan sekar
2022-10-01 21:05       ` Sebastian Reichel
2022-06-15 14:53 ` [PATCH v3 6/6] power: supply: mp2629: Add USB fast charge settings Saravanan Sekar
2022-07-21 15:50 ` [PATCH v3 0/6] Add support for mp2733 battery charger saravanan sekar
2022-07-22  8:14   ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).