From: Javier Martinez Canillas <martinez.javier@gmail.com> To: Linus Walleij <linus.walleij@linaro.org> Cc: Stephen Warren <swarren@wwwdotorg.org>, Jon Hunter <jon-hunter@ti.com>, Grant Likely <grant.likely@secretlab.ca>, Alexandre Courbot <acourbot@nvidia.com>, Stephen Warren <swarren@nvidia.com>, Kevin Hilman <khilman@deeprootsystems.com>, "devicetree-discuss@lists.ozlabs.org" <devicetree-discuss@lists.ozlabs.org>, "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>, Tarun Kanti DebBarma <tarun.kanti@ti.com>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH 3/5] gpio/omap: Add DT support to GPIO driver Date: Mon, 15 Apr 2013 13:25:38 +0200 [thread overview] Message-ID: <CAAwP0s2tdDGXsWm0b5rHsxcv_qjMSOqE8g_mmyNW3oeXW=VpYA@mail.gmail.com> (raw) In-Reply-To: <CACRpkda4h+qXTvsirPAS7E7sjXhMLE62q=VDy53W8UchsYjbNg@mail.gmail.com> On Sun, Apr 14, 2013 at 10:53 PM, Linus Walleij <linus.walleij@linaro.org> wrote: > On Sun, Apr 14, 2013 at 3:35 AM, Javier Martinez Canillas > <martinez.javier@gmail.com> wrote: > >> Is the following inlined patch [1] what you were thinking that would >> be the right approach? Hi Linus, thanks a lot for your feedback. > > This looks sort of OK, but I'm still struggling with the question of > what we could do to help other implementations facing the same issue. > Yes, I don't know how we can make it easier to other implementations (besides adding the irq_request hook to irq_chip) since the logic is GPIO controller specific. For example I took a look to drivers/gpio/gpio-tegra.c and if I understood correctly, the implementation for this driver should be something like this: diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 414ad91..a2d5c3d 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c @@ -346,6 +346,11 @@ static int tegra_gpio_wake_enable(struct irq_data *d, unsigned int enable) } #endif +static int tegra_gpio_irq_request(struct irq_data *d) +{ + tegra_gpio_request(NULL, d->hwirq); +} + static struct irq_chip tegra_gpio_irq_chip = { .name = "GPIO", .irq_ack = tegra_gpio_irq_ack, @@ -355,6 +360,7 @@ static struct irq_chip tegra_gpio_irq_chip = { #ifdef CONFIG_PM_SLEEP .irq_set_wake = tegra_gpio_wake_enable, #endif + .irq_request = tegra_gpio_irq_request, }; static const struct dev_pm_ops tegra_gpio_pm_ops = { This is definitely quite similar to the omap-gpio.c change but not the same. > This is a pretty hard design pattern to properly replicate in every such > driver is it not? > > Hmmmm > Is indeed a hard design pattern but I couldn't figure out a more generic way to handle this. Maybe we could use [1] for now to solve the issue that we have with OMAP GPIO and later when the same issue is found on other GPIO controllers and a similar change is made on these drivers we will see some form of pattern that emerge allowing us to make a later refactor to reduce the code duplication. Or do you have a better idea on how to solve this? > Yours, > Linus Walleij Best regards, Javier
WARNING: multiple messages have this Message-ID (diff)
From: martinez.javier@gmail.com (Javier Martinez Canillas) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 3/5] gpio/omap: Add DT support to GPIO driver Date: Mon, 15 Apr 2013 13:25:38 +0200 [thread overview] Message-ID: <CAAwP0s2tdDGXsWm0b5rHsxcv_qjMSOqE8g_mmyNW3oeXW=VpYA@mail.gmail.com> (raw) In-Reply-To: <CACRpkda4h+qXTvsirPAS7E7sjXhMLE62q=VDy53W8UchsYjbNg@mail.gmail.com> On Sun, Apr 14, 2013 at 10:53 PM, Linus Walleij <linus.walleij@linaro.org> wrote: > On Sun, Apr 14, 2013 at 3:35 AM, Javier Martinez Canillas > <martinez.javier@gmail.com> wrote: > >> Is the following inlined patch [1] what you were thinking that would >> be the right approach? Hi Linus, thanks a lot for your feedback. > > This looks sort of OK, but I'm still struggling with the question of > what we could do to help other implementations facing the same issue. > Yes, I don't know how we can make it easier to other implementations (besides adding the irq_request hook to irq_chip) since the logic is GPIO controller specific. For example I took a look to drivers/gpio/gpio-tegra.c and if I understood correctly, the implementation for this driver should be something like this: diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 414ad91..a2d5c3d 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c @@ -346,6 +346,11 @@ static int tegra_gpio_wake_enable(struct irq_data *d, unsigned int enable) } #endif +static int tegra_gpio_irq_request(struct irq_data *d) +{ + tegra_gpio_request(NULL, d->hwirq); +} + static struct irq_chip tegra_gpio_irq_chip = { .name = "GPIO", .irq_ack = tegra_gpio_irq_ack, @@ -355,6 +360,7 @@ static struct irq_chip tegra_gpio_irq_chip = { #ifdef CONFIG_PM_SLEEP .irq_set_wake = tegra_gpio_wake_enable, #endif + .irq_request = tegra_gpio_irq_request, }; static const struct dev_pm_ops tegra_gpio_pm_ops = { This is definitely quite similar to the omap-gpio.c change but not the same. > This is a pretty hard design pattern to properly replicate in every such > driver is it not? > > Hmmmm > Is indeed a hard design pattern but I couldn't figure out a more generic way to handle this. Maybe we could use [1] for now to solve the issue that we have with OMAP GPIO and later when the same issue is found on other GPIO controllers and a similar change is made on these drivers we will see some form of pattern that emerge allowing us to make a later refactor to reduce the code duplication. Or do you have a better idea on how to solve this? > Yours, > Linus Walleij Best regards, Javier
next prev parent reply other threads:[~2013-04-15 11:25 UTC|newest] Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-02-15 16:04 [PATCH 0/5] gpio/omap: Cleanup and adaptation to Device Tree Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson 2012-02-15 16:04 ` [PATCH 1/5] gpio/omap: Remove bank->id information and misc cleanup Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson 2012-02-16 5:53 ` DebBarma, Tarun Kanti 2012-02-16 5:53 ` DebBarma, Tarun Kanti 2012-02-16 9:33 ` Cousson, Benoit 2012-02-16 9:33 ` Cousson, Benoit 2012-02-15 16:04 ` [PATCH 2/5] gpio/omap: Use devm_ API and add request_mem_region Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson 2012-02-16 5:41 ` DebBarma, Tarun Kanti 2012-02-16 5:41 ` DebBarma, Tarun Kanti 2012-02-16 6:35 ` Grant Likely 2012-02-16 6:35 ` Grant Likely 2012-02-16 7:11 ` DebBarma, Tarun Kanti 2012-02-16 7:11 ` DebBarma, Tarun Kanti 2012-02-16 6:37 ` Shubhrajyoti 2012-02-16 6:37 ` Shubhrajyoti 2012-02-16 8:56 ` Cousson, Benoit 2012-02-16 8:56 ` Cousson, Benoit 2012-02-15 16:04 ` [PATCH 3/5] gpio/omap: Add DT support to GPIO driver Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson 2012-02-22 14:23 ` Rob Herring 2012-02-22 14:23 ` Rob Herring 2012-02-22 14:31 ` Cousson, Benoit 2012-02-22 14:31 ` Cousson, Benoit 2012-02-22 17:23 ` Rob Herring 2012-02-22 17:23 ` Rob Herring 2012-02-22 18:29 ` Stephen Warren 2012-02-22 18:29 ` Stephen Warren 2012-02-24 15:30 ` Cousson, Benoit 2012-02-24 15:30 ` Cousson, Benoit 2013-02-26 10:01 ` Javier Martinez Canillas 2013-02-26 10:01 ` Javier Martinez Canillas 2013-02-26 16:33 ` Stephen Warren 2013-02-26 16:33 ` Stephen Warren 2013-02-26 22:40 ` Jon Hunter 2013-02-26 22:40 ` Jon Hunter 2013-02-26 22:44 ` Stephen Warren 2013-02-26 22:44 ` Stephen Warren 2013-02-26 23:01 ` Jon Hunter 2013-02-26 23:01 ` Jon Hunter 2013-02-26 23:06 ` Stephen Warren 2013-02-26 23:06 ` Stephen Warren 2013-02-26 23:45 ` Jon Hunter 2013-02-26 23:45 ` Jon Hunter 2013-02-27 0:13 ` Stephen Warren 2013-02-27 0:13 ` Stephen Warren 2013-02-27 1:07 ` Jon Hunter 2013-02-27 1:07 ` Jon Hunter 2013-02-27 3:57 ` Javier Martinez Canillas 2013-02-27 3:57 ` Javier Martinez Canillas 2013-02-27 17:50 ` Stephen Warren 2013-02-27 17:50 ` Stephen Warren 2013-02-27 20:05 ` Javier Martinez Canillas 2013-02-27 20:05 ` Javier Martinez Canillas 2013-02-27 23:16 ` Jon Hunter 2013-02-27 23:16 ` Jon Hunter 2013-02-28 12:17 ` Javier Martinez Canillas 2013-02-28 12:17 ` Javier Martinez Canillas 2013-02-28 20:49 ` Jon Hunter 2013-02-28 20:49 ` Jon Hunter [not found] ` <512D3EC2.6050408-l0cyMroinI0@public.gmane.org> 2013-03-02 20:05 ` Grant Likely 2013-03-02 20:05 ` Grant Likely 2013-03-07 23:14 ` Jon Hunter 2013-03-07 23:14 ` Jon Hunter 2013-03-15 11:21 ` Javier Martinez Canillas 2013-03-15 11:21 ` Javier Martinez Canillas 2013-03-22 8:10 ` Linus Walleij 2013-03-22 8:10 ` Linus Walleij 2013-03-22 15:33 ` Stephen Warren 2013-03-22 15:33 ` Stephen Warren 2013-03-22 22:52 ` Jon Hunter 2013-03-22 22:52 ` Jon Hunter 2013-03-27 13:52 ` Linus Walleij 2013-03-27 13:52 ` Linus Walleij 2013-03-27 16:09 ` Stephen Warren 2013-03-27 16:09 ` Stephen Warren 2013-03-27 20:55 ` Linus Walleij 2013-03-27 20:55 ` Linus Walleij 2013-03-29 17:01 ` Stephen Warren 2013-03-29 17:01 ` Stephen Warren 2013-04-10 18:12 ` Linus Walleij 2013-04-10 18:12 ` Linus Walleij 2013-04-10 20:29 ` Stephen Warren 2013-04-10 20:29 ` Stephen Warren 2013-04-10 21:28 ` Linus Walleij 2013-04-10 21:28 ` Linus Walleij 2013-04-11 20:30 ` Stephen Warren 2013-04-11 20:30 ` Stephen Warren 2013-04-11 22:16 ` Linus Walleij 2013-04-11 22:16 ` Linus Walleij 2013-04-11 22:47 ` Stephen Warren 2013-04-11 22:47 ` Stephen Warren 2013-04-14 1:35 ` Javier Martinez Canillas 2013-04-14 1:35 ` Javier Martinez Canillas 2013-04-14 20:53 ` Linus Walleij 2013-04-14 20:53 ` Linus Walleij 2013-04-15 11:25 ` Javier Martinez Canillas [this message] 2013-04-15 11:25 ` Javier Martinez Canillas 2013-04-15 16:58 ` Stephen Warren 2013-04-15 16:58 ` Stephen Warren [not found] ` <516C73C6.5050409@ti.co m> 2013-04-15 21:40 ` Jon Hunter 2013-04-15 21:40 ` Jon Hunter 2013-04-15 21:44 ` Jon Hunter 2013-04-15 21:44 ` Jon Hunter 2013-04-15 22:16 ` Stephen Warren 2013-04-15 22:16 ` Stephen Warren 2013-04-15 23:04 ` Jon Hunter 2013-04-15 23:04 ` Jon Hunter 2013-04-16 18:40 ` Stephen Warren 2013-04-16 18:40 ` Stephen Warren 2013-04-16 19:27 ` Jon Hunter 2013-04-16 19:27 ` Jon Hunter 2013-04-16 21:57 ` Jon Hunter 2013-04-16 21:57 ` Jon Hunter 2013-04-16 22:11 ` Stephen Warren 2013-04-16 22:11 ` Stephen Warren 2013-04-16 23:14 ` Jon Hunter 2013-04-16 23:14 ` Jon Hunter 2013-04-17 0:41 ` Javier Martinez Canillas 2013-04-17 0:41 ` Javier Martinez Canillas 2013-04-17 2:00 ` Jon Hunter 2013-04-17 2:00 ` Jon Hunter 2013-04-17 7:55 ` Javier Martinez Canillas 2013-04-17 7:55 ` Javier Martinez Canillas [not found] ` <CAAwP0s2M2pnSydyDvh_rejFO=w8bCo4WE5PkxrYuk0HQDixc-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-04-17 13:25 ` Jon Hunter 2013-04-17 13:25 ` Jon Hunter 2013-04-17 13:42 ` Javier Martinez Canillas 2013-04-17 13:42 ` Javier Martinez Canillas [not found] ` <CAAwP0s2DsJAWuXWvPAkzCT0T0AG_OvMEw2sADW6LqSi1Ofd_Zw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-04-17 13:52 ` Jon Hunter 2013-04-17 13:52 ` Jon Hunter 2013-04-17 14:21 ` Javier Martinez Canillas 2013-04-17 14:21 ` Javier Martinez Canillas 2013-04-17 16:18 ` Javier Martinez Canillas 2013-04-17 16:18 ` Javier Martinez Canillas 2013-04-26 7:31 ` Linus Walleij 2013-04-26 7:31 ` Linus Walleij 2013-04-26 21:31 ` Jon Hunter 2013-04-26 21:31 ` Jon Hunter 2013-06-11 21:25 ` Grant Likely 2013-06-11 21:25 ` Grant Likely 2013-06-12 9:43 ` Linus Walleij 2013-06-12 9:43 ` Linus Walleij 2013-04-17 15:41 ` Stephen Warren 2013-04-17 15:41 ` Stephen Warren 2013-04-26 7:27 ` Linus Walleij 2013-04-26 7:27 ` Linus Walleij 2013-04-26 21:25 ` Jon Hunter 2013-04-26 21:25 ` Jon Hunter [not found] ` <517AF0C1.60009-l0cyMroinI0@public.gmane.org> 2013-05-03 14:35 ` Linus Walleij 2013-05-03 14:35 ` Linus Walleij 2013-04-26 7:11 ` Linus Walleij 2013-04-26 7:11 ` Linus Walleij 2013-04-26 6:59 ` Linus Walleij 2013-04-26 6:59 ` Linus Walleij 2013-04-15 16:53 ` Stephen Warren 2013-04-15 16:53 ` Stephen Warren 2013-04-15 20:00 ` Jon Hunter 2013-04-15 20:00 ` Jon Hunter 2013-04-11 22:49 ` Javier Martinez Canillas 2013-04-11 22:49 ` Javier Martinez Canillas 2013-04-11 22:51 ` Stephen Warren 2013-04-11 22:51 ` Stephen Warren 2013-04-10 21:44 ` Arnd Bergmann 2013-04-10 21:44 ` Arnd Bergmann 2013-02-27 3:33 ` Javier Martinez Canillas 2013-02-27 3:33 ` Javier Martinez Canillas 2013-02-27 17:47 ` Stephen Warren 2013-02-27 17:47 ` Stephen Warren 2013-02-27 20:00 ` Javier Martinez Canillas 2013-02-27 20:00 ` Javier Martinez Canillas 2013-02-26 23:08 ` Jon Hunter 2013-02-26 23:08 ` Jon Hunter 2013-02-27 3:47 ` Javier Martinez Canillas 2013-02-27 3:47 ` Javier Martinez Canillas 2013-02-27 20:13 ` Jon Hunter 2013-02-27 20:13 ` Jon Hunter 2013-02-27 23:41 ` Linus Walleij 2013-02-27 23:41 ` Linus Walleij 2013-02-28 13:04 ` Benoit Cousson 2013-02-28 13:04 ` Benoit Cousson 2013-03-01 0:09 ` Linus Walleij 2013-03-01 0:09 ` Linus Walleij 2013-03-01 0:42 ` Jon Hunter 2013-03-01 0:42 ` Jon Hunter 2012-02-15 16:04 ` [PATCH 4/5] arm/dts: OMAP4: Add gpio nodes Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson 2012-02-15 16:04 ` [PATCH 5/5] arm/dts: OMAP3: " Benoit Cousson 2012-02-15 16:04 ` Benoit Cousson
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='CAAwP0s2tdDGXsWm0b5rHsxcv_qjMSOqE8g_mmyNW3oeXW=VpYA@mail.gmail.com' \ --to=martinez.javier@gmail.com \ --cc=acourbot@nvidia.com \ --cc=devicetree-discuss@lists.ozlabs.org \ --cc=grant.likely@secretlab.ca \ --cc=jon-hunter@ti.com \ --cc=khilman@deeprootsystems.com \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=swarren@nvidia.com \ --cc=swarren@wwwdotorg.org \ --cc=tarun.kanti@ti.com \ /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.