devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Cousson, Benoit" <b-cousson-l0cyMroinI0@public.gmane.org>
To: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
Cc: "devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 5/5] ARM: gic: add OF based initialization
Date: Mon, 19 Sep 2011 10:47:53 +0200	[thread overview]
Message-ID: <4E7701B9.1040505@ti.com> (raw)
In-Reply-To: <20110918061526.GE3523-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>

On 9/18/2011 8:15 AM, Grant Likely wrote:
> On Thu, Sep 15, 2011 at 12:07:25PM +0200, Cousson, Benoit wrote:
>> Hi Rob,
>>
>> On 9/15/2011 9:55 AM, Thomas Abraham wrote:
>>> Hi Rob,
>>>
>>> On 14 September 2011 22:01, Rob Herring<robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>   wrote:
>>>> From: Rob Herring<rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
>>>>
>>>> This adds gic initialization using device tree data. The initialization
>>>> functions are intended to be called by a generic OF interrupt
>>>> controller parsing function once the right pieces are in place.
>>>>
>>>> PPIs are handled using 3rd cell of interrupts properties to specify the cpu
>>>> mask the PPI is assigned to.
>>>>
>>>> Signed-off-by: Rob Herring<rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
>>>> ---
>>>>   Documentation/devicetree/bindings/arm/gic.txt |   53 ++++++++++++++++++++++++
>>>>   arch/arm/common/gic.c                         |   55 +++++++++++++++++++++++--
>>>>   arch/arm/include/asm/hardware/gic.h           |   10 +++++
>>>>   3 files changed, 114 insertions(+), 4 deletions(-)
>>>>   create mode 100644 Documentation/devicetree/bindings/arm/gic.txt
>>>
>>> [...]
>>>
>>>
>>>> diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
>>>> index d1ccc72..14de380 100644
>>>> --- a/arch/arm/common/gic.c
>>>> +++ b/arch/arm/common/gic.c
>>>
>>> [...]
>>>
>>>> +void __init gic_of_init(struct device_node *node, struct device_node *parent)
>>>> +{
>>>> +       void __iomem *cpu_base;
>>>> +       void __iomem *dist_base;
>>>> +       int irq;
>>>> +       struct irq_domain *domain =&gic_data[gic_cnt].domain;
>>>> +
>>>> +       if (WARN_ON(!node))
>>>> +               return;
>>>> +
>>>> +       dist_base = of_iomap(node, 0);
>>>> +       WARN(!dist_base, "unable to map gic dist registers\n");
>>>> +
>>>> +       cpu_base = of_iomap(node, 1);
>>>> +       WARN(!cpu_base, "unable to map gic cpu registers\n");
>>>> +
>>>> +       domain->nr_irq = gic_irq_count(dist_base);
>>>> +       domain->irq_base = irq_alloc_descs(-1, 0, domain->nr_irq, numa_node_id());
>>>
>>> For exynos4, all the interrupts originating from GIC are statically
>>> mapped to start from 32 in the linux virq space (GIC SPI interrupts
>>> start from 64). In the above code, since irq_base would be 0 for
>>> exynos4, the interrupt mapping is not working correctly. In your
>>> previous version of the patch, you have given a option to the platform
>>> code to choose the offset. Could that option be added to this series
>>> also. Or a provision to use platform specific translate function
>>> instead of the irq_domain_simple translator.
>>
>> I have another concern on a similar topic.
>>
>> On OMAP4 the SoC interrupts external to the MPU (SPI) have an offset
>> of 32. Only the internal PPI are between 0 and 31.
>>
>> For the moment we add 32 to every SoC interrupts in the irq.h
>> define, but I'm assuming that this offset calculation should be done
>> thanks to a dedicated irq domain for the SPI.
>> The real HW physical number start at 0, and thus this is that value
>> that should be in the irq binding of the device.
>
> Yes.
>
>> So ideally we should have a irq domain for the PPI starting at 0 and
>> another one for the SPI starting at 32. Or 32 and 64 for the exynos4
>> case, but it looks like the PPI/SPI offset is always 32.
>
> Part of the purpose behind irq_domains is to have a translator
> callback that can take care of complex mappings, such as mapping each
> of the GIC irq ranges onto the Linux irq space.  Plus, by being based
> on the DT irq specifiers and dynamically assigning the linux numbers,
> the actual mapping that the kernel chooses to use shouldn't actually
> have any relevance.  So whether or not the driver uses an offset is 32
> becomes an implementation detail.

I do agree, my point was not about the driver usage but about how the 
device node should populate its irq entry. The +32 offset is due to the 
internal implementation of the GIC. That should not be exposed outside 
the MPUSS.

Here are the first IRQs from the OMAP4430 public TRM.

MA_IRQ_0 L2_CACHE_IRQ CORTEXA9 L2 cache controller interrupt
MA_IRQ_1 CTI_IRQ_0 CORTEXA9 Cross-trigger module 0 (CTI0) interrupt
MA_IRQ_2 CTI_IRQ_1 CORTEXA9 Cross-trigger module 1 (CTI1) interrupt
MA_IRQ_3 Reserved Reserved Reserved
MA_IRQ_4 ELM_IRQ ELM Error location process completion
MA_IRQ_5 Reserved Reserved Reserved
MA_IRQ_6 Reserved Reserved Reserved
MA_IRQ_7 sys_nirq1 External External interrupt 1 (active low)
MA_IRQ_8 Reserved Reserved Reserved
MA_IRQ_9 L3_DBG_IRQ L3 L3 interconnect debug error
MA_IRQ_10 L3_APP_IRQ L3 L3 interconnect application error
MA_IRQ_11 PRCM_MPU_IRQ PRCM PRCM interrupt
...

It is a 0 based index, and thus this is the value I'm expecting to enter 
in the irq attribute of the DT node.

Regards,
Benoit

  parent reply	other threads:[~2011-09-19  8:47 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-14 16:31 [PATCH 0/5] GIC OF bindings Rob Herring
2011-09-14 16:31 ` [PATCH 2/5] irq: fix existing domain check in irq_domain_add Rob Herring
     [not found]   ` <1316017900-19918-3-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-14 16:44     ` Thomas Gleixner
2011-09-17 23:24       ` Grant Likely
     [not found] ` <1316017900-19918-1-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-14 16:31   ` [PATCH 1/5] irq: add declaration of irq_domain_simple_ops to irqdomain.h Rob Herring
2011-09-14 16:31   ` [PATCH 3/5] of/irq: introduce of_irq_init Rob Herring
     [not found]     ` <1316017900-19918-4-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-15 10:41       ` Arnd Bergmann
2011-09-17 23:53       ` Grant Likely
     [not found]         ` <20110917235328.GA3523-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-09-18  1:37           ` Rob Herring
     [not found]             ` <4E754B56.1010404-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-18  6:02               ` Grant Likely
2011-09-14 16:31   ` [PATCH 5/5] ARM: gic: add OF based initialization Rob Herring
2011-09-14 17:46     ` Marc Zyngier
     [not found]       ` <4E70E88E.4090503-5wv7dgnIgG8@public.gmane.org>
2011-09-14 17:57         ` Rob Herring
2011-09-14 18:34           ` Marc Zyngier
     [not found]             ` <4E70F3C9.2010202-5wv7dgnIgG8@public.gmane.org>
2011-09-14 18:51               ` Rob Herring
     [not found]                 ` <4E70F7BE.6020909-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-18  0:13                   ` Grant Likely
2011-09-15  7:55     ` Thomas Abraham
     [not found]       ` <CAJuYYwSFu2HC+u2NY41+yw9tEyy85RKa4Dpm3SL+jbwS_OOA0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-15 10:07         ` Cousson, Benoit
     [not found]           ` <4E71CE5D.9030900-l0cyMroinI0@public.gmane.org>
2011-09-15 10:29             ` Russell King - ARM Linux
     [not found]               ` <20110915102915.GJ6267-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2011-09-15 12:28                 ` Cousson, Benoit
     [not found]                   ` <4E71EF56.3050503-l0cyMroinI0@public.gmane.org>
2011-09-15 12:51                     ` Russell King - ARM Linux
     [not found]                       ` <20110915125107.GK6267-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2011-09-15 13:03                         ` Cousson, Benoit
2011-09-15 13:11             ` Rob Herring
     [not found]               ` <4E71F978.6020402-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-15 13:52                 ` Cousson, Benoit
2011-09-15 16:43                   ` Rob Herring
2011-09-18 21:23                     ` Rob Herring
     [not found]                       ` <4E76615C.3000005-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-19 12:09                         ` Cousson, Benoit
     [not found]                           ` <4E77310A.3000106-l0cyMroinI0@public.gmane.org>
2011-09-19 13:48                             ` Rob Herring
     [not found]                               ` <4E774847.3020104-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-19 14:32                                 ` Cousson, Benoit
2011-09-19 21:14                               ` Grant Likely
     [not found]                                 ` <CACxGe6v9nd5f5x-eu9hUyAqdS1+p3h6ixyutECYLdNo3ewDH0w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-19 21:53                                   ` Rob Herring
     [not found]                                     ` <4E77B9E3.40004-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-20  0:22                                       ` Grant Likely
2011-09-20  4:18                                       ` Grant Likely
2011-09-20 15:23                                       ` Cousson, Benoit
2011-09-19 16:00                             ` Russell King - ARM Linux
2011-09-19 20:49                         ` Grant Likely
     [not found]                     ` <4E722B2D.4050307-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-19  9:47                       ` Cousson, Benoit
     [not found]                         ` <4E770FA6.2070305-l0cyMroinI0@public.gmane.org>
2011-09-19 13:33                           ` Russell King - ARM Linux
     [not found]                             ` <20110919133301.GR16381-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2011-09-19 17:44                               ` Grant Likely
2011-09-18  6:15             ` Grant Likely
     [not found]               ` <20110918061526.GE3523-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-09-19  8:47                 ` Cousson, Benoit [this message]
2011-09-16 16:09           ` Dave Martin
     [not found]             ` <20110916160939.GA2100-5wv7dgnIgG8@public.gmane.org>
2011-09-18  6:21               ` Grant Likely
2011-09-19 12:07                 ` Dave Martin
2011-09-19 13:08                   ` Cousson, Benoit
2011-09-15 12:54         ` Rob Herring
     [not found]           ` <4E71F593.2040903-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-16  9:34             ` Thomas Abraham
     [not found]               ` <CAJuYYwQ=tSh8k5ZOi2kx6KbMsQ4eVAvgE=T4kdckRSLjdj3dMQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-18  6:10                 ` Grant Likely
     [not found]                   ` <20110918061024.GD3523-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-09-19 12:59                     ` Thomas Abraham
     [not found]     ` <1316017900-19918-6-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-15 10:43       ` Arnd Bergmann
2011-09-18  6:30       ` Grant Likely
2011-09-14 16:31 ` [PATCH 4/5] ARM: gic: allow irq_start to be 0 Rob Herring
     [not found]   ` <1316017900-19918-5-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-09-18  6:24     ` Grant Likely
2011-09-18 12:03     ` Russell King - ARM Linux
2011-09-15  8:50 ` [PATCH 0/5] GIC OF bindings Jamie Iles
2011-09-15 13:53 ` Shawn Guo

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=4E7701B9.1040505@ti.com \
    --to=b-cousson-l0cymroini0@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.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).