All of lore.kernel.org
 help / color / mirror / Atom feed
From: zonque@gmail.com (Daniel Mack)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions
Date: Sat, 28 Jul 2012 12:07:37 +0200	[thread overview]
Message-ID: <1343470061-16879-6-git-send-email-zonque@gmail.com> (raw)
In-Reply-To: <1343470061-16879-1-git-send-email-zonque@gmail.com>

Provide an of_xlate function for the PXA GPIO chips and make it work for
devicetree environments.

Successfully tested on a PXA3xx board.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/gpio/gpio-pxa.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 6d0cb9d..f47e6b3 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -63,6 +63,7 @@ static int irq_base;
 
 #ifdef CONFIG_OF
 static struct irq_domain *domain;
+static struct device_node *pxa_gpio_of_node;
 #endif
 
 struct pxa_gpio_chip {
@@ -229,6 +230,24 @@ static void pxa_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 				(value ? GPSR_OFFSET : GPCR_OFFSET));
 }
 
+#ifdef CONFIG_OF_GPIO
+static int pxa_gpio_of_xlate(struct gpio_chip *gc,
+			     const struct of_phandle_args *gpiospec,
+			     u32 *flags)
+{
+	if (gpiospec->args[0] > pxa_last_gpio)
+		return -EINVAL;
+
+	if (gc != &pxa_gpio_chips[gpiospec->args[0] / 32].chip)
+		return -EINVAL;
+
+	if (flags)
+		*flags = gpiospec->args[1];
+
+	return gpiospec->args[0] % 32;
+}
+#endif
+
 static int __devinit pxa_init_gpio_chip(int gpio_end,
 					int (*set_wake)(unsigned int, unsigned int))
 {
@@ -256,6 +275,11 @@ static int __devinit pxa_init_gpio_chip(int gpio_end,
 		c->get = pxa_gpio_get;
 		c->set = pxa_gpio_set;
 		c->to_irq = pxa_gpio_to_irq;
+#ifdef CONFIG_OF_GPIO
+		c->of_node = pxa_gpio_of_node;
+		c->of_xlate = pxa_gpio_of_xlate;
+		c->of_gpio_n_cells = 2;
+#endif
 
 		/* number of GPIOs on last bank may be less than 32 */
 		c->ngpio = (gpio + 31 > gpio_end) ? (gpio_end - gpio + 1) : 32;
@@ -457,6 +481,7 @@ static int pxa_irq_domain_map(struct irq_domain *d, unsigned int irq,
 
 const struct irq_domain_ops pxa_irq_domain_ops = {
 	.map	= pxa_irq_domain_map,
+	.xlate	= irq_domain_xlate_twocell,
 };
 
 #ifdef CONFIG_OF
@@ -497,6 +522,7 @@ static int __devinit pxa_gpio_probe_dt(struct platform_device *pdev)
 	}
 	domain = irq_domain_add_legacy(np, nr_gpios, irq_base, 0,
 				       &pxa_irq_domain_ops, NULL);
+	pxa_gpio_of_node = np;
 	return 0;
 err:
 	iounmap(gpio_reg_base);
-- 
1.7.11.2

  parent reply	other threads:[~2012-07-28 10:07 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
2012-07-28 10:07 ` [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc Daniel Mack
2012-07-28 10:07 ` [PATCH v3 2/9] MMC: pxa-mci: add DT bindings Daniel Mack
2012-08-03 23:52   ` Chris Ball
2012-08-04  1:30     ` Haojian Zhuang
2012-07-28 10:07 ` [PATCH v3 3/9] MTD: pxa3xx-nand: add devicetree bindings Daniel Mack
2012-07-28 10:07 ` [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip() Daniel Mack
2012-08-05  0:12   ` Linus Walleij
2012-08-05  2:56     ` Haojian Zhuang
2012-08-05  9:37       ` Linus Walleij
2012-08-06  8:09         ` Arnd Bergmann
2012-08-06  8:11           ` Daniel Mack
2012-07-28 10:07 ` Daniel Mack [this message]
2012-08-04 23:40   ` [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions Linus Walleij
2012-08-05  2:58     ` Haojian Zhuang
2012-07-28 10:07 ` [PATCH v3 6/9] ARM: pxa: add devicetree code for irq handling Daniel Mack
2012-07-28 10:07 ` [PATCH v3 7/9] ARM: pxa3xx: skip default device initialization when booting via DT Daniel Mack
2012-07-28 10:07 ` [PATCH v3 8/9] ARM: pxa3xx: add generic DT machine code Daniel Mack
2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
2012-07-28 18:42   ` Amar Nath
2012-07-29  0:02     ` Daniel Mack
2012-07-29 19:05   ` Daniel Mack
2012-07-29 13:04 ` [PATCH v3 0/9] Assorted PXA3xx DT patches Arnd Bergmann
2012-07-30 14:01   ` Haojian Zhuang

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=1343470061-16879-6-git-send-email-zonque@gmail.com \
    --to=zonque@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.