From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Arnd Bergmann <arnd@arndb.de>, Tim Harvey <tharvey@gateworks.com>,
Krzysztof Halasa <khalasa@piap.pl>,
Olof Johansson <olof@lixom.net>, Imre Kaloz <kaloz@openwrt.org>,
arm-soc <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 14/17 v1] gpio: ixp4xx: Add OF probing support
Date: Wed, 6 Feb 2019 17:13:09 +0100 [thread overview]
Message-ID: <CAMpxmJU+fmum=AP1_n0W4SaD0HuLPP67qTPO_n9WU-vWeNuSSw@mail.gmail.com> (raw)
In-Reply-To: <20190203214205.13594-15-linus.walleij@linaro.org>
niedz., 3 lut 2019 o 22:42 Linus Walleij <linus.walleij@linaro.org> napisał(a):
>
> This adds device tree probe and registration support for
> the IXP4xx GPIO driver.
>
What is the reason for not merging it with the patch adding the driver?
> Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> Bartosz: looking for your ACK on this, it'd be good if
> the other GPIO maintainer is aligned with my ideas here.
> I intend to merge this through the ARM SoC tree.
> ---
> drivers/gpio/gpio-ixp4xx.c | 84 ++++++++++++++++++++++++++------------
> 1 file changed, 57 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpio/gpio-ixp4xx.c b/drivers/gpio/gpio-ixp4xx.c
> index 44c24948379d..38a77c8e0c9c 100644
> --- a/drivers/gpio/gpio-ixp4xx.c
> +++ b/drivers/gpio/gpio-ixp4xx.c
> @@ -11,6 +11,7 @@
> #include <linux/irq.h>
> #include <linux/irqdomain.h>
> #include <linux/irqchip.h>
> +#include <linux/of_irq.h>
> #include <linux/platform_device.h>
> #include <linux/bitops.h>
> /* Include that go away with DT transition */
> @@ -305,6 +306,7 @@ static int ixp4xx_gpio_probe(struct platform_device *pdev)
> {
> unsigned long flags;
> struct device *dev = &pdev->dev;
> + struct device_node *np = dev->of_node;
> struct irq_domain *parent;
> struct resource *res;
> struct ixp4xx_gpio *g;
> @@ -381,11 +383,27 @@ static int ixp4xx_gpio_probe(struct platform_device *pdev)
> * from IRQCHIP_DECLARE(), then use of_node_to_fwnode() to get
> * the fwnode. For now we need this boardfile style code.
> */
Is this comment still valid after this patch? Or is this maybe
incomplete DT support (probing only)? If so it need clarifying.
> - parent = ixp4xx_get_irq_domain();
> - g->fwnode = irq_domain_alloc_fwnode(g->base);
> - if (!g->fwnode) {
> - dev_err(dev, "no domain base\n");
> - return -ENODEV;
> + if (np) {
> + struct device_node *irq_parent;
> +
> + irq_parent = of_irq_find_parent(np);
> + if (!irq_parent) {
> + dev_err(dev, "no IRQ parent node\n");
> + return -ENODEV;
> + }
> + parent = irq_find_host(irq_parent);
> + if (!parent) {
> + dev_err(dev, "no IRQ parent domain\n");
> + return -ENODEV;
> + }
> + g->fwnode = of_node_to_fwnode(np);
> + } else {
> + parent = ixp4xx_get_irq_domain();
> + g->fwnode = irq_domain_alloc_fwnode(g->base);
> + if (!g->fwnode) {
> + dev_err(dev, "no domain base\n");
> + return -ENODEV;
> + }
> }
> g->domain = irq_domain_create_hierarchy(parent,
> IRQ_DOMAIN_FLAG_HIERARCHY,
> @@ -403,28 +421,31 @@ static int ixp4xx_gpio_probe(struct platform_device *pdev)
> * After adding OF support, this is no longer needed: irqs
> * will be allocated for the respective fwnodes.
> */
Same with the comment here.
> - for (i = 0; i < ARRAY_SIZE(ixp4xx_gpiomap); i++) {
> - const struct ixp4xx_gpio_map *map = &ixp4xx_gpiomap[i];
> - struct irq_fwspec fwspec;
> -
> - fwspec.fwnode = g->fwnode;
> - /* This is the hwirq for the GPIO line side of things */
> - fwspec.param[0] = map->gpio_offset;
> - fwspec.param[1] = IRQ_TYPE_EDGE_RISING;
> - fwspec.param_count = 2;
> - ret = __irq_domain_alloc_irqs(g->domain,
> - -1, /* just pick something */
> - 1,
> - NUMA_NO_NODE,
> - &fwspec,
> - false,
> - NULL);
> - if (ret < 0) {
> - irq_domain_free_fwnode(g->fwnode);
> - dev_err(dev,
> - "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n",
> - map->gpio_offset, map->parent_hwirq, ret);
> - return ret;
> + if (!np) {
> + for (i = 0; i < ARRAY_SIZE(ixp4xx_gpiomap); i++) {
> + const struct ixp4xx_gpio_map *map = &ixp4xx_gpiomap[i];
> + struct irq_fwspec fwspec;
> +
> + fwspec.fwnode = g->fwnode;
> + /* This is the hwirq for the GPIO line side of things */
> + fwspec.param[0] = map->gpio_offset;
> + fwspec.param[1] = IRQ_TYPE_EDGE_RISING;
> + fwspec.param_count = 2;
> + ret = __irq_domain_alloc_irqs(g->domain,
> + -1, /* just pick something */
> + 1,
> + NUMA_NO_NODE,
> + &fwspec,
> + false,
> + NULL);
> + if (ret < 0) {
> + irq_domain_free_fwnode(g->fwnode);
> + dev_err(dev,
> + "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n",
> + map->gpio_offset, map->parent_hwirq,
> + ret);
> + return ret;
> + }
> }
> }
>
> @@ -434,9 +455,18 @@ static int ixp4xx_gpio_probe(struct platform_device *pdev)
> return 0;
> }
>
> +static const struct of_device_id ixp4xx_gpio_of_match[] = {
> + {
> + .compatible = "intel,ixp4xx-gpio",
> + },
> + {},
> +};
> +
> +
> static struct platform_driver ixp4xx_gpio_driver = {
> .driver = {
> .name = "ixp4xx-gpio",
> + .of_match_table = of_match_ptr(ixp4xx_gpio_of_match),
> },
> .probe = ixp4xx_gpio_probe,
> };
> --
> 2.20.1
>
Bart
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-02-06 16:13 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-03 21:41 [PATCH 00/17 v1] ARM: ixp4xx: Modernize and DT support Linus Walleij
2019-02-03 21:41 ` [PATCH 01/17 v1] ARM: ixp4xx: Convert to MULTI_IRQ_HANDLER Linus Walleij
2019-02-03 21:41 ` [PATCH 02/17 v1] ARM: ixp4xx: Pass IRQ resource to beeper Linus Walleij
2019-02-03 21:41 ` [PATCH 03/17 v1] ARM: ixp4xx: Convert to SPARSE_IRQ Linus Walleij
2019-02-03 21:41 ` [PATCH 04/17 v1] irqchip: Add driver for IXP4xx Linus Walleij
2019-02-11 15:30 ` Marc Zyngier
2019-02-11 20:58 ` Linus Walleij
2019-02-11 22:11 ` Marc Zyngier
2019-02-18 7:06 ` Krzysztof Hałasa
2019-02-18 7:16 ` Linus Walleij
2019-02-18 7:35 ` Krzysztof Hałasa
2019-02-18 9:40 ` Arnd Bergmann
2019-02-18 12:03 ` Krzysztof Hałasa
2019-02-18 12:44 ` Arnd Bergmann
2019-02-19 6:51 ` Krzysztof Hałasa
2019-02-19 9:46 ` Arnd Bergmann
2019-02-20 7:35 ` Krzysztof Hałasa
2019-02-18 9:18 ` Arnd Bergmann
2019-02-03 21:41 ` [PATCH 05/17 v1] gpio: ixp4xx: Add driver for the IXP4xx GPIO Linus Walleij
2019-02-06 16:03 ` Bartosz Golaszewski
2019-02-21 8:50 ` Linus Walleij
2019-02-03 21:41 ` [PATCH 06/17 v1] ARM: ixp4xx: Switch to use new IRQ+GPIO drivers Linus Walleij
2019-02-03 21:41 ` [PATCH 07/17 v1] clocksource/drivers/ixp4xx: Add driver Linus Walleij
2019-02-03 21:41 ` [PATCH 08/17 v1] ARM: ixp4xx: Switch to use new timer driver Linus Walleij
2019-02-03 21:41 ` [PATCH 09/17 v1] irqchip: ixp4xx: Add DT bindings Linus Walleij
2019-02-18 21:25 ` Rob Herring
2019-02-03 21:41 ` [PATCH 10/17 v1] irqchip: ixp4xx: Add OF initialization support Linus Walleij
2019-02-03 21:41 ` [PATCH 11/17 v1] clocksource/drivers/ixp4xx: Add DT bindings Linus Walleij
2019-02-18 21:26 ` Rob Herring
2019-02-18 22:10 ` Daniel Lezcano
2019-02-03 21:42 ` [PATCH 12/17 v1] clocksource/drivers/ixp4xx: Add OF initialization support Linus Walleij
2019-02-11 11:26 ` Daniel Lezcano
2019-02-03 21:42 ` [PATCH 13/17 v1] gpio: ixp4xx: Add DT bindings Linus Walleij
2019-02-06 16:05 ` Bartosz Golaszewski
2019-02-18 21:27 ` Rob Herring
2019-02-03 21:42 ` [PATCH 14/17 v1] gpio: ixp4xx: Add OF probing support Linus Walleij
2019-02-06 16:13 ` Bartosz Golaszewski [this message]
2019-02-21 8:55 ` Linus Walleij
2019-02-03 21:42 ` [PATCH 15/17 v1] ARM: ixp4xx: Add DT bindings Linus Walleij
2019-02-04 15:16 ` Rob Herring
2019-02-08 19:37 ` Linus Walleij
2019-02-03 21:42 ` [PATCH 16/17 v1] ARM: ixp4xx: Add device tree boot support Linus Walleij
2019-02-03 21:42 ` [PATCH 17/17 v1] RFC: ARM: dts: Add some initial IXP4xx device trees Linus Walleij
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='CAMpxmJU+fmum=AP1_n0W4SaD0HuLPP67qTPO_n9WU-vWeNuSSw@mail.gmail.com' \
--to=bgolaszewski@baylibre.com \
--cc=arnd@arndb.de \
--cc=kaloz@openwrt.org \
--cc=khalasa@piap.pl \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=olof@lixom.net \
--cc=tharvey@gateworks.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).