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
next prev 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).