* [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
* 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
* [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
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.