From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Linus Walleij <linus.walleij@linaro.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org
Cc: Marc Zyngier <maz@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
Bartosz Golaszewski <bgolaszewski@baylibre.com>,
Thomas Gleixner <tglx@linutronix.de>,
"Rafael J. Wysocki" <rafael@kernel.org>
Subject: [PATCH v3 5/5] gpiolib: Reuse device's fwnode to create IRQ domain
Date: Thu, 4 Mar 2021 22:12:53 +0200 [thread overview]
Message-ID: <20210304201253.14652-6-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <20210304201253.14652-1-andriy.shevchenko@linux.intel.com>
When IRQ domain is created for an ACPI case, the name of it becomes unknown-%d
since for now it utilizes of_node member only and doesn't consider fwnode case.
Convert IRQ domain creation code to utilize fwnode instead.
Before/After the change on Intel Galileo Gen 2 with two GPIO (IRQ) controllers:
unknown-1 ==> \_SB.PCI0.GIP0.GPO
unknown-2 ==> \_SB.NIO3
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpiolib.c | 28 ++++++++--------------------
1 file changed, 8 insertions(+), 20 deletions(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 46ab1ce67ba0..d7897a77c3fd 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1457,9 +1457,9 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
struct lock_class_key *lock_key,
struct lock_class_key *request_key)
{
+ struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
struct irq_chip *irqchip = gc->irq.chip;
- const struct irq_domain_ops *ops = NULL;
- struct device_node *np;
+ const struct irq_domain_ops *ops;
unsigned int type;
unsigned int i;
@@ -1471,7 +1471,6 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
return -EINVAL;
}
- np = gc->gpiodev->dev.of_node;
type = gc->irq.default_type;
/*
@@ -1479,16 +1478,10 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
* used to configure the interrupts, as you may end up with
* conflicting triggers. Tell the user, and reset to NONE.
*/
- if (WARN(np && type != IRQ_TYPE_NONE,
- "%s: Ignoring %u default trigger\n", np->full_name, type))
+ if (WARN(fwnode && type != IRQ_TYPE_NONE,
+ "%pfw: Ignoring %u default trigger\n", fwnode, type))
type = IRQ_TYPE_NONE;
- if (has_acpi_companion(gc->parent) && type != IRQ_TYPE_NONE) {
- acpi_handle_warn(ACPI_HANDLE(gc->parent),
- "Ignoring %u default trigger\n", type);
- type = IRQ_TYPE_NONE;
- }
-
if (gc->to_irq)
chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
@@ -1504,15 +1497,10 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
return ret;
} else {
/* Some drivers provide custom irqdomain ops */
- if (gc->irq.domain_ops)
- ops = gc->irq.domain_ops;
-
- if (!ops)
- ops = &gpiochip_domain_ops;
- gc->irq.domain = irq_domain_add_simple(np,
- gc->ngpio,
- gc->irq.first,
- ops, gc);
+ ops = gc->irq.domain_ops ?: &gpiochip_domain_ops;
+ gc->irq.domain = irq_domain_create_simple(fwnode, gc->ngpio,
+ gc->irq.first,
+ ops, gc);
if (!gc->irq.domain)
return -EINVAL;
}
--
2.30.1
next prev parent reply other threads:[~2021-03-04 20:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-04 20:12 [PATCH v3 0/5] gpiolib: switch to fwnode in the core Andy Shevchenko
2021-03-04 20:12 ` [PATCH v3 1/5] irqdomain: Introduce irq_domain_create_simple() API Andy Shevchenko
2021-03-05 13:34 ` Rafael J. Wysocki
2021-03-05 14:20 ` Marc Zyngier
2021-03-10 23:15 ` Linus Walleij
2021-03-11 10:56 ` Andy Shevchenko
2021-03-04 20:12 ` [PATCH v3 2/5] gpiolib: Unify the checks on fwnode type Andy Shevchenko
2021-03-04 20:12 ` [PATCH v3 3/5] gpiolib: Move of_node operations to gpiolib-of and correct fwnode use Andy Shevchenko
2021-03-04 20:12 ` [PATCH v3 4/5] gpiolib: Introduce acpi_gpio_dev_init() and call it from core Andy Shevchenko
2021-03-04 20:12 ` Andy Shevchenko [this message]
2021-03-08 18:22 ` [PATCH v3 0/5] gpiolib: switch to fwnode in the core Rafael J. Wysocki
2021-03-08 19:22 ` Bartosz Golaszewski
2021-03-08 19:26 ` Rafael J. Wysocki
2021-03-08 19:29 ` Bartosz Golaszewski
2021-03-08 19:36 ` Andy Shevchenko
2021-03-08 19:52 ` Andy Shevchenko
2021-03-09 8:19 ` Bartosz Golaszewski
2021-03-09 9:41 ` Andy Shevchenko
2021-03-08 19:35 ` Andy Shevchenko
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=20210304201253.14652-6-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=bgolaszewski@baylibre.com \
--cc=corbet@lwn.net \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael@kernel.org \
--cc=tglx@linutronix.de \
/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 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.