Linux-PM Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible
@ 2020-07-29 18:31 Dan Murphy
  2020-07-29 18:31 ` [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor Dan Murphy
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Dan Murphy @ 2020-07-29 18:31 UTC (permalink / raw)
  To: sre, afd, pali; +Cc: linux-pm, linux-kernel, devicetree, robh, Dan Murphy

Add the Texas Instruments bq27z561 battery monitor to the bq27xxx
binding.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
index 03d1020a2e47..0aa33590ac24 100644
--- a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
+++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
@@ -49,6 +49,7 @@ properties:
       - ti,bq27426
       - ti,bq27441
       - ti,bq27621
+      - ti,bq27z561
 
   reg:
     maxItems: 1
-- 
2.28.0


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

* [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor
  2020-07-29 18:31 [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Dan Murphy
@ 2020-07-29 18:31 ` Dan Murphy
  2020-07-29 20:37   ` Sebastian Reichel
  2020-07-29 18:31 ` [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible Dan Murphy
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Dan Murphy @ 2020-07-29 18:31 UTC (permalink / raw)
  To: sre, afd, pali; +Cc: linux-pm, linux-kernel, devicetree, robh, Dan Murphy

Add the Texas Instruments BQ27Z561 battery monitor.  The register address
map is laid out the same as compared to other devices within the file.
The battery status register has differing bits to determine if the
battery is full, discharging or dead.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 drivers/power/supply/bq27xxx_battery.c     | 68 +++++++++++++++++++++-
 drivers/power/supply/bq27xxx_battery_i2c.c |  2 +
 include/linux/power/bq27xxx_battery.h      |  1 +
 3 files changed, 70 insertions(+), 1 deletion(-)

diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
index acaafed037be..a05b9a2d112d 100644
--- a/drivers/power/supply/bq27xxx_battery.c
+++ b/drivers/power/supply/bq27xxx_battery.c
@@ -43,6 +43,7 @@
  * https://www.ti.com/product/bq27411-g1
  * https://www.ti.com/product/bq27441-g1
  * https://www.ti.com/product/bq27621-g1
+ * https://www.ti.com/product/bq27z561
  */
 
 #include <linux/device.h>
@@ -79,6 +80,11 @@
 #define BQ27000_FLAG_FC		BIT(5)
 #define BQ27000_FLAG_CHGS	BIT(7) /* Charge state flag */
 
+/* BQ27Z561 has different layout for Flags register */
+#define BQ27Z561_FLAG_FDC	BIT(4) /* Battery fully discharged */
+#define BQ27Z561_FLAG_FC		BIT(5) /* Battery fully charged */
+#define BQ27Z561_FLAG_DIS_CH	BIT(6) /* Battery is discharging */
+
 /* control register params */
 #define BQ27XXX_SEALED			0x20
 #define BQ27XXX_SET_CFGUPDATE		0x13
@@ -431,12 +437,32 @@ static u8
 		[BQ27XXX_REG_DCAP] = 0x3c,
 		[BQ27XXX_REG_AP] = 0x18,
 		BQ27XXX_DM_REG_ROWS,
-	};
+	},
 #define bq27411_regs bq27421_regs
 #define bq27425_regs bq27421_regs
 #define bq27426_regs bq27421_regs
 #define bq27441_regs bq27421_regs
 #define bq27621_regs bq27421_regs
