* [PATCH 0/2] Add devicetree support for extcon-gpio @ 2014-06-17 3:58 George Cherian 2014-06-17 3:58 ` [PATCH 1/2] extcon: gpio: Minor cleanups George Cherian 2014-06-17 3:58 ` [PATCH 2/2] extcon: gpio: Add dt support for the driver George Cherian 0 siblings, 2 replies; 5+ messages in thread From: George Cherian @ 2014-06-17 3:58 UTC (permalink / raw) To: cw00.choi, myungjoo.ham, grant.likely, rdunlap, galak, mark.rutland, ijc+devicetree, robh+dt, pawel.moll, linux Cc: linux-kernel, linux-doc, devicetree, george.cherian This serires adds devicetree support for extcon-gpio driver. Patch 1 - Addreses minor cleanups Patch 2 - Adds devicetree support for esxtcon-gpio driver. George Cherian (2): extcon: gpio: Minor cleanups extcon: gpio: Add dt support for the driver. .../devicetree/bindings/extcon/extcon-gpio.txt | 34 +++++++++++++++++++ drivers/extcon/extcon-gpio.c | 39 +++++++++++++++++++--- include/linux/extcon/extcon-gpio.h | 4 ++- 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/extcon/extcon-gpio.txt -- 1.8.3.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] extcon: gpio: Minor cleanups 2014-06-17 3:58 [PATCH 0/2] Add devicetree support for extcon-gpio George Cherian @ 2014-06-17 3:58 ` George Cherian 2014-06-17 3:58 ` [PATCH 2/2] extcon: gpio: Add dt support for the driver George Cherian 1 sibling, 0 replies; 5+ messages in thread From: George Cherian @ 2014-06-17 3:58 UTC (permalink / raw) To: cw00.choi, myungjoo.ham, grant.likely, rdunlap, galak, mark.rutland, ijc+devicetree, robh+dt, pawel.moll, linux Cc: linux-kernel, linux-doc, devicetree, george.cherian Minor Cleanups - Order the include files in alphabetical order. - Fix description of state_off in extcon_gpio.h - Add a descrition for check_on_resume in extcon_gpio.h Signed-off-by: George Cherian <george.cherian@ti.com> --- drivers/extcon/extcon-gpio.c | 10 +++++----- include/linux/extcon/extcon-gpio.h | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c index 645b283..6c268b4 100644 --- a/drivers/extcon/extcon-gpio.c +++ b/drivers/extcon/extcon-gpio.c @@ -20,16 +20,16 @@ * */ -#include <linux/module.h> -#include <linux/kernel.h> +#include <linux/extcon.h> +#include <linux/extcon/extcon-gpio.h> +#include <linux/gpio.h> #include <linux/init.h> #include <linux/interrupt.h> +#include <linux/kernel.h> +#include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> #include <linux/workqueue.h> -#include <linux/gpio.h> -#include <linux/extcon.h> -#include <linux/extcon/extcon-gpio.h> struct gpio_extcon_data { struct extcon_dev *edev; diff --git a/include/linux/extcon/extcon-gpio.h b/include/linux/extcon/extcon-gpio.h index 8900fdf..0b17ad4 100644 --- a/include/linux/extcon/extcon-gpio.h +++ b/include/linux/extcon/extcon-gpio.h @@ -34,8 +34,10 @@ * @irq_flags: IRQ Flags (e.g., IRQF_TRIGGER_LOW). * @state_on: print_state is overriden with state_on if attached. * If NULL, default method of extcon class is used. - * @state_off: print_state is overriden with state_on if detached. + * @state_off: print_state is overriden with state_off if detached. * If NUll, default method of extcon class is used. + * @check_on_resume: Boolean describing whether to check the state of gpio + * while resuming from sleep. * * Note that in order for state_on or state_off to be valid, both state_on * and state_off should be not NULL. If at least one of them is NULL, -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] extcon: gpio: Add dt support for the driver. 2014-06-17 3:58 [PATCH 0/2] Add devicetree support for extcon-gpio George Cherian 2014-06-17 3:58 ` [PATCH 1/2] extcon: gpio: Minor cleanups George Cherian @ 2014-06-17 3:58 ` George Cherian 2014-06-17 15:57 ` Mark Rutland 1 sibling, 1 reply; 5+ messages in thread From: George Cherian @ 2014-06-17 3:58 UTC (permalink / raw) To: cw00.choi, myungjoo.ham, grant.likely, rdunlap, galak, mark.rutland, ijc+devicetree, robh+dt, pawel.moll, linux Cc: linux-kernel, linux-doc, devicetree, george.cherian Add device tree support to extcon-gpio driver. Add devicetree binding documentation Signed-off-by: George Cherian <george.cherian@ti.com> --- .../devicetree/bindings/extcon/extcon-gpio.txt | 34 ++++++++++++++++++++++ drivers/extcon/extcon-gpio.c | 29 ++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/extcon/extcon-gpio.txt diff --git a/Documentation/devicetree/bindings/extcon/extcon-gpio.txt b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt new file mode 100644 index 0000000..80b791b --- /dev/null +++ b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt @@ -0,0 +1,34 @@ +GPIO based EXTCON + +EXTCON GPIO +----------- + +Required Properties: + - compatible: should be: + * "ti,extcon-gpio" + - gpios: specifies the gpio pin used. + - debounce: Debounce time for GPIO IRQ in ms + - irq-flags: IRQ flag to be used ( eg: IRQ_TYPE_EDGE_FALLING) + +Optional Properties: + - gpio-active-low: Property describing whether gpio active state is 1 or 0 + If defined , low state of gpio means active. + - check-on-resume: Property describing whether to check the gpio state + while resuming from SLEEP. + - state-on: print_state is overriden with state_on string if provided. + If NULL, default method of extcon class is used. + - state_off: print_state is overriden with state_off string if provided. + If NUll, default method of extcon class is used. + +Eg: + + extcon1: am43_usbid_extcon1 { + compatible = "ti,extcon-gpio"; + gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>; + gpio-active-low; + debounce = <20>; + irq-flags = <IRQ_TYPE_EDGE_FALLING>; + state-on = "USB ID FLOAT"; + state-off = "USB ID GND"; + + }; diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c index 6c268b4..14d999d 100644 --- a/drivers/extcon/extcon-gpio.c +++ b/drivers/extcon/extcon-gpio.c @@ -27,6 +27,7 @@ #include <linux/interrupt.h> #include <linux/kernel.h> #include <linux/module.h> +#include <linux/of_gpio.h> #include <linux/platform_device.h> #include <linux/slab.h> #include <linux/workqueue.h> @@ -83,12 +84,34 @@ static ssize_t extcon_gpio_print_state(struct extcon_dev *edev, char *buf) static int gpio_extcon_probe(struct platform_device *pdev) { + struct device_node *np = pdev->dev.of_node; struct gpio_extcon_platform_data *pdata = dev_get_platdata(&pdev->dev); struct gpio_extcon_data *extcon_data; int ret; + if (np) { + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + + pdata->gpio = of_get_gpio(np, 0); + if (!gpio_is_valid(pdata->gpio)) + return -EPROBE_DEFER; + + pdata->name = np->name; + pdata->gpio_active_low = of_property_read_bool(np, + "gpio-active-low"); + pdata->check_on_resume = of_property_read_bool(np, + "check-on-resume"); + of_property_read_u32(np, "debounce", (u32 *)&pdata->debounce); + of_property_read_u32(np, "irq-flags", (u32 *)&pdata->irq_flags); + of_property_read_string(np, "state-on", &pdata->state_on); + of_property_read_string(np, "state-off", &pdata->state_off); + } + if (!pdata) return -EBUSY; + if (!pdata->irq_flags) { dev_err(&pdev->dev, "IRQ flag is not specified.\n"); return -EINVAL; @@ -177,6 +200,11 @@ static int gpio_extcon_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(gpio_extcon_pm_ops, NULL, gpio_extcon_resume); +static struct of_device_id of_extcon_gpio_match_tbl[] = { + { .compatible = "ti,extcon-gpio", }, + { /* end */ } +}; + static struct platform_driver gpio_extcon_driver = { .probe = gpio_extcon_probe, .remove = gpio_extcon_remove, @@ -184,6 +212,7 @@ static struct platform_driver gpio_extcon_driver = { .name = "extcon-gpio", .owner = THIS_MODULE, .pm = &gpio_extcon_pm_ops, + .of_match_table = of_extcon_gpio_match_tbl, }, }; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] extcon: gpio: Add dt support for the driver. 2014-06-17 3:58 ` [PATCH 2/2] extcon: gpio: Add dt support for the driver George Cherian @ 2014-06-17 15:57 ` Mark Rutland 2014-06-19 3:30 ` George Cherian 0 siblings, 1 reply; 5+ messages in thread From: Mark Rutland @ 2014-06-17 15:57 UTC (permalink / raw) To: George Cherian Cc: cw00.choi@samsung.com, myungjoo.ham@samsung.com, grant.likely@linaro.org, rdunlap@infradead.org, galak@codeaurora.org, ijc+devicetree@hellion.org.uk, robh+dt@kernel.org, Pawel Moll, linux@roeck-us.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org On Tue, Jun 17, 2014 at 04:58:20AM +0100, George Cherian wrote: > Add device tree support to extcon-gpio driver. > Add devicetree binding documentation > > Signed-off-by: George Cherian <george.cherian@ti.com> > --- > .../devicetree/bindings/extcon/extcon-gpio.txt | 34 ++++++++++++++++++++++ > drivers/extcon/extcon-gpio.c | 29 ++++++++++++++++++ > 2 files changed, 63 insertions(+) > create mode 100644 Documentation/devicetree/bindings/extcon/extcon-gpio.txt > > diff --git a/Documentation/devicetree/bindings/extcon/extcon-gpio.txt b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt > new file mode 100644 > index 0000000..80b791b > --- /dev/null > +++ b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt > @@ -0,0 +1,34 @@ > +GPIO based EXTCON > + > +EXTCON GPIO > +----------- > + > +Required Properties: > + - compatible: should be: > + * "ti,extcon-gpio" > + - gpios: specifies the gpio pin used. > + - debounce: Debounce time for GPIO IRQ in ms > + - irq-flags: IRQ flag to be used ( eg: IRQ_TYPE_EDGE_FALLING) This looks distinctly odd. Why do you need this here? > +Optional Properties: > + - gpio-active-low: Property describing whether gpio active state is 1 or 0 > + If defined , low state of gpio means active. Surely this is defined in the gpio flags? > + - check-on-resume: Property describing whether to check the gpio state > + while resuming from SLEEP. Does this need to be in DT? Surely we could jsut always check this? > + - state-on: print_state is overriden with state_on string if provided. > + If NULL, default method of extcon class is used. > + - state_off: print_state is overriden with state_off string if provided. > + If NUll, default method of extcon class is used. This means nothing from a HW perspective. This describes linux internal details. [...] > + of_property_read_u32(np, "debounce", (u32 *)&pdata->debounce); > + of_property_read_u32(np, "irq-flags", (u32 *)&pdata->irq_flags); If you need theses casts, the code is broken. These functions can only read into a u32. If you pass a smaller type you'll trash aribtrary memory locations, and if you pass a larger type this is broken for BE. Mark. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] extcon: gpio: Add dt support for the driver. 2014-06-17 15:57 ` Mark Rutland @ 2014-06-19 3:30 ` George Cherian 0 siblings, 0 replies; 5+ messages in thread From: George Cherian @ 2014-06-19 3:30 UTC (permalink / raw) To: Mark Rutland Cc: cw00.choi@samsung.com, myungjoo.ham@samsung.com, grant.likely@linaro.org, rdunlap@infradead.org, galak@codeaurora.org, ijc+devicetree@hellion.org.uk, robh+dt@kernel.org, Pawel Moll, linux@roeck-us.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org On 6/17/2014 9:27 PM, Mark Rutland wrote: > On Tue, Jun 17, 2014 at 04:58:20AM +0100, George Cherian wrote: >> Add device tree support to extcon-gpio driver. >> Add devicetree binding documentation >> >> Signed-off-by: George Cherian <george.cherian@ti.com> >> --- >> .../devicetree/bindings/extcon/extcon-gpio.txt | 34 ++++++++++++++++++++++ >> drivers/extcon/extcon-gpio.c | 29 ++++++++++++++++++ >> 2 files changed, 63 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/extcon/extcon-gpio.txt >> >> diff --git a/Documentation/devicetree/bindings/extcon/extcon-gpio.txt b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt >> new file mode 100644 >> index 0000000..80b791b >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/extcon/extcon-gpio.txt >> @@ -0,0 +1,34 @@ >> +GPIO based EXTCON >> + >> +EXTCON GPIO >> +----------- >> + >> +Required Properties: >> + - compatible: should be: >> + * "ti,extcon-gpio" >> + - gpios: specifies the gpio pin used. >> + - debounce: Debounce time for GPIO IRQ in ms >> + - irq-flags: IRQ flag to be used ( eg: IRQ_TYPE_EDGE_FALLING) > This looks distinctly odd. Why do you need this here? The driver takes this as part of platform data. It never continues operation if an invalid irq-flag is supplied. Also these can be used for different SoC's whose GPIO's might support IRQ_TYPE_EDGE_FALLING/RISING. Now since this is based on gpio we cant up front give a seperate "interrupts = " property, since we dont know the gpio-pin irq number. Chanwoo any comments? > >> +Optional Properties: >> + - gpio-active-low: Property describing whether gpio active state is 1 or 0 >> + If defined , low state of gpio means active. > Surely this is defined in the gpio flags? Yes, I will make necessary changes. > >> + - check-on-resume: Property describing whether to check the gpio state >> + while resuming from SLEEP. > Does this need to be in DT? Surely we could jsut always check this? okay. For my use-case I dont need this. Chanwoo, any comments? >> + - state-on: print_state is overriden with state_on string if provided. >> + If NULL, default method of extcon class is used. >> + - state_off: print_state is overriden with state_off string if provided. >> + If NUll, default method of extcon class is used. > This means nothing from a HW perspective. This describes linux internal > details. You mean to say this should not be part of dt? > [...] > >> + of_property_read_u32(np, "debounce", (u32 *)&pdata->debounce); >> + of_property_read_u32(np, "irq-flags", (u32 *)&pdata->irq_flags); > If you need theses casts, the code is broken. I dont need this, will remove in v2. > > These functions can only read into a u32. If you pass a smaller type > you'll trash aribtrary memory locations, and if you pass a larger type > this is broken for BE. true. > Mark. -- -George ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-06-19 3:30 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-17 3:58 [PATCH 0/2] Add devicetree support for extcon-gpio George Cherian 2014-06-17 3:58 ` [PATCH 1/2] extcon: gpio: Minor cleanups George Cherian 2014-06-17 3:58 ` [PATCH 2/2] extcon: gpio: Add dt support for the driver George Cherian 2014-06-17 15:57 ` Mark Rutland 2014-06-19 3:30 ` George Cherian
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).