All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] gpio-charger: add devicetree support
@ 2014-03-12 13:45 ` Heiko Stübner
  0 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 13:45 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala
  Cc: David Woodhouse, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA

This series adds devicetree support to the gpio-charger and fixes a small
issue with the return value of gpio_get_value.

Heiko Stuebner (3):
  dt-bindings: document gpio-charger bindings
  power: gpio-charger: add device tree support
  power: gpio-charger: do not use gpio value directly

 .../bindings/power_supply/gpio-charger.txt         | 23 ++++++++
 drivers/power/gpio-charger.c                       | 68 ++++++++++++++++++++--
 2 files changed, 87 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/power_supply/gpio-charger.txt

-- 
1.8.5.3


--
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] 8+ messages in thread

* [PATCH 0/3] gpio-charger: add devicetree support
@ 2014-03-12 13:45 ` Heiko Stübner
  0 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 13:45 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala
  Cc: David Woodhouse, linux-kernel, devicetree

This series adds devicetree support to the gpio-charger and fixes a small
issue with the return value of gpio_get_value.

Heiko Stuebner (3):
  dt-bindings: document gpio-charger bindings
  power: gpio-charger: add device tree support
  power: gpio-charger: do not use gpio value directly

 .../bindings/power_supply/gpio-charger.txt         | 23 ++++++++
 drivers/power/gpio-charger.c                       | 68 ++++++++++++++++++++--
 2 files changed, 87 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/power_supply/gpio-charger.txt

-- 
1.8.5.3



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

* [PATCH 1/3] dt-bindings: document gpio-charger bindings
  2014-03-12 13:45 ` Heiko Stübner
  (?)
@ 2014-03-12 13:46 ` Heiko Stübner
  2014-03-12 14:28     ` Rob Herring
  -1 siblings, 1 reply; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 13:46 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Woodhouse, linux-kernel, devicetree

From: Heiko Stuebner <heiko.stuebner@bq.com>

This documents the binding for the gpio-charger power-supply.

Signed-off-by: Heiko Stuebner <heiko.stuebner@bq.com>
---
 .../bindings/power_supply/gpio-charger.txt         | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power_supply/gpio-charger.txt

diff --git a/Documentation/devicetree/bindings/power_supply/gpio-charger.txt b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
new file mode 100644
index 0000000..fad87a4
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
@@ -0,0 +1,23 @@
+gpio-charger
+
+Required properties :
+ - compatible : "gpio-charger"
+ - gpios : GPIO indicating the charger presence.
+   See GPIO binding in bindings/gpio/gpio.txt .
+ - charger-type : power supply type, one of
+     unknown
+     battery
+     ups
+     mains
+     usb-sdp (USB standard downstream port)
+     usb-dcp (USB dedicated charging port)
+     usb-cdp (USB charging downstream port)
+     usb-aca (USB accessory charger adapter)
+
+Example:
+
+	charger {
+		compatible = "gpio-charger";
+		charger-type = "usb-sdp";
+		gpios = <&gpf0 2 0 0 0>;
+	}
-- 
1.8.5.3

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

* [PATCH 2/3] power: gpio-charger: add device tree support
  2014-03-12 13:45 ` Heiko Stübner
  (?)
  (?)
