linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver
@ 2019-04-18 14:46 Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 01/10] dt-bindings: olpc_battery: Add XO-1.5 battery Lubomir Rintel
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel

Hello,

This patch set modifies the OLPC battery driver so that it could eventually
be used on an Arm-based OLPC XO 1.75 machine.

Compared to the previous version, it addresses review comments for the
x86 platform parts from Thomas Gleixner. Details in individual patches'
change logs.

I've failed to version the previous iteration of the set that should've
been "v6" for the change logs to make sense. Sorry for that.

Thank you,
Lubo





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

* [PATCH v7 01/10] dt-bindings: olpc_battery: Add XO-1.5 battery
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 02/10] x86/platform/olpc: Don't split string literals when fixing up the DT Lubomir Rintel
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Rob Herring,
	Pavel Machek, Sebastian Reichel

The XO-1 and XO-1.5 batteries apparently differ in an ability to report
ambient temperature.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v1:
- Collected Reviewed-by and Acked-by tags

 Documentation/devicetree/bindings/power/supply/olpc_battery.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/power/supply/olpc_battery.txt b/Documentation/devicetree/bindings/power/supply/olpc_battery.txt
index c8901b3992d9..8d87d6b35a98 100644
--- a/Documentation/devicetree/bindings/power/supply/olpc_battery.txt
+++ b/Documentation/devicetree/bindings/power/supply/olpc_battery.txt
@@ -2,4 +2,4 @@ OLPC battery
 ~~~~~~~~~~~~
 
 Required properties:
-  - compatible : "olpc,xo1-battery"
+  - compatible : "olpc,xo1-battery" or "olpc,xo1.5-battery"
-- 
2.21.0


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

* [PATCH v7 02/10] x86/platform/olpc: Don't split string literals when fixing up the DT
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 01/10] dt-bindings: olpc_battery: Add XO-1.5 battery Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 03/10] x86/platform/olpc: Trivial code move in DT fixup Lubomir Rintel
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Thomas Gleixner

It was pointed out in a review, and checkpatch.pl complains about this.
Breaking it down into multiple ofw evaluations works just as well and
reads better.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Thomas Gleixner <tglx@linutronix.de>

---
Changes since v6:
- s/perhaps even reads better/reads better/ in the commit message
- Collect ack from Thomas Gleixner
- Fix the subject prefix to "x86/platform/olpc:"

Changes since v5:
- This patch was split off from "x86, olpc: Use a correct version when
  making up a battery node"

 arch/x86/platform/olpc/olpc_dt.c | 33 ++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
index ac9e7bf49b66..87e1d81684c6 100644
--- a/arch/x86/platform/olpc/olpc_dt.c
+++ b/arch/x86/platform/olpc/olpc_dt.c
@@ -242,9 +242,9 @@ void __init olpc_dt_fixup(void)
 	pr_info("PROM DT: Old firmware detected, applying fixes\n");
 
 	/* Add olpc,xo1-battery compatible marker to battery node */
-	olpc_dt_interpret("\" /battery@0\" find-device"
-		" \" olpc,xo1-battery\" +compatible"
-		" device-end");
+	olpc_dt_interpret("\" /battery@0\" find-device");
+	olpc_dt_interpret("  \" olpc,xo1-battery\" +compatible");
+	olpc_dt_interpret("device-end");
 
 	board_rev = olpc_dt_get_board_revision();
 	if (!board_rev)
@@ -252,19 +252,24 @@ void __init olpc_dt_fixup(void)
 
 	if (board_rev >= olpc_board_pre(0xd0)) {
 		/* XO-1.5: add dcon device */
-		olpc_dt_interpret("\" /pci/display@1\" find-device"
-			" new-device"
-			" \" dcon\" device-name \" olpc,xo1-dcon\" +compatible"
-			" finish-device device-end");
+		olpc_dt_interpret("\" /pci/display@1\" find-device");
+		olpc_dt_interpret("  new-device");
+		olpc_dt_interpret("    \" dcon\" device-name");
+		olpc_dt_interpret("    \" olpc,xo1-dcon\" +compatible");
+		olpc_dt_interpret("  finish-device");
+		olpc_dt_interpret("device-end");
 	} else {
 		/* XO-1: add dcon device, mark RTC as olpc,xo1-rtc */
-		olpc_dt_interpret("\" /pci/display@1,1\" find-device"
-			" new-device"
-			" \" dcon\" device-name \" olpc,xo1-dcon\" +compatible"
-			" finish-device device-end"
-			" \" /rtc\" find-device"
-			" \" olpc,xo1-rtc\" +compatible"
-			" device-end");
+		olpc_dt_interpret("\" /pci/display@1,1\" find-device");
+		olpc_dt_interpret("  new-device");
+		olpc_dt_interpret("    \" dcon\" device-name");
+		olpc_dt_interpret("    \" olpc,xo1-dcon\" +compatible");
+		olpc_dt_interpret("  finish-device");
+		olpc_dt_interpret("device-end");
+
+		olpc_dt_interpret("\" /rtc\" find-device");
+		olpc_dt_interpret(" \" olpc,xo1-rtc\" +compatible");
+		olpc_dt_interpret("device-end");
 	}
 }
 
-- 
2.21.0


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

* [PATCH v7 03/10] x86/platform/olpc: Trivial code move in DT fixup
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 01/10] dt-bindings: olpc_battery: Add XO-1.5 battery Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 02/10] x86/platform/olpc: Don't split string literals when fixing up the DT Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 04/10] x86/platform/olpc: Use a correct version when making up a battery node Lubomir Rintel
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Thomas Gleixner

This makes the following patch more concise.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Thomas Gleixner <tglx@linutronix.de>

---
Changes since v6:
- Collect ack from Thomas Gleixner
- Fix the subject prefix to "x86/platform/olpc:"

