All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] power: bq24735-charger: chromebook fixes
@ 2016-02-03  6:03 Jonathan Tinkham
       [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jonathan Tinkham @ 2016-02-03  6:03 UTC (permalink / raw)
  To: linux-pm-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA
  Cc: sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8,
	ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, Jonathan Tinkham

On Acer Chromebook 13 (CB5-311) this module fails to load if the charger
is not inserted, and will error when it is removed.

These fixes are adapted from Acer's downstream kernel.

Jonathan Tinkham (3):
  power: bq24735-charger: fix failed i2c with ac-detect
  power: bq24735-charger: add 'ti,external-control' option
  power: bq24735-charger: document 'ti,external-control' option

 .../bindings/power_supply/ti,bq24735.txt           |  3 ++
 drivers/power/bq24735-charger.c                    | 56 ++++++++++++++--------
 include/linux/power/bq24735-charger.h              |  2 +
 3 files changed, 40 insertions(+), 21 deletions(-)

-- 
2.7.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 1/3] power: bq24735-charger: fix failed i2c with ac-detect
       [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2016-02-03  6:03   ` Jonathan Tinkham
  2016-02-03  6:03   ` [PATCH 2/3] power: bq24735-charger: add 'ti,external-control' option Jonathan Tinkham
  1 sibling, 0 replies; 6+ messages in thread
From: Jonathan Tinkham @ 2016-02-03  6:03 UTC (permalink / raw)
  To: linux-pm-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA
  Cc: sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8,
	ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, Jonathan Tinkham

When an ac-detect pin exists, but the charger is not plugged in,
the chip will not respond to i2c messages, causing the module to
fail when inserted.

Signed-off-by: Jonathan Tinkham <sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 drivers/power/bq24735-charger.c | 45 ++++++++++++++++++++++-------------------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/drivers/power/bq24735-charger.c b/drivers/power/bq24735-charger.c
index eb2b368..f041c16 100644
--- a/drivers/power/bq24735-charger.c
+++ b/drivers/power/bq24735-charger.c
@@ -293,27 +293,6 @@ static int bq24735_charger_probe(struct i2c_client *client,
 
 	i2c_set_clientdata(client, charger);
 
-	ret = bq24735_read_word(client, BQ24735_MANUFACTURER_ID);
-	if (ret < 0) {
-		dev_err(&client->dev, "Failed to read manufacturer id : %d\n",
-			ret);
-		return ret;
-	} else if (ret != 0x0040) {
-		dev_err(&client->dev,
-			"manufacturer id mismatch. 0x0040 != 0x%04x\n", ret);
-		return -ENODEV;
-	}
-
-	ret = bq24735_read_word(client, BQ24735_DEVICE_ID);
-	if (ret < 0) {
-		dev_err(&client->dev, "Failed to read device id : %d\n", ret);
-		return ret;
-	} else if (ret != 0x000B) {
-		dev_err(&client->dev,
-			"device id mismatch. 0x000b != 0x%04x\n", ret);
-		return -ENODEV;
-	}
-
 	if (gpio_is_valid(charger->pdata->status_gpio)) {
 		ret = devm_gpio_request(&client->dev,
 					charger->pdata->status_gpio,
@@ -327,6 +306,30 @@ static int bq24735_charger_probe(struct i2c_client *client,
 		charger->pdata->status_gpio_valid = !ret;
 	}
 
+	if (!charger->pdata->status_gpio_valid
+	    || bq24735_charger_is_present(charger)) {
+		ret = bq24735_read_word(client, BQ24735_MANUFACTURER_ID);
+		if (ret < 0) {
+			dev_err(&client->dev, "Failed to read manufacturer id : %d\n",
+				ret);
+			return ret;
+		} else if (ret != 0x0040) {
+			dev_err(&client->dev,
+				"manufacturer id mismatch. 0x0040 != 0x%04x\n", ret);
+			return -ENODEV;
+		}
+
+		ret = bq24735_read_word(client, BQ24735_DEVICE_ID);
+		if (ret < 0) {
+			dev_err(&client->dev, "Failed to read device id : %d\n", ret);
+			return ret;
+		} else if (ret != 0x000B) {
+			dev_err(&client->dev,
+				"device id mismatch. 0x000b != 0x%04x\n", ret);
+			return -ENODEV;
+		}
+	}
+
 	ret = bq24735_config_charger(charger);
 	if (ret < 0) {
 		dev_err(&client->dev, "failed in configuring charger");
-- 
2.7.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/3] power: bq24735-charger: add 'ti,external-control' option
       [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2016-02-03  6:03   ` [PATCH 1/3] power: bq24735-charger: fix failed i2c with ac-detect Jonathan Tinkham
@ 2016-02-03  6:03   ` Jonathan Tinkham
  1 sibling, 0 replies; 6+ messages in thread
From: Jonathan Tinkham @ 2016-02-03  6:03 UTC (permalink / raw)
  To: linux-pm-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA
  Cc: sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8,
	ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, Jonathan Tinkham

Implement an 'ti,external-control' option for when the charger
shouldn't be configured by the host.

Signed-off-by: Jonathan Tinkham <sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 drivers/power/bq24735-charger.c       | 11 +++++++++++
 include/linux/power/bq24735-charger.h |  2 ++
 2 files changed, 13 insertions(+)

diff --git a/drivers/power/bq24735-charger.c b/drivers/power/bq24735-charger.c
index f041c16..96afcc1 100644
--- a/drivers/power/bq24735-charger.c
+++ b/drivers/power/bq24735-charger.c
@@ -90,6 +90,9 @@ static int bq24735_update_word(struct i2c_client *client, u8 reg,
 
 static inline int bq24735_enable_charging(struct bq24735 *charger)
 {
+	if (charger->pdata->ext_control)
+		return 0;
+
 	return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
 				   BQ24735_CHG_OPT_CHARGE_DISABLE,
 				   ~BQ24735_CHG_OPT_CHARGE_DISABLE);
@@ -97,6 +100,9 @@ static inline int bq24735_enable_charging(struct bq24735 *charger)
 
 static inline int bq24735_disable_charging(struct bq24735 *charger)
 {
+	if (charger->pdata->ext_control)
+		return 0;
+
 	return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
 				   BQ24735_CHG_OPT_CHARGE_DISABLE,
 				   BQ24735_CHG_OPT_CHARGE_DISABLE);
@@ -108,6 +114,9 @@ static int bq24735_config_charger(struct bq24735 *charger)
 	int ret;
 	u16 value;
 
+	if (pdata->ext_control)
+		return 0;
+
 	if (pdata->charge_current) {
 		value = pdata->charge_current & BQ24735_CHARGE_CURRENT_MASK;
 
@@ -239,6 +248,8 @@ static struct bq24735_platform *bq24735_parse_dt_data(struct i2c_client *client)
 	if (!ret)
 		pdata->input_current = val;
 
+	pdata->ext_control = of_property_read_bool(np, "ti,external-control");
+
 	return pdata;
 }
 
diff --git a/include/linux/power/bq24735-charger.h b/include/linux/power/bq24735-charger.h
index f536164..6b750c1a 100644
--- a/include/linux/power/bq24735-charger.h
+++ b/include/linux/power/bq24735-charger.h
@@ -32,6 +32,8 @@ struct bq24735_platform {
 	int status_gpio_active_low;
 	bool status_gpio_valid;
 
+	bool ext_control;
+
 	char **supplied_to;
 	size_t num_supplicants;
 };
-- 
2.7.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 3/3] power: bq24735-charger: document 'ti,external-control' option
  2016-02-03  6:03 [PATCH 0/3] power: bq24735-charger: chromebook fixes Jonathan Tinkham
       [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2016-02-03  6:03 ` Jonathan Tinkham
  2016-02-08 17:24   ` Rob Herring
  2016-02-15  5:58 ` [PATCH 0/3] power: bq24735-charger: chromebook fixes Sebastian Reichel
  2 siblings, 1 reply; 6+ messages in thread
From: Jonathan Tinkham @ 2016-02-03  6:03 UTC (permalink / raw)
  To: linux-pm, devicetree
  Cc: sre, dbaryshkov, dwmw2, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, Jonathan Tinkham

Implement an 'external-control' option for when the charger
shouldn't be configured by the kernel.

Signed-off-by: Jonathan Tinkham <sctincman@gmail.com>
---
 Documentation/devicetree/bindings/power_supply/ti,bq24735.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt b/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt
index 4f6a550..3bf5575 100644
--- a/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt
+++ b/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt
@@ -22,6 +22,9 @@ Optional properties :
    value must be between 128mA and 8.064A with a 128mA step resolution. The
    POR value is 0x1000h. This number is in mA (e.g. 8064), see the spec for
    more information about the InputCurrent (0x3fh) register.
+ - ti,external-control : Indicates that the charger is configured externally
+   and that the host should not attempt to enable/disable charging or set the
+   charge voltage/current.
 
 Example:
 
-- 
2.7.0


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

* Re: [PATCH 3/3] power: bq24735-charger: document 'ti,external-control' option
  2016-02-03  6:03 ` [PATCH 3/3] power: bq24735-charger: document " Jonathan Tinkham
@ 2016-02-08 17:24   ` Rob Herring
  0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring @ 2016-02-08 17:24 UTC (permalink / raw)
  To: Jonathan Tinkham
  Cc: linux-pm, devicetree, sre, dbaryshkov, dwmw2, pawel.moll,
	mark.rutland, ijc+devicetree, galak

On Tue, Feb 02, 2016 at 11:03:46PM -0700, Jonathan Tinkham wrote:
> Implement an 'external-control' option for when the charger
> shouldn't be configured by the kernel.
> 
> Signed-off-by: Jonathan Tinkham <sctincman@gmail.com>
> ---
>  Documentation/devicetree/bindings/power_supply/ti,bq24735.txt | 3 +++
>  1 file changed, 3 insertions(+)

Acked-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH 0/3] power: bq24735-charger: chromebook fixes
  2016-02-03  6:03 [PATCH 0/3] power: bq24735-charger: chromebook fixes Jonathan Tinkham
       [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2016-02-03  6:03 ` [PATCH 3/3] power: bq24735-charger: document " Jonathan Tinkham
@ 2016-02-15  5:58 ` Sebastian Reichel
  2 siblings, 0 replies; 6+ messages in thread
From: Sebastian Reichel @ 2016-02-15  5:58 UTC (permalink / raw)
  To: Jonathan Tinkham
  Cc: linux-pm, devicetree, dbaryshkov, dwmw2, robh+dt, pawel.moll,
	mark.rutland, ijc+devicetree, galak

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

Hi,

On Tue, Feb 02, 2016 at 11:03:43PM -0700, Jonathan Tinkham wrote:
> On Acer Chromebook 13 (CB5-311) this module fails to load if the charger
> is not inserted, and will error when it is removed.
> 
> These fixes are adapted from Acer's downstream kernel.

Thanks, queued for 4.6.

-- Sebastian

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

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

end of thread, other threads:[~2016-02-15  5:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-03  6:03 [PATCH 0/3] power: bq24735-charger: chromebook fixes Jonathan Tinkham
     [not found] ` <1454479426-6437-1-git-send-email-sctincman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-02-03  6:03   ` [PATCH 1/3] power: bq24735-charger: fix failed i2c with ac-detect Jonathan Tinkham
2016-02-03  6:03   ` [PATCH 2/3] power: bq24735-charger: add 'ti,external-control' option Jonathan Tinkham
2016-02-03  6:03 ` [PATCH 3/3] power: bq24735-charger: document " Jonathan Tinkham
2016-02-08 17:24   ` Rob Herring
2016-02-15  5:58 ` [PATCH 0/3] power: bq24735-charger: chromebook fixes Sebastian Reichel

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.