From: Lubomir Rintel <lkundrak@v3.sk> To: Andy Shevchenko <andy@infradead.org>, Darren Hart <dvhart@infradead.org>, platform-driver-x86@vger.kernel.org, Russell King <linux@armlinux.org.uk> Cc: James Cameron <quozl@laptop.org>, Mark Rutland <mark.rutland@arm.com>, Pavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>, Sebastian Reichel <sre@kernel.org>, x86@kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Lubomir Rintel <lkundrak@v3.sk>, Sebastian Reichel <sebastian.reichel@collabora.com> Subject: [PATCH v4 14/15] power: supply: olpc_battery: Avoid using platform_info Date: Tue, 8 Jan 2019 18:58:17 +0100 [thread overview] Message-ID: <20190108175818.705110-15-lkundrak@v3.sk> (raw) In-Reply-To: <20190108175818.705110-1-lkundrak@v3.sk> This wouldn't work on the DT-based ARM platform. Let's read the EC version directly from the EC driver instead. This makes the driver no longer x86 specific. 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 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/Kconfig | 2 +- drivers/power/supply/olpc_battery.c | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig index e901b9879e7e..67a3bb26da39 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -151,7 +151,7 @@ config BATTERY_PMU config BATTERY_OLPC tristate "One Laptop Per Child battery" - depends on X86_32 && OLPC + depends on OLPC help Say Y to enable support for the battery on the OLPC laptop. diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c index 0c9f7ce6b26b..8ebb4284cf05 100644 --- a/drivers/power/supply/olpc_battery.c +++ b/drivers/power/supply/olpc_battery.c @@ -20,8 +20,6 @@ #include <linux/jiffies.h> #include <linux/sched.h> #include <linux/olpc-ec.h> -#include <asm/olpc.h> - #define EC_BAT_VOLTAGE 0x10 /* uint16_t, *9.76/32, mV */ #define EC_BAT_CURRENT 0x11 /* int16_t, *15.625/120, mA */ @@ -57,6 +55,7 @@ struct olpc_battery_data { struct power_supply *olpc_ac; struct power_supply *olpc_bat; char bat_serial[17]; + int new_proto; }; /********************************************************************* @@ -100,7 +99,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,19 +607,29 @@ 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); if (!data) 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 = 1; + } 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.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Lubomir Rintel <lkundrak@v3.sk> To: Andy Shevchenko <andy@infradead.org>, Darren Hart <dvhart@infradead.org>, platform-driver-x86@vger.kernel.org, Russell King <linux@armlinux.org.uk> Cc: Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org, James Cameron <quozl@laptop.org>, linux-pm@vger.kernel.org, x86@kernel.org, Sebastian Reichel <sre@kernel.org>, linux-kernel@vger.kernel.org, Lubomir Rintel <lkundrak@v3.sk>, Rob Herring <robh+dt@kernel.org>, Pavel Machek <pavel@ucw.cz>, Sebastian Reichel <sebastian.reichel@collabora.com>, linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 14/15] power: supply: olpc_battery: Avoid using platform_info Date: Tue, 8 Jan 2019 18:58:17 +0100 [thread overview] Message-ID: <20190108175818.705110-15-lkundrak@v3.sk> (raw) In-Reply-To: <20190108175818.705110-1-lkundrak@v3.sk> This wouldn't work on the DT-based ARM platform. Let's read the EC version directly from the EC driver instead. This makes the driver no longer x86 specific. 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 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/Kconfig | 2 +- drivers/power/supply/olpc_battery.c | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig index e901b9879e7e..67a3bb26da39 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -151,7 +151,7 @@ config BATTERY_PMU config BATTERY_OLPC tristate "One Laptop Per Child battery" - depends on X86_32 && OLPC + depends on OLPC help Say Y to enable support for the battery on the OLPC laptop. diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c index 0c9f7ce6b26b..8ebb4284cf05 100644 --- a/drivers/power/supply/olpc_battery.c +++ b/drivers/power/supply/olpc_battery.c @@ -20,8 +20,6 @@ #include <linux/jiffies.h> #include <linux/sched.h> #include <linux/olpc-ec.h> -#include <asm/olpc.h> - #define EC_BAT_VOLTAGE 0x10 /* uint16_t, *9.76/32, mV */ #define EC_BAT_CURRENT 0x11 /* int16_t, *15.625/120, mA */ @@ -57,6 +55,7 @@ struct olpc_battery_data { struct power_supply *olpc_ac; struct power_supply *olpc_bat; char bat_serial[17]; + int new_proto; }; /********************************************************************* @@ -100,7 +99,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,19 +607,29 @@ 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); if (!data) 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 = 1; + } 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.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-01-08 17:59 UTC|newest] Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-08 17:58 [PATCH v4 00/15] Add support for OLPC XO 1.75 Embedded Controller Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 01/15] ARM: export arm_pm_restart() Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 23:31 ` Russell King - ARM Linux 2019-01-08 23:31 ` Russell King - ARM Linux 2019-01-09 7:24 ` Lubomir Rintel 2019-01-09 7:24 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 02/15] dt-bindings: olpc,xo1.75-ec: Add OLPC XO-1.75 EC bindings Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 02/15] dt-bindings: olpc, xo1.75-ec: " Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 03/15] Platform: OLPC: Remove an unused include Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 04/15] Platform: OLPC: Add XO-1.75 EC driver Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 05/15] Platform: OLPC: Avoid a warning if the EC didn't register yet Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 06/15] Platform: OLPC: Move EC-specific functionality out from x86 Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-09 11:23 ` Andy Shevchenko 2019-01-09 11:23 ` Andy Shevchenko 2019-01-10 17:12 ` Lubomir Rintel 2019-01-10 17:12 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 07/15] Platform: OLPC: Use BIT() and GENMASK() for event masks Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-09 11:14 ` Andy Shevchenko 2019-01-09 11:14 ` Andy Shevchenko 2019-01-09 11:14 ` Andy Shevchenko 2019-01-08 17:58 ` [PATCH v4 08/15] Platform: OLPC: add a regulator for the DCON Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 09/15] dt-bindings: olpc_battery: Add XO-1.5 battery Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 10/15] x86, olpc: Use a correct version when making up a battery node Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 11/15] power: supply: olpc_battery: Use DT to get battery version Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 12/15] power: supply: olpc_battery: Move priv data to a struct Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 13/15] power: supply: olpc_battery: Use devm_power_supply_register() Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel [this message] 2019-01-08 17:58 ` [PATCH v4 14/15] power: supply: olpc_battery: Avoid using platform_info Lubomir Rintel 2019-01-08 17:58 ` [PATCH v4 15/15] power: supply: olpc_battery: Add OLPC XO 1.75 support Lubomir Rintel 2019-01-08 17:58 ` Lubomir Rintel 2019-01-09 11:15 ` [PATCH v4 00/15] Add support for OLPC XO 1.75 Embedded Controller Andy Shevchenko 2019-01-09 11:15 ` Andy Shevchenko 2019-01-09 16:37 ` Lubomir Rintel 2019-01-09 16:37 ` Lubomir Rintel 2019-01-10 10:08 ` Andy Shevchenko 2019-01-10 10:08 ` Andy Shevchenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190108175818.705110-15-lkundrak@v3.sk \ --to=lkundrak@v3.sk \ --cc=andy@infradead.org \ --cc=devicetree@vger.kernel.org \ --cc=dvhart@infradead.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=mark.rutland@arm.com \ --cc=pavel@ucw.cz \ --cc=platform-driver-x86@vger.kernel.org \ --cc=quozl@laptop.org \ --cc=robh+dt@kernel.org \ --cc=sebastian.reichel@collabora.com \ --cc=sre@kernel.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.