linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio: pl061: add DT binding support
Date: Wed, 03 Aug 2011 18:18:45 -0500	[thread overview]
Message-ID: <4E39D755.2030700@gmail.com> (raw)
In-Reply-To: <CACxGe6u1g_XZCvWB=7Z=0hGhZKfcQaiRm1WaQfJMrkkHTTqn8Q@mail.gmail.com>

Grant,

On 08/03/2011 05:22 PM, Grant Likely wrote:
> On Wed, Aug 3, 2011 at 7:54 PM, Rob Herring <robherring2@gmail.com> wrote:
>> From: Rob Herring <rob.herring@calxeda.com>
>>
>> This adds devicetree binding support to the ARM pl061 driver removing the
>> platform_data dependency. When DT binding is used, the gpio numbering is
>> assigned dynamically. The interrupt assignment is converted to use the
>> irq_domain infrastructure.
>>
>> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
>> Cc: Grant Likely <grant.likely@secretlab.ca>
>> ---
>>  drivers/gpio/gpio-pl061.c |   32 +++++++++++++++++++++++---------
>>  1 files changed, 23 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
>> index 2c5a18f..7ea74ff 100644
>> --- a/drivers/gpio/gpio-pl061.c
>> +++ b/drivers/gpio/gpio-pl061.c
>> @@ -23,6 +23,7 @@
>>  #include <linux/amba/bus.h>
>>  #include <linux/amba/pl061.h>
>>  #include <linux/slab.h>
>> +#include <linux/of_irq.h>
>>
>>  #define GPIODIR 0x400
>>  #define GPIOIS  0x404
>> @@ -246,6 +247,20 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id)
>>        if (chip == NULL)
>>                return -ENOMEM;
>>
>> +       pdata = dev->dev.platform_data;
>> +       if (pdata) {
>> +               chip->gc.base = pdata->gpio_base;
>> +               chip->irq_base = pdata->irq_base;
>> +       } else if (dev->dev.of_node) {
>> +               u32 intspec = 0;
>> +               chip->gc.base = -1;
>> +               chip->irq_base = irq_create_of_mapping(dev->dev.of_node,
>> +                                                      &intspec, 1);
> 
> This looks wrong.  intspec is always 0 here, when I would assume you
> would want the value of the interrupts property from this device's
> node.  Is this the cascade irq number?  Or is it supposed to be the
> starting interrupt number for the gpios?  If it is starting interrupt
> number, then it should actually be dynamically assigned.  If it is the
> cascade, then platform_get_irq() should work.
> 
It's the latter case that I need to retrieve. I have this platform code
assigning the linux irq numbers:

        struct device_node *node;
        int n = 0;

        node = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-gic");
        if (!node)
                panic("missing gic devicetree node\n");
        irq_domain_add_simple(node, 0);

        for_each_compatible_node(node, NULL, "arm,pl061") {
                irq_domain_add_simple(node, 160 + (8 * n));
                n++;
        }

In this case with simple translation, intspec is really a don't care.
irq_create_of_mapping just finds the domain that matches the gpio
ctrlr's node and returns the domain's irq_base (+ 0) as the translate
function will just return the intspec value for the hw_irq.

Have I missed something? There is not yet any dynamic assignment of
linux irq numbers?

Rob

  reply	other threads:[~2011-08-03 23:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-03 18:54 [PATCH] gpio: pl061: add DT binding support Rob Herring
2011-08-03 19:10 ` Baruch Siach
2011-08-03 22:22 ` Grant Likely
2011-08-03 23:18   ` Rob Herring [this message]
2011-10-24 22:26     ` Grant Likely
2011-10-24 22:48       ` Rob Herring
2011-08-10 21:31 ` [PATCH v2] " Rob Herring
2011-08-11  6:36   ` Baruch Siach
2011-08-11 16:48     ` Rob Herring
2011-09-22 23:08   ` Rob Herring
2011-10-24 15:40     ` Rob Herring
2011-10-24 22:24   ` Grant Likely

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=4E39D755.2030700@gmail.com \
    --to=robherring2@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 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).