+	bq27z561_regs[BQ27XXX_REG_MAX] = {
+		[BQ27XXX_REG_CTRL] = 0x00,
+		[BQ27XXX_REG_TEMP] = 0x06,
+		[BQ27XXX_REG_INT_TEMP] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_VOLT] = 0x08,
+		[BQ27XXX_REG_AI] = 0x14,
+		[BQ27XXX_REG_FLAGS] = 0x0a,
+		[BQ27XXX_REG_TTE] = 0x16,
+		[BQ27XXX_REG_TTF] = 0x18,
+		[BQ27XXX_REG_TTES] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_TTECP] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_NAC] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_FCC] = 0x12,
+		[BQ27XXX_REG_CYCT] = 0x2a,
+		[BQ27XXX_REG_AE] = 0x22,
+		[BQ27XXX_REG_SOC] = 0x2c,
+		[BQ27XXX_REG_DCAP] = 0x3c,
+		[BQ27XXX_REG_AP] = 0x22,
+		BQ27XXX_DM_REG_ROWS,
+	};
 
 static enum power_supply_property bq27000_props[] = {
 	POWER_SUPPLY_PROP_STATUS,
@@ -672,6 +698,25 @@ static enum power_supply_property bq27421_props[] = {
 #define bq27441_props bq27421_props
 #define bq27621_props bq27421_props
 
+static enum power_supply_property bq27z561_props[] = {
+	POWER_SUPPLY_PROP_STATUS,
+	POWER_SUPPLY_PROP_PRESENT,
+	POWER_SUPPLY_PROP_VOLTAGE_NOW,
+	POWER_SUPPLY_PROP_CURRENT_NOW,
+	POWER_SUPPLY_PROP_CAPACITY,
+	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
+	POWER_SUPPLY_PROP_TEMP,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
+	POWER_SUPPLY_PROP_TECHNOLOGY,
+	POWER_SUPPLY_PROP_CHARGE_FULL,
+	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
+	POWER_SUPPLY_PROP_CYCLE_COUNT,
+	POWER_SUPPLY_PROP_POWER_AVG,
+	POWER_SUPPLY_PROP_HEALTH,
+	POWER_SUPPLY_PROP_MANUFACTURER,
+};
+
 struct bq27xxx_dm_reg {
 	u8 subclass_id;
 	u8 offset;
@@ -767,11 +812,14 @@ static struct bq27xxx_dm_reg bq27621_dm_regs[] = {
 #define bq27621_dm_regs 0
 #endif
 
+#define bq27z561_dm_regs 0
+
 #define BQ27XXX_O_ZERO	0x00000001
 #define BQ27XXX_O_OTDC	0x00000002 /* has OTC/OTD overtemperature flags */
 #define BQ27XXX_O_UTOT  0x00000004 /* has OT overtemperature flag */
 #define BQ27XXX_O_CFGUP	0x00000008
 #define BQ27XXX_O_RAM	0x00000010
+#define BQ27Z561_O_BITS	0x00000020
 
 #define BQ27XXX_DATA(ref, key, opt) {		\
 	.opts = (opt),				\
@@ -816,6 +864,7 @@ static struct {
 	[BQ27426]   = BQ27XXX_DATA(bq27426,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
 	[BQ27441]   = BQ27XXX_DATA(bq27441,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
 	[BQ27621]   = BQ27XXX_DATA(bq27621,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
+	[BQ27Z561]  = BQ27XXX_DATA(bq27z561,  0         , BQ27Z561_O_BITS),
 };
 
 static DEFINE_MUTEX(bq27xxx_list_lock);
@@ -1551,6 +1600,8 @@ static bool bq27xxx_battery_dead(struct bq27xxx_device_info *di, u16 flags)
 {
 	if (di->opts & BQ27XXX_O_ZERO)
 		return flags & (BQ27000_FLAG_EDV1 | BQ27000_FLAG_EDVF);
+	else if (di->opts & BQ27Z561_O_BITS)
+		return flags & BQ27Z561_FLAG_FDC;
 	else
 		return flags & (BQ27XXX_FLAG_SOC1 | BQ27XXX_FLAG_SOCF);
 }
@@ -1595,6 +1646,7 @@ void bq27xxx_battery_update(struct bq27xxx_device_info *di)
 				cache.time_to_empty_avg = bq27xxx_battery_read_time(di, BQ27XXX_REG_TTECP);
 			if (di->regs[BQ27XXX_REG_TTF] != INVALID_REG_ADDR)
 				cache.time_to_full = bq27xxx_battery_read_time(di, BQ27XXX_REG_TTF);
+
 			cache.charge_full = bq27xxx_battery_read_fcc(di);
 			cache.capacity = bq27xxx_battery_read_soc(di);
 			if (di->regs[BQ27XXX_REG_AE] != INVALID_REG_ADDR)
@@ -1682,6 +1734,13 @@ static int bq27xxx_battery_status(struct bq27xxx_device_info *di,
 			status = POWER_SUPPLY_STATUS_NOT_CHARGING;
 		else
 			status = POWER_SUPPLY_STATUS_DISCHARGING;
+	} else if (di->opts & BQ27Z561_O_BITS) {
+		if (di->cache.flags & BQ27Z561_FLAG_FC)
+			status = POWER_SUPPLY_STATUS_FULL;
+		else if (di->cache.flags & BQ27Z561_FLAG_DIS_CH)
+			status = POWER_SUPPLY_STATUS_DISCHARGING;
+		else
+			status = POWER_SUPPLY_STATUS_CHARGING;
 	} else {
 		if (di->cache.flags & BQ27XXX_FLAG_FC)
 			status = POWER_SUPPLY_STATUS_FULL;
@@ -1710,6 +1769,13 @@ static int bq27xxx_battery_capacity_level(struct bq27xxx_device_info *di,
 			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
 		else
 			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
+	} else if (di->opts & BQ27Z561_O_BITS) {
+		if (di->cache.flags & BQ27Z561_FLAG_FC)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
+		else if (di->cache.flags & BQ27Z561_FLAG_FDC)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
+		else
+			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
 	} else {
 		if (di->cache.flags & BQ27XXX_FLAG_FC)
 			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c
index 8e114a7abfc9..15f4e75786ab 100644
--- a/drivers/power/supply/bq27xxx_battery_i2c.c
+++ b/drivers/power/supply/bq27xxx_battery_i2c.c
@@ -253,6 +253,7 @@ static const struct i2c_device_id bq27xxx_i2c_id_table[] = {
 	{ "bq27426", BQ27426 },
 	{ "bq27441", BQ27441 },
 	{ "bq27621", BQ27621 },
+	{ "bq27z561", BQ27Z561 },
 	{},
 };
 MODULE_DEVICE_TABLE(i2c, bq27xxx_i2c_id_table);
@@ -286,6 +287,7 @@ static const struct of_device_id bq27xxx_battery_i2c_of_match_table[] = {
 	{ .compatible = "ti,bq27426" },
 	{ .compatible = "ti,bq27441" },
 	{ .compatible = "ti,bq27621" },
+	{ .compatible = "ti,bq27z561" },
 	{},
 };
 MODULE_DEVICE_TABLE(of, bq27xxx_battery_i2c_of_match_table);
diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h
index 507c5e214c42..1f6ea5d5063d 100644
--- a/include/linux/power/bq27xxx_battery.h
+++ b/include/linux/power/bq27xxx_battery.h
@@ -30,6 +30,7 @@ enum bq27xxx_chip {
 	BQ27426,
 	BQ27441,
 	BQ27621,
+	BQ27Z561,
 };
 
 struct bq27xxx_device_info;
-- 
2.28.0


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

* [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible
  2020-07-29 18:31 [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Dan Murphy
  2020-07-29 18:31 ` [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor Dan Murphy
@ 2020-07-29 18:31 ` Dan Murphy
  2020-07-29 20:38   ` Sebastian Reichel
  2020-07-29 18:31 ` [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor Dan Murphy
  2020-07-29 20:37 ` [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Sebastian Reichel
  3 siblings, 1 reply; 8+ messages in thread
From: Dan Murphy @ 2020-07-29 18:31 UTC (permalink / raw)
  To: sre, afd, pali; +Cc: linux-pm, linux-kernel, devicetree, robh, Dan Murphy

Add the Texas Instruments bq28z610 battery monitor to the bq27xxx
binding.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 Documentation/devicetree/bindings/power/supply/bq27xxx.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
index 0aa33590ac24..82f682705f44 100644
--- a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
+++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
@@ -50,6 +50,7 @@ properties:
       - ti,bq27441
       - ti,bq27621
       - ti,bq27z561
+      - ti,bq28z610
 
   reg:
     maxItems: 1
-- 
2.28.0


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

* [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor
  2020-07-29 18:31 [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Dan Murphy
  2020-07-29 18:31 ` [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor Dan Murphy
  2020-07-29 18:31 ` [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible Dan Murphy
@ 2020-07-29 18:31 ` Dan Murphy
  2020-07-29 20:38   ` Sebastian Reichel
  2020-07-29 20:37 ` [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Sebastian Reichel
  3 siblings, 1 reply; 8+ messages in thread
From: Dan Murphy @ 2020-07-29 18:31 UTC (permalink / raw)
  To: sre, afd, pali; +Cc: linux-pm, linux-kernel, devicetree, robh, Dan Murphy

Add the Texas Instruments BQ28z610 battery monitor.
The register address map is laid out the same as compared to other
devices within the file.

The battery status register bits are similar to the bq27z561 but they
are different compared to other fuel gauge devices within this file.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 drivers/power/supply/bq27xxx_battery.c     | 42 ++++++++++++++++++++++
 drivers/power/supply/bq27xxx_battery_i2c.c |  2 ++
 include/linux/power/bq27xxx_battery.h      |  1 +
 3 files changed, 45 insertions(+)

diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
index a05b9a2d112d..a123f6e21f08 100644
--- a/drivers/power/supply/bq27xxx_battery.c
+++ b/drivers/power/supply/bq27xxx_battery.c
@@ -44,6 +44,7 @@
  * https://www.ti.com/product/bq27441-g1
  * https://www.ti.com/product/bq27621-g1
  * https://www.ti.com/product/bq27z561
+ * https://www.ti.com/product/bq28z610
  */
 
 #include <linux/device.h>
@@ -462,6 +463,26 @@ static u8
 		[BQ27XXX_REG_DCAP] = 0x3c,
 		[BQ27XXX_REG_AP] = 0x22,
 		BQ27XXX_DM_REG_ROWS,
+	},
+	bq28z610_regs[BQ27XXX_REG_MAX] = {
+		[BQ27XXX_REG_CTRL] = 0x00,
+		[BQ27XXX_REG_TEMP] = 0x06,
+		[BQ27XXX_REG_INT_TEMP] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_VOLT] = 0x08,
+		[BQ27XXX_REG_AI] = 0x14,
+		[BQ27XXX_REG_FLAGS] = 0x0a,
+		[BQ27XXX_REG_TTE] = 0x16,
+		[BQ27XXX_REG_TTF] = 0x18,
+		[BQ27XXX_REG_TTES] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_TTECP] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_NAC] = INVALID_REG_ADDR,
+		[BQ27XXX_REG_FCC] = 0x12,
+		[BQ27XXX_REG_CYCT] = 0x2a,
+		[BQ27XXX_REG_AE] = 0x22,
+		[BQ27XXX_REG_SOC] = 0x2c,
+		[BQ27XXX_REG_DCAP] = 0x3c,
+		[BQ27XXX_REG_AP] = 0x22,
+		BQ27XXX_DM_REG_ROWS,
 	};
 
 static enum power_supply_property bq27000_props[] = {
@@ -717,6 +738,25 @@ static enum power_supply_property bq27z561_props[] = {
 	POWER_SUPPLY_PROP_MANUFACTURER,
 };
 
+static enum power_supply_property bq28z610_props[] = {
+	POWER_SUPPLY_PROP_STATUS,
+	POWER_SUPPLY_PROP_PRESENT,
+	POWER_SUPPLY_PROP_VOLTAGE_NOW,
+	POWER_SUPPLY_PROP_CURRENT_NOW,
+	POWER_SUPPLY_PROP_CAPACITY,
+	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
+	POWER_SUPPLY_PROP_TEMP,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
+	POWER_SUPPLY_PROP_TECHNOLOGY,
+	POWER_SUPPLY_PROP_CHARGE_FULL,
+	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
+	POWER_SUPPLY_PROP_CYCLE_COUNT,
+	POWER_SUPPLY_PROP_POWER_AVG,
+	POWER_SUPPLY_PROP_HEALTH,
+	POWER_SUPPLY_PROP_MANUFACTURER,
+};
+
 struct bq27xxx_dm_reg {
 	u8 subclass_id;
 	u8 offset;
@@ -813,6 +853,7 @@ static struct bq27xxx_dm_reg bq27621_dm_regs[] = {
 #endif
 
 #define bq27z561_dm_regs 0
+#define bq28z610_dm_regs 0
 
 #define BQ27XXX_O_ZERO	0x00000001
 #define BQ27XXX_O_OTDC	0x00000002 /* has OTC/OTD overtemperature flags */
@@ -865,6 +906,7 @@ static struct {
 	[BQ27441]   = BQ27XXX_DATA(bq27441,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
 	[BQ27621]   = BQ27XXX_DATA(bq27621,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
 	[BQ27Z561]  = BQ27XXX_DATA(bq27z561,  0         , BQ27Z561_O_BITS),
+	[BQ28Z610]  = BQ27XXX_DATA(bq28z610,  0         , BQ27Z561_O_BITS),
 };
 
 static DEFINE_MUTEX(bq27xxx_list_lock);
diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c
index 15f4e75786ab..ab02456d69e5 100644
--- a/drivers/power/supply/bq27xxx_battery_i2c.c
+++ b/drivers/power/supply/bq27xxx_battery_i2c.c
@@ -254,6 +254,7 @@ static const struct i2c_device_id bq27xxx_i2c_id_table[] = {
 	{ "bq27441", BQ27441 },
 	{ "bq27621", BQ27621 },
 	{ "bq27z561", BQ27Z561 },
+	{ "bq28z610", BQ28Z610 },
 	{},
 };
 MODULE_DEVICE_TABLE(i2c, bq27xxx_i2c_id_table);
@@ -288,6 +289,7 @@ static const struct of_device_id bq27xxx_battery_i2c_of_match_table[] = {
 	{ .compatible = "ti,bq27441" },
 	{ .compatible = "ti,bq27621" },
 	{ .compatible = "ti,bq27z561" },
+	{ .compatible = "ti,bq28z610" },
 	{},
 };
 MODULE_DEVICE_TABLE(of, bq27xxx_battery_i2c_of_match_table);
diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h
index 1f6ea5d5063d..987d9652aa4e 100644
--- a/include/linux/power/bq27xxx_battery.h
+++ b/include/linux/power/bq27xxx_battery.h
@@ -31,6 +31,7 @@ enum bq27xxx_chip {
 	BQ27441,
 	BQ27621,
 	BQ27Z561,
+	BQ28Z610,
 };
 
 struct bq27xxx_device_info;
-- 
2.28.0


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

* Re: [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible
  2020-07-29 18:31 [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Dan Murphy
                   ` (2 preceding siblings ...)
  2020-07-29 18:31 ` [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor Dan Murphy
@ 2020-07-29 20:37 ` Sebastian Reichel
  3 siblings, 0 replies; 8+ messages in thread
From: Sebastian Reichel @ 2020-07-29 20:37 UTC (permalink / raw)
  To: Dan Murphy; +Cc: afd, pali, linux-pm, linux-kernel, devicetree, robh


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

Hi,

On Wed, Jul 29, 2020 at 01:31:42PM -0500, Dan Murphy wrote:
> Add the Texas Instruments bq27z561 battery monitor to the bq27xxx
> binding.
> 
> Acked-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

Thanks, queued.

-- Sebastian

>  Documentation/devicetree/bindings/power/supply/bq27xxx.yaml | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> index 03d1020a2e47..0aa33590ac24 100644
> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> +++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> @@ -49,6 +49,7 @@ properties:
>        - ti,bq27426
>        - ti,bq27441
>        - ti,bq27621
> +      - ti,bq27z561
>  
>    reg:
>      maxItems: 1
> -- 
> 2.28.0
> 

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

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

* Re: [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor
  2020-07-29 18:31 ` [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor Dan Murphy
@ 2020-07-29 20:37   ` Sebastian Reichel
  0 siblings, 0 replies; 8+ messages in thread
From: Sebastian Reichel @ 2020-07-29 20:37 UTC (permalink / raw)
  To: Dan Murphy; +Cc: afd, pali, linux-pm, linux-kernel, devicetree, robh


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

Hi,

On Wed, Jul 29, 2020 at 01:31:43PM -0500, Dan Murphy wrote:
> Add the Texas Instruments BQ27Z561 battery monitor.  The register address
> map is laid out the same as compared to other devices within the file.
> The battery status register has differing bits to determine if the
> battery is full, discharging or dead.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/bq27xxx_battery.c     | 68 +++++++++++++++++++++-
>  drivers/power/supply/bq27xxx_battery_i2c.c |  2 +
>  include/linux/power/bq27xxx_battery.h      |  1 +
>  3 files changed, 70 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
> index acaafed037be..a05b9a2d112d 100644
> --- a/drivers/power/supply/bq27xxx_battery.c
> +++ b/drivers/power/supply/bq27xxx_battery.c
> @@ -43,6 +43,7 @@
>   * https://www.ti.com/product/bq27411-g1
>   * https://www.ti.com/product/bq27441-g1
>   * https://www.ti.com/product/bq27621-g1
> + * https://www.ti.com/product/bq27z561
>   */
>  
>  #include <linux/device.h>
> @@ -79,6 +80,11 @@
>  #define BQ27000_FLAG_FC		BIT(5)
>  #define BQ27000_FLAG_CHGS	BIT(7) /* Charge state flag */
>  
> +/* BQ27Z561 has different layout for Flags register */
> +#define BQ27Z561_FLAG_FDC	BIT(4) /* Battery fully discharged */
> +#define BQ27Z561_FLAG_FC		BIT(5) /* Battery fully charged */
> +#define BQ27Z561_FLAG_DIS_CH	BIT(6) /* Battery is discharging */
> +
>  /* control register params */
>  #define BQ27XXX_SEALED			0x20
>  #define BQ27XXX_SET_CFGUPDATE		0x13
> @@ -431,12 +437,32 @@ static u8
>  		[BQ27XXX_REG_DCAP] = 0x3c,
>  		[BQ27XXX_REG_AP] = 0x18,
>  		BQ27XXX_DM_REG_ROWS,
> -	};
> +	},
>  #define bq27411_regs bq27421_regs
>  #define bq27425_regs bq27421_regs
>  #define bq27426_regs bq27421_regs
>  #define bq27441_regs bq27421_regs
>  #define bq27621_regs bq27421_regs
> +	bq27z561_regs[BQ27XXX_REG_MAX] = {
> +		[BQ27XXX_REG_CTRL] = 0x00,
> +		[BQ27XXX_REG_TEMP] = 0x06,
> +		[BQ27XXX_REG_INT_TEMP] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_VOLT] = 0x08,
> +		[BQ27XXX_REG_AI] = 0x14,
> +		[BQ27XXX_REG_FLAGS] = 0x0a,
> +		[BQ27XXX_REG_TTE] = 0x16,
> +		[BQ27XXX_REG_TTF] = 0x18,
> +		[BQ27XXX_REG_TTES] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_TTECP] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_NAC] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_FCC] = 0x12,
> +		[BQ27XXX_REG_CYCT] = 0x2a,
> +		[BQ27XXX_REG_AE] = 0x22,
> +		[BQ27XXX_REG_SOC] = 0x2c,
> +		[BQ27XXX_REG_DCAP] = 0x3c,
> +		[BQ27XXX_REG_AP] = 0x22,
> +		BQ27XXX_DM_REG_ROWS,
> +	};
>  
>  static enum power_supply_property bq27000_props[] = {
>  	POWER_SUPPLY_PROP_STATUS,
> @@ -672,6 +698,25 @@ static enum power_supply_property bq27421_props[] = {
>  #define bq27441_props bq27421_props
>  #define bq27621_props bq27421_props
>  
> +static enum power_supply_property bq27z561_props[] = {
> +	POWER_SUPPLY_PROP_STATUS,
> +	POWER_SUPPLY_PROP_PRESENT,
> +	POWER_SUPPLY_PROP_VOLTAGE_NOW,
> +	POWER_SUPPLY_PROP_CURRENT_NOW,
> +	POWER_SUPPLY_PROP_CAPACITY,
> +	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
> +	POWER_SUPPLY_PROP_TEMP,
> +	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
> +	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
> +	POWER_SUPPLY_PROP_TECHNOLOGY,
> +	POWER_SUPPLY_PROP_CHARGE_FULL,
> +	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
> +	POWER_SUPPLY_PROP_CYCLE_COUNT,
> +	POWER_SUPPLY_PROP_POWER_AVG,
> +	POWER_SUPPLY_PROP_HEALTH,
> +	POWER_SUPPLY_PROP_MANUFACTURER,
> +};
> +
>  struct bq27xxx_dm_reg {
>  	u8 subclass_id;
>  	u8 offset;
> @@ -767,11 +812,14 @@ static struct bq27xxx_dm_reg bq27621_dm_regs[] = {
>  #define bq27621_dm_regs 0
>  #endif
>  
> +#define bq27z561_dm_regs 0
> +
>  #define BQ27XXX_O_ZERO	0x00000001
>  #define BQ27XXX_O_OTDC	0x00000002 /* has OTC/OTD overtemperature flags */
>  #define BQ27XXX_O_UTOT  0x00000004 /* has OT overtemperature flag */
>  #define BQ27XXX_O_CFGUP	0x00000008
>  #define BQ27XXX_O_RAM	0x00000010
> +#define BQ27Z561_O_BITS	0x00000020
>  
>  #define BQ27XXX_DATA(ref, key, opt) {		\
>  	.opts = (opt),				\
> @@ -816,6 +864,7 @@ static struct {
>  	[BQ27426]   = BQ27XXX_DATA(bq27426,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
>  	[BQ27441]   = BQ27XXX_DATA(bq27441,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
>  	[BQ27621]   = BQ27XXX_DATA(bq27621,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
> +	[BQ27Z561]  = BQ27XXX_DATA(bq27z561,  0         , BQ27Z561_O_BITS),
>  };
>  
>  static DEFINE_MUTEX(bq27xxx_list_lock);
> @@ -1551,6 +1600,8 @@ static bool bq27xxx_battery_dead(struct bq27xxx_device_info *di, u16 flags)
>  {
>  	if (di->opts & BQ27XXX_O_ZERO)
>  		return flags & (BQ27000_FLAG_EDV1 | BQ27000_FLAG_EDVF);
> +	else if (di->opts & BQ27Z561_O_BITS)
> +		return flags & BQ27Z561_FLAG_FDC;
>  	else
>  		return flags & (BQ27XXX_FLAG_SOC1 | BQ27XXX_FLAG_SOCF);
>  }
> @@ -1595,6 +1646,7 @@ void bq27xxx_battery_update(struct bq27xxx_device_info *di)
>  				cache.time_to_empty_avg = bq27xxx_battery_read_time(di, BQ27XXX_REG_TTECP);
>  			if (di->regs[BQ27XXX_REG_TTF] != INVALID_REG_ADDR)
>  				cache.time_to_full = bq27xxx_battery_read_time(di, BQ27XXX_REG_TTF);
> +
>  			cache.charge_full = bq27xxx_battery_read_fcc(di);
>  			cache.capacity = bq27xxx_battery_read_soc(di);
>  			if (di->regs[BQ27XXX_REG_AE] != INVALID_REG_ADDR)
> @@ -1682,6 +1734,13 @@ static int bq27xxx_battery_status(struct bq27xxx_device_info *di,
>  			status = POWER_SUPPLY_STATUS_NOT_CHARGING;
>  		else
>  			status = POWER_SUPPLY_STATUS_DISCHARGING;
> +	} else if (di->opts & BQ27Z561_O_BITS) {
> +		if (di->cache.flags & BQ27Z561_FLAG_FC)
> +			status = POWER_SUPPLY_STATUS_FULL;
> +		else if (di->cache.flags & BQ27Z561_FLAG_DIS_CH)
> +			status = POWER_SUPPLY_STATUS_DISCHARGING;
> +		else
> +			status = POWER_SUPPLY_STATUS_CHARGING;
>  	} else {
>  		if (di->cache.flags & BQ27XXX_FLAG_FC)
>  			status = POWER_SUPPLY_STATUS_FULL;
> @@ -1710,6 +1769,13 @@ static int bq27xxx_battery_capacity_level(struct bq27xxx_device_info *di,
>  			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
>  		else
>  			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
> +	} else if (di->opts & BQ27Z561_O_BITS) {
> +		if (di->cache.flags & BQ27Z561_FLAG_FC)
> +			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
> +		else if (di->cache.flags & BQ27Z561_FLAG_FDC)
> +			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
> +		else
> +			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
>  	} else {
>  		if (di->cache.flags & BQ27XXX_FLAG_FC)
>  			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
> diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c
> index 8e114a7abfc9..15f4e75786ab 100644
> --- a/drivers/power/supply/bq27xxx_battery_i2c.c
> +++ b/drivers/power/supply/bq27xxx_battery_i2c.c
> @@ -253,6 +253,7 @@ static const struct i2c_device_id bq27xxx_i2c_id_table[] = {
>  	{ "bq27426", BQ27426 },
>  	{ "bq27441", BQ27441 },
>  	{ "bq27621", BQ27621 },
> +	{ "bq27z561", BQ27Z561 },
>  	{},
>  };
>  MODULE_DEVICE_TABLE(i2c, bq27xxx_i2c_id_table);
> @@ -286,6 +287,7 @@ static const struct of_device_id bq27xxx_battery_i2c_of_match_table[] = {
>  	{ .compatible = "ti,bq27426" },
>  	{ .compatible = "ti,bq27441" },
>  	{ .compatible = "ti,bq27621" },
> +	{ .compatible = "ti,bq27z561" },
>  	{},
>  };
>  MODULE_DEVICE_TABLE(of, bq27xxx_battery_i2c_of_match_table);
> diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h
> index 507c5e214c42..1f6ea5d5063d 100644
> --- a/include/linux/power/bq27xxx_battery.h
> +++ b/include/linux/power/bq27xxx_battery.h
> @@ -30,6 +30,7 @@ enum bq27xxx_chip {
>  	BQ27426,
>  	BQ27441,
>  	BQ27621,
> +	BQ27Z561,
>  };
>  
>  struct bq27xxx_device_info;
> -- 
> 2.28.0
> 

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

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

* Re: [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible
  2020-07-29 18:31 ` [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible Dan Murphy
@ 2020-07-29 20:38   ` Sebastian Reichel
  0 siblings, 0 replies; 8+ messages in thread
From: Sebastian Reichel @ 2020-07-29 20:38 UTC (permalink / raw)
  To: Dan Murphy; +Cc: afd, pali, linux-pm, linux-kernel, devicetree, robh


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

Hi,

On Wed, Jul 29, 2020 at 01:31:44PM -0500, Dan Murphy wrote:
> Add the Texas Instruments bq28z610 battery monitor to the bq27xxx
> binding.
> 
> Acked-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

Thanks, queued.

-- Sebastian

>  Documentation/devicetree/bindings/power/supply/bq27xxx.yaml | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> index 0aa33590ac24..82f682705f44 100644
> --- a/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> +++ b/Documentation/devicetree/bindings/power/supply/bq27xxx.yaml
> @@ -50,6 +50,7 @@ properties:
>        - ti,bq27441
>        - ti,bq27621
>        - ti,bq27z561
> +      - ti,bq28z610
>  
>    reg:
>      maxItems: 1
> -- 
> 2.28.0
> 

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

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

* Re: [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor
  2020-07-29 18:31 ` [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor Dan Murphy
@ 2020-07-29 20:38   ` Sebastian Reichel
  0 siblings, 0 replies; 8+ messages in thread
From: Sebastian Reichel @ 2020-07-29 20:38 UTC (permalink / raw)
  To: Dan Murphy; +Cc: afd, pali, linux-pm, linux-kernel, devicetree, robh


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

Hi,

On Wed, Jul 29, 2020 at 01:31:45PM -0500, Dan Murphy wrote:
> Add the Texas Instruments BQ28z610 battery monitor.
> The register address map is laid out the same as compared to other
> devices within the file.
> 
> The battery status register bits are similar to the bq27z561 but they
> are different compared to other fuel gauge devices within this file.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/bq27xxx_battery.c     | 42 ++++++++++++++++++++++
>  drivers/power/supply/bq27xxx_battery_i2c.c |  2 ++
>  include/linux/power/bq27xxx_battery.h      |  1 +
>  3 files changed, 45 insertions(+)
> 
> diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c
> index a05b9a2d112d..a123f6e21f08 100644
> --- a/drivers/power/supply/bq27xxx_battery.c
> +++ b/drivers/power/supply/bq27xxx_battery.c
> @@ -44,6 +44,7 @@
>   * https://www.ti.com/product/bq27441-g1
>   * https://www.ti.com/product/bq27621-g1
>   * https://www.ti.com/product/bq27z561
> + * https://www.ti.com/product/bq28z610
>   */
>  
>  #include <linux/device.h>
> @@ -462,6 +463,26 @@ static u8
>  		[BQ27XXX_REG_DCAP] = 0x3c,
>  		[BQ27XXX_REG_AP] = 0x22,
>  		BQ27XXX_DM_REG_ROWS,
> +	},
> +	bq28z610_regs[BQ27XXX_REG_MAX] = {
> +		[BQ27XXX_REG_CTRL] = 0x00,
> +		[BQ27XXX_REG_TEMP] = 0x06,
> +		[BQ27XXX_REG_INT_TEMP] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_VOLT] = 0x08,
> +		[BQ27XXX_REG_AI] = 0x14,
> +		[BQ27XXX_REG_FLAGS] = 0x0a,
> +		[BQ27XXX_REG_TTE] = 0x16,
> +		[BQ27XXX_REG_TTF] = 0x18,
> +		[BQ27XXX_REG_TTES] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_TTECP] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_NAC] = INVALID_REG_ADDR,
> +		[BQ27XXX_REG_FCC] = 0x12,
> +		[BQ27XXX_REG_CYCT] = 0x2a,
> +		[BQ27XXX_REG_AE] = 0x22,
> +		[BQ27XXX_REG_SOC] = 0x2c,
> +		[BQ27XXX_REG_DCAP] = 0x3c,
> +		[BQ27XXX_REG_AP] = 0x22,
> +		BQ27XXX_DM_REG_ROWS,
>  	};
>  
>  static enum power_supply_property bq27000_props[] = {
> @@ -717,6 +738,25 @@ static enum power_supply_property bq27z561_props[] = {
>  	POWER_SUPPLY_PROP_MANUFACTURER,
>  };
>  
> +static enum power_supply_property bq28z610_props[] = {
> +	POWER_SUPPLY_PROP_STATUS,
> +	POWER_SUPPLY_PROP_PRESENT,
> +	POWER_SUPPLY_PROP_VOLTAGE_NOW,
> +	POWER_SUPPLY_PROP_CURRENT_NOW,
> +	POWER_SUPPLY_PROP_CAPACITY,
> +	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
> +	POWER_SUPPLY_PROP_TEMP,
> +	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
> +	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
> +	POWER_SUPPLY_PROP_TECHNOLOGY,
> +	POWER_SUPPLY_PROP_CHARGE_FULL,
> +	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
> +	POWER_SUPPLY_PROP_CYCLE_COUNT,
> +	POWER_SUPPLY_PROP_POWER_AVG,
> +	POWER_SUPPLY_PROP_HEALTH,
> +	POWER_SUPPLY_PROP_MANUFACTURER,
> +};
> +
>  struct bq27xxx_dm_reg {
>  	u8 subclass_id;
>  	u8 offset;
> @@ -813,6 +853,7 @@ static struct bq27xxx_dm_reg bq27621_dm_regs[] = {
>  #endif
>  
>  #define bq27z561_dm_regs 0
> +#define bq28z610_dm_regs 0
>  
>  #define BQ27XXX_O_ZERO	0x00000001
>  #define BQ27XXX_O_OTDC	0x00000002 /* has OTC/OTD overtemperature flags */
> @@ -865,6 +906,7 @@ static struct {
>  	[BQ27441]   = BQ27XXX_DATA(bq27441,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
>  	[BQ27621]   = BQ27XXX_DATA(bq27621,   0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM),
>  	[BQ27Z561]  = BQ27XXX_DATA(bq27z561,  0         , BQ27Z561_O_BITS),
> +	[BQ28Z610]  = BQ27XXX_DATA(bq28z610,  0         , BQ27Z561_O_BITS),
>  };
>  
>  static DEFINE_MUTEX(bq27xxx_list_lock);
> diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c
> index 15f4e75786ab..ab02456d69e5 100644
> --- a/drivers/power/supply/bq27xxx_battery_i2c.c
> +++ b/drivers/power/supply/bq27xxx_battery_i2c.c
> @@ -254,6 +254,7 @@ static const struct i2c_device_id bq27xxx_i2c_id_table[] = {
>  	{ "bq27441", BQ27441 },
>  	{ "bq27621", BQ27621 },
>  	{ "bq27z561", BQ27Z561 },
> +	{ "bq28z610", BQ28Z610 },
>  	{},
>  };
>  MODULE_DEVICE_TABLE(i2c, bq27xxx_i2c_id_table);
> @@ -288,6 +289,7 @@ static const struct of_device_id bq27xxx_battery_i2c_of_match_table[] = {
>  	{ .compatible = "ti,bq27441" },
>  	{ .compatible = "ti,bq27621" },
>  	{ .compatible = "ti,bq27z561" },
> +	{ .compatible = "ti,bq28z610" },
>  	{},
>  };
>  MODULE_DEVICE_TABLE(of, bq27xxx_battery_i2c_of_match_table);
> diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h
> index 1f6ea5d5063d..987d9652aa4e 100644
> --- a/include/linux/power/bq27xxx_battery.h
> +++ b/include/linux/power/bq27xxx_battery.h
> @@ -31,6 +31,7 @@ enum bq27xxx_chip {
>  	BQ27441,
>  	BQ27621,
>  	BQ27Z561,
> +	BQ28Z610,
>  };
>  
>  struct bq27xxx_device_info;
> -- 
> 2.28.0
> 

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

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

end of thread, back to index

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-29 18:31 [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Dan Murphy
2020-07-29 18:31 ` [PATCH v6 2/4] power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor Dan Murphy
2020-07-29 20:37   ` Sebastian Reichel
2020-07-29 18:31 ` [PATCH v6 3/4] dt-bindings: power: Add BQ28z610 compatible Dan Murphy
2020-07-29 20:38   ` Sebastian Reichel
2020-07-29 18:31 ` [PATCH v6 4/4] power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor Dan Murphy
2020-07-29 20:38   ` Sebastian Reichel
2020-07-29 20:37 ` [PATCH v6 1/4] dt-bindings: power: Add BQ27Z561 compatible Sebastian Reichel

Linux-PM Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-pm/0 linux-pm/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-pm linux-pm/ https://lore.kernel.org/linux-pm \
		linux-pm@vger.kernel.org
	public-inbox-index linux-pm

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-pm


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git