Changes since v5:
- This patch was split off from "x86, olpc: Use a correct version when
  making up a battery node"

 arch/x86/platform/olpc/olpc_dt.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
index 87e1d81684c6..820236b511b3 100644
--- a/arch/x86/platform/olpc/olpc_dt.c
+++ b/arch/x86/platform/olpc/olpc_dt.c
@@ -241,11 +241,6 @@ void __init olpc_dt_fixup(void)
 
 	pr_info("PROM DT: Old firmware detected, applying fixes\n");
 
-	/* Add olpc,xo1-battery compatible marker to battery node */
-	olpc_dt_interpret("\" /battery@0\" find-device");
-	olpc_dt_interpret("  \" olpc,xo1-battery\" +compatible");
-	olpc_dt_interpret("device-end");
-
 	board_rev = olpc_dt_get_board_revision();
 	if (!board_rev)
 		return;
@@ -271,6 +266,11 @@ void __init olpc_dt_fixup(void)
 		olpc_dt_interpret(" \" olpc,xo1-rtc\" +compatible");
 		olpc_dt_interpret("device-end");
 	}
+
+	/* Add olpc,xo1-battery compatible marker to battery node */
+	olpc_dt_interpret("\" /battery@0\" find-device");
+	olpc_dt_interpret("  \" olpc,xo1-battery\" +compatible");
+	olpc_dt_interpret("device-end");
 }
 
 void __init olpc_dt_build_devicetree(void)
-- 
2.21.0


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

* [PATCH v7 04/10] x86/platform/olpc: Use a correct version when making up a battery node
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (2 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 03/10] x86/platform/olpc: Trivial code move in DT fixup Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 05/10] power: supply: olpc_battery: Use DT to get battery version Lubomir Rintel
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Pavel Machek,
	Thomas Gleixner

The XO-1 and XO-1.5 batteries apparently differ in an ability to report
ambient temperature. We need to use a different compatible string for the
XO-1.5 battery.

Previously olpc_dt_fixup() used the presence of the battery node's
compatible property to decide whether the DT is up to date. Now we need
to look for a particular value in the compatible string, to decide

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Thomas Gleixner <tglx@linutronix.de>

---
Changes since v6:
- s/od/of/ in the commit message
- Coalesce variables of the same type
- Fix block comment style
- Ack from Thomas Gleixner
- Fix the subject prefix to "x86/platform/olpc:"

Changes since v5:
- Split the "x86, olpc: Don't split string literals when fixing up the DT"
  and "x86, olpc: trivial code move in DT fixup" parts off from this
- Clarify some comments

Changes since v1:
- Avoid splitting string literals

 arch/x86/platform/olpc/olpc_dt.c | 64 +++++++++++++++++++++++++-------
 1 file changed, 50 insertions(+), 14 deletions(-)

diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
index 820236b511b3..0296c5b55e6f 100644
--- a/arch/x86/platform/olpc/olpc_dt.c
+++ b/arch/x86/platform/olpc/olpc_dt.c
@@ -220,10 +220,26 @@ static u32 __init olpc_dt_get_board_revision(void)
 	return be32_to_cpu(rev);
 }
 