@ 2014-03-12 13:48 ` Heiko Stübner
  -1 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 13:48 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Woodhouse, linux-kernel, devicetree

From: Heiko Stuebner <heiko.stuebner@bq.com>

Add the ability to parse gpio-charger data from a devicetree node.

Signed-off-by: Heiko Stuebner <heiko.stuebner@bq.com>
---
 drivers/power/gpio-charger.c | 66 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 63 insertions(+), 3 deletions(-)

diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c
index a0024b2..64d31a8 100644
--- a/drivers/power/gpio-charger.c
+++ b/drivers/power/gpio-charger.c
@@ -22,6 +22,8 @@
 #include <linux/platform_device.h>
 #include <linux/power_supply.h>
 #include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
 
 #include <linux/power/gpio-charger.h>
 
@@ -69,17 +71,68 @@ static enum power_supply_property gpio_charger_properties[] = {
 	POWER_SUPPLY_PROP_ONLINE,
 };
 
+static
+struct gpio_charger_platform_data *gpio_charger_parse_dt(struct device *dev)
+{
+	struct device_node *np = dev->of_node;
+	struct gpio_charger_platform_data *pdata;
+	const char *chargetype;
+	enum of_gpio_flags flags;
+	int ret;
+
+	if (!np)
+		return ERR_PTR(-ENOENT);
+
+	pdata = devm_kzalloc(dev, sizeof(struct gpio_charger_platform_data),
+			     GFP_KERNEL);
+	if (!pdata)
+		return ERR_PTR(-ENOMEM);
+
+	pdata->name = np->name;
+
+	pdata->gpio = of_get_gpio_flags(np, 0, &flags);
+	pdata->gpio_active_low = flags & OF_GPIO_ACTIVE_LOW;
+
+	pdata->type = POWER_SUPPLY_TYPE_UNKNOWN;
+	ret = of_property_read_string(np, "charger-type", &chargetype);
+	if (ret >= 0) {
+		if (!strncmp("unknown", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_UNKNOWN;
+		else if (!strncmp("battery", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_BATTERY;
+		else if (!strncmp("ups", chargetype, 3))
+			pdata->type = POWER_SUPPLY_TYPE_UPS;
+		else if (!strncmp("mains", chargetype, 5))
+			pdata->type = POWER_SUPPLY_TYPE_MAINS;
+		else if (!strncmp("usb-sdp", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_USB;
+		else if (!strncmp("usb-dcp", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_USB_DCP;
+		else if (!strncmp("usb-cdp", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_USB_CDP;
+		else if (!strncmp("usb-aca", chargetype, 7))
+			pdata->type = POWER_SUPPLY_TYPE_USB_ACA;
+		else
+			dev_warn(dev, "unknown charger type %s\n", chargetype);
+	}
+
+	return pdata;
+}
+
 static int gpio_charger_probe(struct platform_device *pdev)
 {
-	const struct gpio_charger_platform_data *pdata = pdev->dev.platform_data;
+	struct gpio_charger_platform_data *pdata = pdev->dev.platform_data;
 	struct gpio_charger *gpio_charger;
 	struct power_supply *charger;
 	int ret;
 	int irq;
 
 	if (!pdata) {
-		dev_err(&pdev->dev, "No platform data\n");
-		return -EINVAL;
+		pdata = gpio_charger_parse_dt(&pdev->dev);
+		if (IS_ERR(pdata)) {
+			dev_err(&pdev->dev, "No platform data\n");
+			return -EINVAL;
+		}
 	}
 
 	if (!gpio_is_valid(pdata->gpio)) {
@@ -189,6 +242,12 @@ static int gpio_charger_resume(struct device *dev)
 static SIMPLE_DEV_PM_OPS(gpio_charger_pm_ops,
 		gpio_charger_suspend, gpio_charger_resume);
 
+static const struct of_device_id gpio_charger_match[] = {
+	{ .compatible = "gpio-charger" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, gpio_charger_match);
+
 static struct platform_driver gpio_charger_driver = {
 	.probe = gpio_charger_probe,
 	.remove = gpio_charger_remove,
@@ -196,6 +255,7 @@ static struct platform_driver gpio_charger_driver = {
 		.name = "gpio-charger",
 		.owner = THIS_MODULE,
 		.pm = &gpio_charger_pm_ops,
+		.of_match_table = of_match_ptr(gpio_charger_match),
 	},
 };
 
-- 
1.8.5.3

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

* [PATCH 3/3] power: gpio-charger: do not use gpio value directly
  2014-03-12 13:45 ` Heiko Stübner
                   ` (2 preceding siblings ...)
  (?)
@ 2014-03-12 13:48 ` Heiko Stübner
  -1 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 13:48 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Woodhouse, linux-kernel, devicetree

From: Heiko Stuebner <heiko.stuebner@bq.com>

Some gpio implementations return interesting values for gpio_get_value when
the value is not 0 - as seen on a imx6sl board. Therefore do not use the
value returned from gpio_get_value directly but simply check for 0 or not 0.

Signed-off-by: Heiko Stuebner <heiko.stuebner@bq.com>
---
 drivers/power/gpio-charger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c