+int olpc_dt_compatible_match(phandle node, const char *compat)
+{
+	char buf[64], *p;
+	int plen, len;
+
+	plen = olpc_dt_getproperty(node, "compatible", buf, sizeof(buf));
+	if (plen <= 0)
+		return 0;
+
+	len = strlen(compat);
+	for (p = buf; p < buf + plen; p += strlen(p) + 1) {
+		if (strcmp(p, compat) == 0)
+			return 1;
+	}
+
+	return 0;
+}
+
 void __init olpc_dt_fixup(void)
 {
-	int r;
-	char buf[64];
 	phandle node;
 	u32 board_rev;
 
@@ -231,22 +247,31 @@ void __init olpc_dt_fixup(void)
 	if (!node)
 		return;
 
-	/*
-	 * If the battery node has a compatible property, we are running a new
-	 * enough firmware and don't have fixups to make.
-	 */
-	r = olpc_dt_getproperty(node, "compatible", buf, sizeof(buf));
-	if (r > 0)
-		return;
-
-	pr_info("PROM DT: Old firmware detected, applying fixes\n");
-
 	board_rev = olpc_dt_get_board_revision();
 	if (!board_rev)
 		return;
 
 	if (board_rev >= olpc_board_pre(0xd0)) {
-		/* XO-1.5: add dcon device */
+		/* XO-1.5 */
+
+		if (olpc_dt_compatible_match(node, "olpc,xo1.5-battery"))
+			return;
+
+		/* Add olpc,xo1.5-battery compatible marker to battery node */
+		olpc_dt_interpret("\" /battery@0\" find-device");
+		olpc_dt_interpret("  \" olpc,xo1.5-battery\" +compatible");
+		olpc_dt_interpret("device-end");
+
+		if (olpc_dt_compatible_match(node, "olpc,xo1-battery")) {
+			/*
+			 * If we have a olpc,xo1-battery compatible, then we're
+			 * running a new enough firmware that already has
+			 * the dcon node.
+			 */
+			return;
+		}
+
+		/* Add dcon device */
 		olpc_dt_interpret("\" /pci/display@1\" find-device");
 		olpc_dt_interpret("  new-device");
 		olpc_dt_interpret("    \" dcon\" device-name");
@@ -254,7 +279,18 @@ void __init olpc_dt_fixup(void)
 		olpc_dt_interpret("  finish-device");
 		olpc_dt_interpret("device-end");
 	} else {
-		/* XO-1: add dcon device, mark RTC as olpc,xo1-rtc */
+		/* XO-1 */
+
+		if (olpc_dt_compatible_match(node, "olpc,xo1-battery")) {
+			/*
+			 * If we have a olpc,xo1-battery compatible, then we're
+			 * running a new enough firmware that already has
+			 * the dcon and RTC nodes.
+			 */
+			return;
+		}
+
+		/* Add dcon device, mark RTC as olpc,xo1-rtc */
 		olpc_dt_interpret("\" /pci/display@1,1\" find-device");
 		olpc_dt_interpret("  new-device");
 		olpc_dt_interpret("    \" dcon\" device-name");
-- 
2.21.0


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

* [PATCH v7 05/10] power: supply: olpc_battery: Use DT to get battery version
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (3 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 04/10] x86/platform/olpc: Use a correct version when making up a battery node Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 06/10] power: supply: olpc_battery: Move priv data to a struct Lubomir Rintel
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Andy Shevchenko,
	Pavel Machek, Sebastian Reichel

Avoid using the x86 OLPC platform specific call to get the board
version. That wouldn't work on FDT-based ARM MMP2 platform.

Add the XO 1.5 compatible string too. This is actually not completely
necessary as the battery nodes on XO 1.5 claim to be compatible with
"olpc,xo1-battery", but there are, in fact, differencies.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v5:
- Use of_device_is_compatible() instead of
  of_property_match_string("compatible")

Changes since v2:
- Clarify the XO 1 compatibility in the commit message.

Changes since v1:
- Sort the new include a bit higher

 drivers/power/supply/olpc_battery.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index 5a97e42a3547..3dcf5e19f329 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -14,6 +14,7 @@
 #include <linux/types.h>
 #include <linux/err.h>
 #include <linux/device.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/power_supply.h>
 #include <linux/jiffies.h>
@@ -622,11 +623,12 @@ static int olpc_battery_probe(struct platform_device *pdev)
 	olpc_ac = power_supply_register(&pdev->dev, &olpc_ac_desc, NULL);
 	if (IS_ERR(olpc_ac))
 		return PTR_ERR(olpc_ac);
-
-	if (olpc_board_at_least(olpc_board_pre(0xd0))) { /* XO-1.5 */
+	if (of_device_is_compatible(pdev->dev.of_node, "olpc,xo1.5-battery")) {
+		/* XO-1.5 */
 		olpc_bat_desc.properties = olpc_xo15_bat_props;
 		olpc_bat_desc.num_properties = ARRAY_SIZE(olpc_xo15_bat_props);
-	} else { /* XO-1 */
+	} else {
+		/* XO-1 */
 		olpc_bat_desc.properties = olpc_xo1_bat_props;
 		olpc_bat_desc.num_properties = ARRAY_SIZE(olpc_xo1_bat_props);
 	}
@@ -672,6 +674,7 @@ static int olpc_battery_remove(struct platform_device *pdev)
 
 static const struct of_device_id olpc_battery_ids[] = {
 	{ .compatible = "olpc,xo1-battery" },
+	{ .compatible = "olpc,xo1.5-battery" },
 	{}
 };
 MODULE_DEVICE_TABLE(of, olpc_battery_ids);
-- 
2.21.0


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

* [PATCH v7 06/10] power: supply: olpc_battery: Move priv data to a struct
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (4 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 05/10] power: supply: olpc_battery: Use DT to get battery version Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 07/10] power: supply: olpc_battery: Use devm_power_supply_register() Lubomir Rintel
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Andy Shevchenko,
	Sebastian Reichel

The global variables for private data are not too nice. I'd like some
more, and that would clutter the global name space even further.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v6:
- Collect review tag from Sebastian Reichel

Changes since v4:
- Bring some more code that was misplaced here.

Changes since v2:
- Bring the allocaton of the priv data structure here

Changes since v1:
- Split out the move to devm_* into a separate patch

 drivers/power/supply/olpc_battery.c | 78 ++++++++++++++++++-----------
 1 file changed, 48 insertions(+), 30 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index 3dcf5e19f329..f7bb9bedd893 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -53,6 +53,12 @@
 
 #define BAT_ADDR_MFR_TYPE	0x5F
 
+struct olpc_battery_data {
+	struct power_supply *olpc_ac;
+	struct power_supply *olpc_bat;
+	char bat_serial[17];
+};
+
 /*********************************************************************
  *		Power
  *********************************************************************/
@@ -91,11 +97,8 @@ static const struct power_supply_desc olpc_ac_desc = {
 	.get_property = olpc_ac_get_prop,
 };
 
-static struct power_supply *olpc_ac;
-
-static char bat_serial[17]; /* Ick */
-
-static int olpc_bat_get_status(union power_supply_propval *val, uint8_t ec_byte)
+static int olpc_bat_get_status(struct olpc_battery_data *data,
+		union power_supply_propval *val, uint8_t ec_byte)
 {
 	if (olpc_platform_info.ecver > 0x44) {
 		if (ec_byte & (BAT_STAT_CHARGING | BAT_STAT_TRICKLE))
@@ -326,6 +329,7 @@ static int olpc_bat_get_property(struct power_supply *psy,
 				 enum power_supply_property psp,
 				 union power_supply_propval *val)
 {
+	struct olpc_battery_data *data = power_supply_get_drvdata(psy);
 	int ret = 0;
 	__be16 ec_word;
 	uint8_t ec_byte;
@@ -347,7 +351,7 @@ static int olpc_bat_get_property(struct power_supply *psy,
 
 	switch (psp) {
 	case POWER_SUPPLY_PROP_STATUS:
-		ret = olpc_bat_get_status(val, ec_byte);
+		ret = olpc_bat_get_status(data, val, ec_byte);
 		if (ret)
 			return ret;
 		break;
@@ -450,8 +454,8 @@ static int olpc_bat_get_property(struct power_supply *psy,
 		if (ret)
 			return ret;
 
-		sprintf(bat_serial, "%016llx", (long long)be64_to_cpu(ser_buf));
-		val->strval = bat_serial;
+		sprintf(data->bat_serial, "%016llx", (long long)be64_to_cpu(ser_buf));
+		val->strval = data->bat_serial;
 		break;
 	case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
 		ret = olpc_bat_get_voltage_max_design(val);
@@ -579,17 +583,17 @@ static struct power_supply_desc olpc_bat_desc = {
 	.use_for_apm = 1,
 };
 
-static struct power_supply *olpc_bat;
-
 static int olpc_battery_suspend(struct platform_device *pdev,
 				pm_message_t state)
 {
-	if (device_may_wakeup(&olpc_ac->dev))
+	struct olpc_battery_data *data = platform_get_drvdata(pdev);
+
+	if (device_may_wakeup(&data->olpc_ac->dev))
 		olpc_ec_wakeup_set(EC_SCI_SRC_ACPWR);
 	else
 		olpc_ec_wakeup_clear(EC_SCI_SRC_ACPWR);
 
-	if (device_may_wakeup(&olpc_bat->dev))
+	if (device_may_wakeup(&data->olpc_bat->dev))
 		olpc_ec_wakeup_set(EC_SCI_SRC_BATTERY | EC_SCI_SRC_BATSOC
 				   | EC_SCI_SRC_BATERR);
 	else
@@ -601,8 +605,15 @@ static int olpc_battery_suspend(struct platform_device *pdev,
 
 static int olpc_battery_probe(struct platform_device *pdev)
 {
-	int ret;
+	struct power_supply_config psy_cfg = {};
+	struct olpc_battery_data *data;
 	uint8_t status;
+	int ret;
+
+	data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+	platform_set_drvdata(pdev, data);
 
 	/*
 	 * We've seen a number of EC protocol changes; this driver requires
@@ -620,9 +631,13 @@ static int olpc_battery_probe(struct platform_device *pdev)
 
 	/* Ignore the status. It doesn't actually matter */
 
-	olpc_ac = power_supply_register(&pdev->dev, &olpc_ac_desc, NULL);
-	if (IS_ERR(olpc_ac))
-		return PTR_ERR(olpc_ac);
+	psy_cfg.of_node = pdev->dev.of_node;
+	psy_cfg.drv_data = data;
+
+	data->olpc_ac = power_supply_register(&pdev->dev, &olpc_ac_desc, &psy_cfg);
+	if (IS_ERR(data->olpc_ac))
+		return PTR_ERR(data->olpc_ac);
+
 	if (of_device_is_compatible(pdev->dev.of_node, "olpc,xo1.5-battery")) {
 		/* XO-1.5 */
 		olpc_bat_desc.properties = olpc_xo15_bat_props;
@@ -633,42 +648,45 @@ static int olpc_battery_probe(struct platform_device *pdev)
 		olpc_bat_desc.num_properties = ARRAY_SIZE(olpc_xo1_bat_props);
 	}
 
-	olpc_bat = power_supply_register(&pdev->dev, &olpc_bat_desc, NULL);
-	if (IS_ERR(olpc_bat)) {
-		ret = PTR_ERR(olpc_bat);
+	data->olpc_bat = power_supply_register(&pdev->dev, &olpc_bat_desc, &psy_cfg);
+	if (IS_ERR(data->olpc_bat)) {
+		ret = PTR_ERR(data->olpc_bat);
 		goto battery_failed;
 	}
 
-	ret = device_create_bin_file(&olpc_bat->dev, &olpc_bat_eeprom);
+	ret = device_create_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
 	if (ret)
 		goto eeprom_failed;
 
-	ret = device_create_file(&olpc_bat->dev, &olpc_bat_error);
+	ret = device_create_file(&data->olpc_bat->dev, &olpc_bat_error);
 	if (ret)
 		goto error_failed;
 
 	if (olpc_ec_wakeup_available()) {
-		device_set_wakeup_capable(&olpc_ac->dev, true);
-		device_set_wakeup_capable(&olpc_bat->dev, true);
+		device_set_wakeup_capable(&data->olpc_ac->dev, true);
+		device_set_wakeup_capable(&data->olpc_bat->dev, true);
 	}
 
 	return 0;
 
 error_failed:
-	device_remove_bin_file(&olpc_bat->dev, &olpc_bat_eeprom);
+	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
 eeprom_failed:
-	power_supply_unregister(olpc_bat);
+	power_supply_unregister(data->olpc_bat);
 battery_failed:
-	power_supply_unregister(olpc_ac);
+	power_supply_unregister(data->olpc_ac);
 	return ret;
 }
 
 static int olpc_battery_remove(struct platform_device *pdev)
 {
-	device_remove_file(&olpc_bat->dev, &olpc_bat_error);
-	device_remove_bin_file(&olpc_bat->dev, &olpc_bat_eeprom);
-	power_supply_unregister(olpc_bat);
-	power_supply_unregister(olpc_ac);
+	struct olpc_battery_data *data = platform_get_drvdata(pdev);
+
+	device_remove_file(&data->olpc_bat->dev, &olpc_bat_error);
+	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
+	power_supply_unregister(data->olpc_bat);
+	power_supply_unregister(data->olpc_ac);
+
 	return 0;
 }
 
-- 
2.21.0


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

* [PATCH v7 07/10] power: supply: olpc_battery: Use devm_power_supply_register()
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (5 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 06/10] power: supply: olpc_battery: Move priv data to a struct Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 08/10] power: supply: olpc_battery: Avoid using platform_info Lubomir Rintel
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Sebastian Reichel

This simplifies the error handling.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v1:
- This was split off the "power: supply: olpc_battery: Move priv data to
  a struct" patch.

 drivers/power/supply/olpc_battery.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index f7bb9bedd893..d83c77c2a0ec 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -634,7 +634,7 @@ static int olpc_battery_probe(struct platform_device *pdev)
 	psy_cfg.of_node = pdev->dev.of_node;
 	psy_cfg.drv_data = data;
 
-	data->olpc_ac = power_supply_register(&pdev->dev, &olpc_ac_desc, &psy_cfg);
+	data->olpc_ac = devm_power_supply_register(&pdev->dev, &olpc_ac_desc, &psy_cfg);
 	if (IS_ERR(data->olpc_ac))
 		return PTR_ERR(data->olpc_ac);
 
@@ -648,15 +648,13 @@ static int olpc_battery_probe(struct platform_device *pdev)
 		olpc_bat_desc.num_properties = ARRAY_SIZE(olpc_xo1_bat_props);
 	}
 
-	data->olpc_bat = power_supply_register(&pdev->dev, &olpc_bat_desc, &psy_cfg);
-	if (IS_ERR(data->olpc_bat)) {
-		ret = PTR_ERR(data->olpc_bat);
-		goto battery_failed;
-	}
+	data->olpc_bat = devm_power_supply_register(&pdev->dev, &olpc_bat_desc, &psy_cfg);
+	if (IS_ERR(data->olpc_bat))
+		return PTR_ERR(data->olpc_bat);
 
 	ret = device_create_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
 	if (ret)
-		goto eeprom_failed;
+		return ret;
 
 	ret = device_create_file(&data->olpc_bat->dev, &olpc_bat_error);
 	if (ret)
@@ -671,10 +669,6 @@ static int olpc_battery_probe(struct platform_device *pdev)
 
 error_failed:
 	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
-eeprom_failed:
-	power_supply_unregister(data->olpc_bat);
-battery_failed:
-	power_supply_unregister(data->olpc_ac);
 	return ret;
 }
 
@@ -684,9 +678,6 @@ static int olpc_battery_remove(struct platform_device *pdev)
 
 	device_remove_file(&data->olpc_bat->dev, &olpc_bat_error);
 	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
-	power_supply_unregister(data->olpc_bat);
-	power_supply_unregister(data->olpc_ac);
-
 	return 0;
 }
 
-- 
2.21.0


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

* [PATCH v7 08/10] power: supply: olpc_battery: Avoid using platform_info
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (6 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 07/10] power: supply: olpc_battery: Use devm_power_supply_register() Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 09/10] power: supply: olpc_battery: Add OLPC XO 1.75 support Lubomir Rintel
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Pavel Machek,
	Sebastian Reichel

This wouldn't work on the DT-based ARM platform. Let's read the EC version
directly from the EC driver instead.

This removes x86 specific bits that would prevent this driver from being
used with the EC of ARM-based OLPC XO 1.75.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v5:
- Turn new_proto into a bool

Changes since v2:
- Move the priv data allocation hunk from this patch to a proper place

Changes since v1:
- Use uint8_t instead of unsigned char [1] for ecver

 drivers/power/supply/olpc_battery.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index d83c77c2a0ec..8be44c717d85 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -57,6 +57,7 @@ struct olpc_battery_data {
 	struct power_supply *olpc_ac;
 	struct power_supply *olpc_bat;
 	char bat_serial[17];
+	bool new_proto;
 };
 
 /*********************************************************************
@@ -100,7 +101,7 @@ static const struct power_supply_desc olpc_ac_desc = {
 static int olpc_bat_get_status(struct olpc_battery_data *data,
 		union power_supply_propval *val, uint8_t ec_byte)
 {
-	if (olpc_platform_info.ecver > 0x44) {
+	if (data->new_proto) {
 		if (ec_byte & (BAT_STAT_CHARGING | BAT_STAT_TRICKLE))
 			val->intval = POWER_SUPPLY_STATUS_CHARGING;
 		else if (ec_byte & BAT_STAT_DISCHARGING)
@@ -608,6 +609,7 @@ static int olpc_battery_probe(struct platform_device *pdev)
 	struct power_supply_config psy_cfg = {};
 	struct olpc_battery_data *data;
 	uint8_t status;
+	uint8_t ecver;
 	int ret;
 
 	data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
@@ -615,13 +617,21 @@ static int olpc_battery_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	platform_set_drvdata(pdev, data);
 
-	/*
-	 * We've seen a number of EC protocol changes; this driver requires
-	 * the latest EC protocol, supported by 0x44 and above.
-	 */
-	if (olpc_platform_info.ecver < 0x44) {
+	/* See if the EC is already there and get the EC revision */
+	ret = olpc_ec_cmd(EC_FIRMWARE_REV, NULL, 0, &ecver, 1);
+	if (ret)
+		return ret;
+
+	if (ecver > 0x44) {
+		/* XO 1 or 1.5 with a new EC firmware. */
+		data->new_proto = true;
+	} else if (ecver < 0x44) {
+		/*
+		 * We've seen a number of EC protocol changes; this driver
+		 * requires the latest EC protocol, supported by 0x44 and above.
+		 */
 		printk(KERN_NOTICE "OLPC EC version 0x%02x too old for "
-			"battery driver.\n", olpc_platform_info.ecver);
+			"battery driver.\n", ecver);
 		return -ENXIO;
 	}
 
-- 
2.21.0


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

* [PATCH v7 09/10] power: supply: olpc_battery: Add OLPC XO 1.75 support
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (7 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 08/10] power: supply: olpc_battery: Avoid using platform_info Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 14:46 ` [PATCH v7 10/10] power: supply: olpc_battery: Have the framework register sysfs files for us Lubomir Rintel
  2019-04-18 20:20 ` [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Sebastian Reichel
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Pavel Machek,
	Sebastian Reichel

The battery and the protocol are essentially the same as OLPC XO 1.5,
but the responses from the EC are LSB first.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v6:
- Collect review tag from Sebastian Reichel

Changes since v5:
- s/int little_endian/bool little_endian/

Changes since v2:
- Fix the version conditional

Changes since v1:
- s/s16 ecword_to_cpu/u16 ecword_to_cpu/
- s/u16 ec_byte/u16 ec_word/

 drivers/power/supply/olpc_battery.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index 8be44c717d85..0d67158c13d6 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -58,6 +58,7 @@ struct olpc_battery_data {
 	struct power_supply *olpc_bat;
 	char bat_serial[17];
 	bool new_proto;
+	bool little_endian;
 };
 
 /*********************************************************************
@@ -323,6 +324,14 @@ static int olpc_bat_get_voltage_max_design(union power_supply_propval *val)
 	return ret;
 }
 
+static u16 ecword_to_cpu(struct olpc_battery_data *data, u16 ec_word)
+{
+	if (data->little_endian)
+		return le16_to_cpu(ec_word);
+	else
+		return be16_to_cpu(ec_word);
+}
+
 /*********************************************************************
  *		Battery properties
  *********************************************************************/
@@ -395,7 +404,7 @@ static int olpc_bat_get_property(struct power_supply *psy,
 		if (ret)
 			return ret;
 
-		val->intval = (s16)be16_to_cpu(ec_word) * 9760L / 32;
+		val->intval = ecword_to_cpu(data, ec_word) * 9760L / 32;
 		break;
 	case POWER_SUPPLY_PROP_CURRENT_AVG:
 	case POWER_SUPPLY_PROP_CURRENT_NOW:
@@ -403,7 +412,7 @@ static int olpc_bat_get_property(struct power_supply *psy,
 		if (ret)
 			return ret;
 
-		val->intval = (s16)be16_to_cpu(ec_word) * 15625L / 120;
+		val->intval = ecword_to_cpu(data, ec_word) * 15625L / 120;
 		break;
 	case POWER_SUPPLY_PROP_CAPACITY:
 		ret = olpc_ec_cmd(EC_BAT_SOC, NULL, 0, &ec_byte, 1);
@@ -434,21 +443,21 @@ static int olpc_bat_get_property(struct power_supply *psy,
 		if (ret)
 			return ret;
 
-		val->intval = (s16)be16_to_cpu(ec_word) * 10 / 256;
+		val->intval = ecword_to_cpu(data, ec_word) * 10 / 256;
 		break;
 	case POWER_SUPPLY_PROP_TEMP_AMBIENT:
 		ret = olpc_ec_cmd(EC_AMB_TEMP, NULL, 0, (void *)&ec_word, 2);
 		if (ret)
 			return ret;
 
-		val->intval = (int)be16_to_cpu(ec_word) * 10 / 256;
+		val->intval = (int)ecword_to_cpu(data, ec_word) * 10 / 256;
 		break;
 	case POWER_SUPPLY_PROP_CHARGE_COUNTER:
 		ret = olpc_ec_cmd(EC_BAT_ACR, NULL, 0, (void *)&ec_word, 2);
 		if (ret)
 			return ret;
 
-		val->intval = (s16)be16_to_cpu(ec_word) * 6250 / 15;
+		val->intval = ecword_to_cpu(data, ec_word) * 6250 / 15;
 		break;
 	case POWER_SUPPLY_PROP_SERIAL_NUMBER:
 		ret = olpc_ec_cmd(EC_BAT_SERIAL, NULL, 0, (void *)&ser_buf, 8);
@@ -622,7 +631,11 @@ static int olpc_battery_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	if (ecver > 0x44) {
+	if (of_find_compatible_node(NULL, NULL, "olpc,xo1.75-ec")) {
+		/* XO 1.75 */
+		data->new_proto = true;
+		data->little_endian = true;
+	} else if (ecver > 0x44) {
 		/* XO 1 or 1.5 with a new EC firmware. */
 		data->new_proto = true;
 	} else if (ecver < 0x44) {
-- 
2.21.0


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

* [PATCH v7 10/10] power: supply: olpc_battery: Have the framework register sysfs files for us
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (8 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 09/10] power: supply: olpc_battery: Add OLPC XO 1.75 support Lubomir Rintel
@ 2019-04-18 14:46 ` Lubomir Rintel
  2019-04-18 20:20 ` [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Sebastian Reichel
  10 siblings, 0 replies; 14+ messages in thread
From: Lubomir Rintel @ 2019-04-18 14:46 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel, Lubomir Rintel, Sebastian Reichel

The power framework gained ability to register groups of sysfs
attributes in commit cef8fe6a382c ("power: supply: core: add support for
custom sysfs attributes").

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Suggested-by: Sebastian Reichel <sre@kernel.org>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

---
Changes since v6:
- Collect review tag from Sebastian Reichel

Changes since v5:
- Added this patch

 drivers/power/supply/olpc_battery.c | 64 ++++++++++++++++-------------
 1 file changed, 35 insertions(+), 29 deletions(-)

diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
index 0d67158c13d6..c628d3a47e14 100644
--- a/drivers/power/supply/olpc_battery.c
+++ b/drivers/power/supply/olpc_battery.c
@@ -551,7 +551,7 @@ static ssize_t olpc_bat_eeprom_read(struct file *filp, struct kobject *kobj,
 	return count;
 }
 
-static const struct bin_attribute olpc_bat_eeprom = {
+static struct bin_attribute olpc_bat_eeprom = {
 	.attr = {
 		.name = "eeprom",
 		.mode = S_IRUGO,
@@ -575,7 +575,7 @@ static ssize_t olpc_bat_error_read(struct device *dev,
 	return sprintf(buf, "%d\n", ec_byte);
 }
 
-static const struct device_attribute olpc_bat_error = {
+static struct device_attribute olpc_bat_error = {
 	.attr = {
 		.name = "error",
 		.mode = S_IRUGO,
@@ -583,6 +583,27 @@ static const struct device_attribute olpc_bat_error = {
 	.show = olpc_bat_error_read,
 };
 
+static struct attribute *olpc_bat_sysfs_attrs[] = {
+	&olpc_bat_error.attr,
+	NULL
+};
+
+static struct bin_attribute *olpc_bat_sysfs_bin_attrs[] = {
+	&olpc_bat_eeprom,
+	NULL
+};
+
+static const struct attribute_group olpc_bat_sysfs_group = {
+	.attrs = olpc_bat_sysfs_attrs,
+	.bin_attrs = olpc_bat_sysfs_bin_attrs,
+
+};
+
+static const struct attribute_group *olpc_bat_sysfs_groups[] = {
+	&olpc_bat_sysfs_group,
+	NULL
+};
+
 /*********************************************************************
  *		Initialisation
  *********************************************************************/
@@ -615,7 +636,8 @@ static int olpc_battery_suspend(struct platform_device *pdev,
 
 static int olpc_battery_probe(struct platform_device *pdev)
 {
-	struct power_supply_config psy_cfg = {};
+	struct power_supply_config bat_psy_cfg = {};
+	struct power_supply_config ac_psy_cfg = {};
 	struct olpc_battery_data *data;
 	uint8_t status;
 	uint8_t ecver;
@@ -654,10 +676,11 @@ static int olpc_battery_probe(struct platform_device *pdev)
 
 	/* Ignore the status. It doesn't actually matter */
 
-	psy_cfg.of_node = pdev->dev.of_node;
-	psy_cfg.drv_data = data;
+	ac_psy_cfg.of_node = pdev->dev.of_node;
+	ac_psy_cfg.drv_data = data;
 
-	data->olpc_ac = devm_power_supply_register(&pdev->dev, &olpc_ac_desc, &psy_cfg);
+	data->olpc_ac = devm_power_supply_register(&pdev->dev, &olpc_ac_desc,
+								&ac_psy_cfg);
 	if (IS_ERR(data->olpc_ac))
 		return PTR_ERR(data->olpc_ac);
 
@@ -671,37 +694,21 @@ static int olpc_battery_probe(struct platform_device *pdev)
 		olpc_bat_desc.num_properties = ARRAY_SIZE(olpc_xo1_bat_props);
 	}
 
-	data->olpc_bat = devm_power_supply_register(&pdev->dev, &olpc_bat_desc, &psy_cfg);
+	bat_psy_cfg.of_node = pdev->dev.of_node;
+	bat_psy_cfg.drv_data = data;
+	bat_psy_cfg.attr_grp = olpc_bat_sysfs_groups;
+
+	data->olpc_bat = devm_power_supply_register(&pdev->dev, &olpc_bat_desc,
+								&bat_psy_cfg);
 	if (IS_ERR(data->olpc_bat))
 		return PTR_ERR(data->olpc_bat);
 
-	ret = device_create_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
-	if (ret)
-		return ret;
-
-	ret = device_create_file(&data->olpc_bat->dev, &olpc_bat_error);
-	if (ret)
-		goto error_failed;
-
 	if (olpc_ec_wakeup_available()) {
 		device_set_wakeup_capable(&data->olpc_ac->dev, true);
 		device_set_wakeup_capable(&data->olpc_bat->dev, true);
 	}
 
 	return 0;
-
-error_failed:
-	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
-	return ret;
-}
-
-static int olpc_battery_remove(struct platform_device *pdev)
-{
-	struct olpc_battery_data *data = platform_get_drvdata(pdev);
-
-	device_remove_file(&data->olpc_bat->dev, &olpc_bat_error);
-	device_remove_bin_file(&data->olpc_bat->dev, &olpc_bat_eeprom);
-	return 0;
 }
 
 static const struct of_device_id olpc_battery_ids[] = {
@@ -717,7 +724,6 @@ static struct platform_driver olpc_battery_driver = {
 		.of_match_table = olpc_battery_ids,
 	},
 	.probe = olpc_battery_probe,
-	.remove = olpc_battery_remove,
 	.suspend = olpc_battery_suspend,
 };
 
-- 
2.21.0


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

* Re: [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver
  2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
                   ` (9 preceding siblings ...)
  2019-04-18 14:46 ` [PATCH v7 10/10] power: supply: olpc_battery: Have the framework register sysfs files for us Lubomir Rintel
@ 2019-04-18 20:20 ` Sebastian Reichel
  2019-04-19  7:57   ` Ingo Molnar
  10 siblings, 1 reply; 14+ messages in thread
From: Sebastian Reichel @ 2019-04-18 20:20 UTC (permalink / raw)
  To: Lubomir Rintel
  Cc: Darren Hart, Rob Herring, Mark Rutland, x86, linux-pm,
	devicetree, linux-kernel

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

Hi,

On Thu, Apr 18, 2019 at 04:46:45PM +0200, Lubomir Rintel wrote:
> This patch set modifies the OLPC battery driver so that it could eventually
> be used on an Arm-based OLPC XO 1.75 machine.
> 
> Compared to the previous version, it addresses review comments for the
> x86 platform parts from Thomas Gleixner. Details in individual patches'
> change logs.
> 
> I've failed to version the previous iteration of the set that should've
> been "v6" for the change logs to make sense. Sorry for that.
> 
> Thank you,
> Lubo

I queued up the complete patchset via an immutable branch based on
v5.1-rc1. X86 maintainers can pull this signed immutable branch as
required. Thanks for the patches,

-- Sebastian

The following changes since commit 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b:

  Linux 5.1-rc1 (2019-03-17 14:22:26 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git tags/psy-olpc-1.75-battery-signed

for you to fetch changes up to 31e220877981d0005d0c4a76f68027a73131212b:

  power: supply: olpc_battery: Have the framework register sysfs files for us (2019-04-18 21:55:04 +0200)

----------------------------------------------------------------
Immutable branch between x86 and power-supply for OLPC

This immutable branch contains the changes required for OLPC
1.75 battery, which touches x86 and power-supply and is based
on v5.1-rc1.

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

----------------------------------------------------------------
Lubomir Rintel (10):
      dt-bindings: olpc_battery: Add XO-1.5 battery
      x86/platform/olpc: Don't split string literals when fixing up the DT
      x86/platform/olpc: Trivial code move in DT fixup
      x86/platform/olpc: Use a correct version when making up a battery node
      power: supply: olpc_battery: Use DT to get battery version
      power: supply: olpc_battery: Move priv data to a struct
      power: supply: olpc_battery: Use devm_power_supply_register()
      power: supply: olpc_battery: Avoid using platform_info
      power: supply: olpc_battery: Add OLPC XO 1.75 support
      power: supply: olpc_battery: Have the framework register sysfs files for us

 .../bindings/power/supply/olpc_battery.txt         |   2 +-
 arch/x86/platform/olpc/olpc_dt.c                   | 101 ++++++++----
 drivers/power/supply/olpc_battery.c                | 169 +++++++++++++--------
 3 files changed, 177 insertions(+), 95 deletions(-)

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

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

* Re: [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver
  2019-04-18 20:20 ` [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Sebastian Reichel
@ 2019-04-19  7:57   ` Ingo Molnar
  2019-04-19 12:42     ` Sebastian Reichel
  0 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2019-04-19  7:57 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Lubomir Rintel, Darren Hart, Rob Herring, Mark Rutland, x86,
	linux-pm, devicetree, linux-kernel, Thomas Gleixner,
	Borislav Petkov


* Sebastian Reichel <sre@kernel.org> wrote:

> Hi,
> 
> On Thu, Apr 18, 2019 at 04:46:45PM +0200, Lubomir Rintel wrote:
> > This patch set modifies the OLPC battery driver so that it could eventually
> > be used on an Arm-based OLPC XO 1.75 machine.
> > 
> > Compared to the previous version, it addresses review comments for the
> > x86 platform parts from Thomas Gleixner. Details in individual patches'
> > change logs.
> > 
> > I've failed to version the previous iteration of the set that should've
> > been "v6" for the change logs to make sense. Sorry for that.
> > 
> > Thank you,
> > Lubo
> 
> I queued up the complete patchset via an immutable branch based on
> v5.1-rc1. X86 maintainers can pull this signed immutable branch as
> required. Thanks for the patches,

Would you mind sending these patches to Linus yourself, as part of the 
power-supply tree?

That's where it really belongs, the impact on arch/x86/ was mostly 
drive-by (and it's now all Acked-by Thomas), the meat of the changes is 
in the OLPC battery driver.

Thanks,

	Ingo

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

* Re: [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver
  2019-04-19  7:57   ` Ingo Molnar
@ 2019-04-19 12:42     ` Sebastian Reichel
  0 siblings, 0 replies; 14+ messages in thread
From: Sebastian Reichel @ 2019-04-19 12:42 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Lubomir Rintel, Darren Hart, Rob Herring, Mark Rutland, x86,
	linux-pm, devicetree, linux-kernel, Thomas Gleixner,
	Borislav Petkov

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

Hi Ingo,

On Fri, Apr 19, 2019 at 09:57:16AM +0200, Ingo Molnar wrote:
> > On Thu, Apr 18, 2019 at 04:46:45PM +0200, Lubomir Rintel wrote:
> > > This patch set modifies the OLPC battery driver so that it could eventually
> > > be used on an Arm-based OLPC XO 1.75 machine.
> > > 
> > > Compared to the previous version, it addresses review comments for the
> > > x86 platform parts from Thomas Gleixner. Details in individual patches'
> > > change logs.
> > > 
> > > I've failed to version the previous iteration of the set that should've
> > > been "v6" for the change logs to make sense. Sorry for that.
> > > 
> > > Thank you,
> > > Lubo
> > 
> > I queued up the complete patchset via an immutable branch based on
> > v5.1-rc1. X86 maintainers can pull this signed immutable branch as
> > required. Thanks for the patches,
> 
> Would you mind sending these patches to Linus yourself, as part of the 
> power-supply tree?
> 
> That's where it really belongs, the impact on arch/x86/ was mostly 
> drive-by (and it's now all Acked-by Thomas), the meat of the changes is 
> in the OLPC battery driver.

Yes, I merged the immutable branch into power-supply. You can either
also merge it (e.g. when you plan to add other changes), or just ignore
it :) This is what I usually do with other subsystems to avoid
pointless merge conflicts.

TLDR: Yes.

-- Sebastian

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

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

end of thread, other threads:[~2019-04-19 19:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-18 14:46 [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 01/10] dt-bindings: olpc_battery: Add XO-1.5 battery Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 02/10] x86/platform/olpc: Don't split string literals when fixing up the DT Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 03/10] x86/platform/olpc: Trivial code move in DT fixup Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 04/10] x86/platform/olpc: Use a correct version when making up a battery node Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 05/10] power: supply: olpc_battery: Use DT to get battery version Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 06/10] power: supply: olpc_battery: Move priv data to a struct Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 07/10] power: supply: olpc_battery: Use devm_power_supply_register() Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 08/10] power: supply: olpc_battery: Avoid using platform_info Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 09/10] power: supply: olpc_battery: Add OLPC XO 1.75 support Lubomir Rintel
2019-04-18 14:46 ` [PATCH v7 10/10] power: supply: olpc_battery: Have the framework register sysfs files for us Lubomir Rintel
2019-04-18 20:20 ` [PATCH v7 00/10] Add support for XO 1.75 to OLPC battery driver Sebastian Reichel
2019-04-19  7:57   ` Ingo Molnar
2019-04-19 12:42     ` Sebastian Reichel

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).