index 64d31a8..e665993 100644
--- a/drivers/power/gpio-charger.c
+++ b/drivers/power/gpio-charger.c
@@ -57,7 +57,7 @@ static int gpio_charger_get_property(struct power_supply *psy,
 
 	switch (psp) {
 	case POWER_SUPPLY_PROP_ONLINE:
-		val->intval = gpio_get_value_cansleep(pdata->gpio);
+		val->intval = gpio_get_value_cansleep(pdata->gpio) ? 1 : 0;
 		val->intval ^= pdata->gpio_active_low;
 		break;
 	default:
-- 
1.8.5.3

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

* Re: [PATCH 1/3] dt-bindings: document gpio-charger bindings
  2014-03-12 13:46 ` [PATCH 1/3] dt-bindings: document gpio-charger bindings Heiko Stübner
@ 2014-03-12 14:28     ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2014-03-12 14:28 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Dmitry Eremin-Solenikov, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, David Woodhouse,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On Wed, Mar 12, 2014 at 8:46 AM, Heiko Stübner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> wrote:
> From: Heiko Stuebner <heiko.stuebner-K3U4GQvHnyU@public.gmane.org>
>
> This documents the binding for the gpio-charger power-supply.

How does this relate to what's documented in power_supply.txt and
charger-manager.txt? Both have references to USB charging. Doesn't
this need some connection to a battery node?

Rob

>
> Signed-off-by: Heiko Stuebner <heiko.stuebner-K3U4GQvHnyU@public.gmane.org>
> ---
>  .../bindings/power_supply/gpio-charger.txt         | 23 ++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power_supply/gpio-charger.txt
>
> diff --git a/Documentation/devicetree/bindings/power_supply/gpio-charger.txt b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> new file mode 100644
> index 0000000..fad87a4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> @@ -0,0 +1,23 @@
> +gpio-charger
> +
> +Required properties :
> + - compatible : "gpio-charger"
> + - gpios : GPIO indicating the charger presence.
> +   See GPIO binding in bindings/gpio/gpio.txt .
> + - charger-type : power supply type, one of
> +     unknown
> +     battery
> +     ups
> +     mains
> +     usb-sdp (USB standard downstream port)
> +     usb-dcp (USB dedicated charging port)
> +     usb-cdp (USB charging downstream port)
> +     usb-aca (USB accessory charger adapter)
> +
> +Example:
> +
> +       charger {
> +               compatible = "gpio-charger";
> +               charger-type = "usb-sdp";
> +               gpios = <&gpf0 2 0 0 0>;
> +       }
> --
> 1.8.5.3
>
>
--
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] 8+ messages in thread

* Re: [PATCH 1/3] dt-bindings: document gpio-charger bindings
@ 2014-03-12 14:28     ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2014-03-12 14:28 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Dmitry Eremin-Solenikov, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, David Woodhouse,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org

On Wed, Mar 12, 2014 at 8:46 AM, Heiko Stübner <heiko@sntech.de> wrote:
> From: Heiko Stuebner <heiko.stuebner@bq.com>
>
> This documents the binding for the gpio-charger power-supply.

How does this relate to what's documented in power_supply.txt and
charger-manager.txt? Both have references to USB charging. Doesn't
this need some connection to a battery node?

Rob

>
> Signed-off-by: Heiko Stuebner <heiko.stuebner@bq.com>
> ---
>  .../bindings/power_supply/gpio-charger.txt         | 23 ++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power_supply/gpio-charger.txt
>
> diff --git a/Documentation/devicetree/bindings/power_supply/gpio-charger.txt b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> new file mode 100644
> index 0000000..fad87a4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> @@ -0,0 +1,23 @@
> +gpio-charger
> +
> +Required properties :
> + - compatible : "gpio-charger"
> + - gpios : GPIO indicating the charger presence.
> +   See GPIO binding in bindings/gpio/gpio.txt .
> + - charger-type : power supply type, one of
> +     unknown
> +     battery
> +     ups
> +     mains
> +     usb-sdp (USB standard downstream port)
> +     usb-dcp (USB dedicated charging port)
> +     usb-cdp (USB charging downstream port)
> +     usb-aca (USB accessory charger adapter)
> +
> +Example:
> +
> +       charger {
> +               compatible = "gpio-charger";
> +               charger-type = "usb-sdp";
> +               gpios = <&gpf0 2 0 0 0>;
> +       }
> --
> 1.8.5.3
>
>

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

* Re: [PATCH 1/3] dt-bindings: document gpio-charger bindings
  2014-03-12 14:28     ` Rob Herring
  (?)
@ 2014-03-12 14:57     ` Heiko Stübner
  -1 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2014-03-12 14:57 UTC (permalink / raw)
  To: Rob Herring
  Cc: Dmitry Eremin-Solenikov, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, David Woodhouse,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org

Hi Rob,

Am Mittwoch, 12. März 2014, 09:28:46 schrieb Rob Herring:
> On Wed, Mar 12, 2014 at 8:46 AM, Heiko Stübner <heiko@sntech.de> wrote:
> > From: Heiko Stuebner <heiko.stuebner@bq.com>
> > 
> > This documents the binding for the gpio-charger power-supply.
> 
> How does this relate to what's documented in power_supply.txt and
> charger-manager.txt? Both have references to USB charging. Doesn't
> this need some connection to a battery node?

Yep, the gpio-charger takes the position of the "some,usb-charger" from 
power_supply.txt .

       usb_charger: charger {
               compatible = "gpio-charger";
               charger-type = "usb-sdp";
               gpios = <&gpf0 2 0 0 0>;
       }

       battery {
               power-supplies = <&usb_charger>;
       };


I guess the binding doc could reflect this.


I haven't deeply looked into what charger-manager does, bit it seems to be a 
layer on top of chargers and batteries, controlling them. So it seems to be 
used with more intelligent components.

My setup using gpio-charger for example is vastly simpler, it's just a gpio 
reporting charger present (for gpio-charger), an adc reporting the battery 
voltage and another gpio reporting the charging state (which is already 
handled in generic-adc-battery, but needs a dt binding too).


Heiko

> > Signed-off-by: Heiko Stuebner <heiko.stuebner@bq.com>
> > ---
> > 
> >  .../bindings/power_supply/gpio-charger.txt         | 23
> >  ++++++++++++++++++++++ 1 file changed, 23 insertions(+)
> >  create mode 100644
> >  Documentation/devicetree/bindings/power_supply/gpio-charger.txt> 
> > diff --git
> > a/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> > b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt new
> > file mode 100644
> > index 0000000..fad87a4
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/power_supply/gpio-charger.txt
> > @@ -0,0 +1,23 @@
> > +gpio-charger
> > +
> > +Required properties :
> > + - compatible : "gpio-charger"
> > + - gpios : GPIO indicating the charger presence.
> > +   See GPIO binding in bindings/gpio/gpio.txt .
> > + - charger-type : power supply type, one of
> > +     unknown
> > +     battery
> > +     ups
> > +     mains
> > +     usb-sdp (USB standard downstream port)
> > +     usb-dcp (USB dedicated charging port)
> > +     usb-cdp (USB charging downstream port)
> > +     usb-aca (USB accessory charger adapter)
> > +
> > +Example:
> > +
> > +       charger {
> > +               compatible = "gpio-charger";
> > +               charger-type = "usb-sdp";
> > +               gpios = <&gpf0 2 0 0 0>;
> > +       }
> > --
> > 1.8.5.3

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

end of thread, other threads:[~2014-03-12 14:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-12 13:45 [PATCH 0/3] gpio-charger: add devicetree support Heiko Stübner
2014-03-12 13:45 ` Heiko Stübner
2014-03-12 13:46 ` [PATCH 1/3] dt-bindings: document gpio-charger bindings Heiko Stübner
2014-03-12 14:28   ` Rob Herring
2014-03-12 14:28     ` Rob Herring
2014-03-12 14:57     ` Heiko Stübner
2014-03-12 13:48 ` [PATCH 2/3] power: gpio-charger: add device tree support Heiko Stübner
2014-03-12 13:48 ` [PATCH 3/3] power: gpio-charger: do not use gpio value directly Heiko Stübner

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.