From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/15] ARM: smp_twd: add device tree support
Date: Thu, 12 Jan 2012 17:58:30 +0000 [thread overview]
Message-ID: <4F0F1F46.6060804@arm.com> (raw)
In-Reply-To: <4F0F09E9.3040101@gmail.com>
On 12/01/12 16:27, Rob Herring wrote:
> Adding devicetree-discuss since we are talking bindings...
>
> On 01/12/2012 10:00 AM, Marc Zyngier wrote:
>> On 12/01/12 15:42, Rob Herring wrote:
>>> On 01/12/2012 08:36 AM, Marc Zyngier wrote:
>>>> Hi Rob,
>>>>
>>>> On 11/01/12 21:05, Rob Herring wrote:
>>>>> On 01/11/2012 07:08 AM, Marc Zyngier wrote:
>>>>>> Add bindings to support DT discovery of the ARM Timer Watchdog
>>>>>> (aka TWD). Only the timer side is converted by this patch.
>>>>>>
>>>>>> Cc: Rob Herring <rob.herring@calxeda.com>
>>>>>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>>>>>> ---
>>>>>> Documentation/devicetree/bindings/arm/twd.txt | 29 +++++++++++
>>>>>> arch/arm/include/asm/smp_twd.h | 1 +
>>>>>> arch/arm/kernel/smp_twd.c | 68 ++++++++++++++++++++-----
>>>>>> 3 files changed, 85 insertions(+), 13 deletions(-)
>>>>>> create mode 100644 Documentation/devicetree/bindings/arm/twd.txt
>>>>>>
>>>>>> diff --git a/Documentation/devicetree/bindings/arm/twd.txt b/Documentation/devicetree/bindings/arm/twd.txt
>>>>>> new file mode 100644
>>>>>> index 0000000..a9d5587
>>>>>> --- /dev/null
>>>>>> +++ b/Documentation/devicetree/bindings/arm/twd.txt
>>>>>> @@ -0,0 +1,29 @@
>>>>>> +* ARM Timer Watchdog
>>>>>> +
>>>>>> +ARM 11MP, Cortex-A5 and Cortex-A9 are often associated with a per-core
>>>>>> +Timer-Watchdog (aka TWD), which provides both a per-cpu local timer
>>>>>> +and watchdog.
>>>>>> +
>>>>>> +The TWD is usually attached to a GIC to deliver its two per-processor
>>>>>> +interrupts.
>>>>>> +
>>>>>> +Main node required properties:
>>>>>> +
>>>>>> +- compatible : Should be one of:
>>>>>> + "arm,cortex-a9-twd"
>>>>>> + "arm,cortex-a5-twd"
>>>>>> + "arm,arm11mp-twd"
>>>>>> + "arm,smp-twd"
>>>>>> +
>>>>>> +- interrupts : Two interrupts to each core, the first one for the
>>>>>> + timer, the second one for the watchdog.
>>>>>> +
>>>>>> +- reg : Specify the base address and the size of the TWD.
>>>>>> +
>>>>>> +Example:
>>>>>> +
>>>>>> + twd at 2c000600 {
>>>>>> + compatible = "arm,arm11mp-twd", "arm,smp-twd";
>>>>>> + reg = <0x2c000600 0x100>;
>>>>>> + interrupts = <1 13 0xf01 1 14 0xf01>;
>>>>>> + };
>>>>>
>>>>> Why not split the watchdog and timer into 2 nodes? It may not matter
>>>>> since there is no driver for the timer. If there was, we would have a
>>>>> problem as you can't match 2 drivers to 1 node.
>>>>
>>>> Don't we hit the opposite problem - two nodes with the same address?
>>>
>>> No, because the timer is at 0x600-0x61f and the watchdog is at
>>> 0x620-0x63f. There's no DT requirement on address range start or size.
>>>
>>> However, the current watchdog driver includes 0x20 in its register
>>> offsets, so changing the base address would require a change to the
>>> driver (but that shouldn't really influence the decision).
>>
>> Well, that's what triggered my question. On the other hand, I do not see
>> any in-tree user of the mpcore_wdt driver, so I suppose we could change
>> this register offset without too much harm.
>>
>> How about something like:
>>
>> twd-timer at 2c000600 {
>> compatible = "arm,arm11mp-twd", "arm,smp-twd";
>> reg = <0x2c000600 0x20>;
>> interrupts = <1 13 0xf01>;
>> };
>>
>> twd-watchdog at 2c000620 {
>> compatible = "arm,arm11mp-wd", "arm,smp-wd";
>> reg = <0x2c000620 0x20>;
>> interrupts = <1 14 0xf01>;
>
> BTW, are these really edge triggered?
Yes (on the 11MPcore):
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/CCHFHDJH.html
Other cores may be configured differently (A9 has some PPIs configured
as level-low, and others configured edge-rising):
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0407g/CCHEIGIC.html
All that is probably very SoC specific anyway.
>
>> };
>>
>> I'm not sure about the compatible strings for the watchdog though. Any
>> better idea?
>
> Some reason I did arm,smp-twd and arm-cortex-a9-wdt for highbank.dts
> which wasn't very consistent.
>
> How about *-twd-timer and *-twd-wdt?
Fine by me.
> Probably we should drop the generic "arm-smp-*" versions.
Agreed. I'll respin this patch series and add the necessary updates to
the affected platforms' DTS.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Rob Herring <robherring2@gmail.com>
Cc: devicetree-discuss <devicetree-discuss@lists.ozlabs.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 04/15] ARM: smp_twd: add device tree support
Date: Thu, 12 Jan 2012 17:58:30 +0000 [thread overview]
Message-ID: <4F0F1F46.6060804@arm.com> (raw)
In-Reply-To: <4F0F09E9.3040101@gmail.com>
On 12/01/12 16:27, Rob Herring wrote:
> Adding devicetree-discuss since we are talking bindings...
>
> On 01/12/2012 10:00 AM, Marc Zyngier wrote:
>> On 12/01/12 15:42, Rob Herring wrote:
>>> On 01/12/2012 08:36 AM, Marc Zyngier wrote:
>>>> Hi Rob,
>>>>
>>>> On 11/01/12 21:05, Rob Herring wrote:
>>>>> On 01/11/2012 07:08 AM, Marc Zyngier wrote:
>>>>>> Add bindings to support DT discovery of the ARM Timer Watchdog
>>>>>> (aka TWD). Only the timer side is converted by this patch.
>>>>>>
>>>>>> Cc: Rob Herring <rob.herring@calxeda.com>
>>>>>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>>>>>> ---
>>>>>> Documentation/devicetree/bindings/arm/twd.txt | 29 +++++++++++
>>>>>> arch/arm/include/asm/smp_twd.h | 1 +
>>>>>> arch/arm/kernel/smp_twd.c | 68 ++++++++++++++++++++-----
>>>>>> 3 files changed, 85 insertions(+), 13 deletions(-)
>>>>>> create mode 100644 Documentation/devicetree/bindings/arm/twd.txt
>>>>>>
>>>>>> diff --git a/Documentation/devicetree/bindings/arm/twd.txt b/Documentation/devicetree/bindings/arm/twd.txt
>>>>>> new file mode 100644
>>>>>> index 0000000..a9d5587
>>>>>> --- /dev/null
>>>>>> +++ b/Documentation/devicetree/bindings/arm/twd.txt
>>>>>> @@ -0,0 +1,29 @@
>>>>>> +* ARM Timer Watchdog
>>>>>> +
>>>>>> +ARM 11MP, Cortex-A5 and Cortex-A9 are often associated with a per-core
>>>>>> +Timer-Watchdog (aka TWD), which provides both a per-cpu local timer
>>>>>> +and watchdog.
>>>>>> +
>>>>>> +The TWD is usually attached to a GIC to deliver its two per-processor
>>>>>> +interrupts.
>>>>>> +
>>>>>> +Main node required properties:
>>>>>> +
>>>>>> +- compatible : Should be one of:
>>>>>> + "arm,cortex-a9-twd"
>>>>>> + "arm,cortex-a5-twd"
>>>>>> + "arm,arm11mp-twd"
>>>>>> + "arm,smp-twd"
>>>>>> +
>>>>>> +- interrupts : Two interrupts to each core, the first one for the
>>>>>> + timer, the second one for the watchdog.
>>>>>> +
>>>>>> +- reg : Specify the base address and the size of the TWD.
>>>>>> +
>>>>>> +Example:
>>>>>> +
>>>>>> + twd@2c000600 {
>>>>>> + compatible = "arm,arm11mp-twd", "arm,smp-twd";
>>>>>> + reg = <0x2c000600 0x100>;
>>>>>> + interrupts = <1 13 0xf01 1 14 0xf01>;
>>>>>> + };
>>>>>
>>>>> Why not split the watchdog and timer into 2 nodes? It may not matter
>>>>> since there is no driver for the timer. If there was, we would have a
>>>>> problem as you can't match 2 drivers to 1 node.
>>>>
>>>> Don't we hit the opposite problem - two nodes with the same address?
>>>
>>> No, because the timer is at 0x600-0x61f and the watchdog is at
>>> 0x620-0x63f. There's no DT requirement on address range start or size.
>>>
>>> However, the current watchdog driver includes 0x20 in its register
>>> offsets, so changing the base address would require a change to the
>>> driver (but that shouldn't really influence the decision).
>>
>> Well, that's what triggered my question. On the other hand, I do not see
>> any in-tree user of the mpcore_wdt driver, so I suppose we could change
>> this register offset without too much harm.
>>
>> How about something like:
>>
>> twd-timer@2c000600 {
>> compatible = "arm,arm11mp-twd", "arm,smp-twd";
>> reg = <0x2c000600 0x20>;
>> interrupts = <1 13 0xf01>;
>> };
>>
>> twd-watchdog@2c000620 {
>> compatible = "arm,arm11mp-wd", "arm,smp-wd";
>> reg = <0x2c000620 0x20>;
>> interrupts = <1 14 0xf01>;
>
> BTW, are these really edge triggered?
Yes (on the 11MPcore):
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/CCHFHDJH.html
Other cores may be configured differently (A9 has some PPIs configured
as level-low, and others configured edge-rising):
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0407g/CCHEIGIC.html
All that is probably very SoC specific anyway.
>
>> };
>>
>> I'm not sure about the compatible strings for the watchdog though. Any
>> better idea?
>
> Some reason I did arm,smp-twd and arm-cortex-a9-wdt for highbank.dts
> which wasn't very consistent.
>
> How about *-twd-timer and *-twd-wdt?
Fine by me.
> Probably we should drop the generic "arm-smp-*" versions.
Agreed. I'll respin this patch series and add the necessary updates to
the affected platforms' DTS.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2012-01-12 17:58 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-11 13:08 [PATCH 00/15] Runtime registration for local timers Marc Zyngier
2012-01-11 13:08 ` [PATCH 01/15] ARM: smp_twd: make local_timer_stop a symbol instead of a #define Marc Zyngier
2012-01-11 13:08 ` [PATCH 02/15] ARM: local timers: introduce a new registration interface Marc Zyngier
2012-01-11 13:08 ` [PATCH 03/15] ARM: smp_twd: add runtime registration support Marc Zyngier
2012-01-11 13:08 ` [PATCH 04/15] ARM: smp_twd: add device tree support Marc Zyngier
2012-01-11 21:05 ` Rob Herring
2012-01-12 14:36 ` Marc Zyngier
2012-01-12 15:42 ` Rob Herring
2012-01-12 16:00 ` Marc Zyngier
2012-01-12 16:27 ` Rob Herring
2012-01-12 16:27 ` Rob Herring
2012-01-12 17:58 ` Marc Zyngier [this message]
2012-01-12 17:58 ` Marc Zyngier
2012-01-11 13:08 ` [PATCH 05/15] ARM: OMAP4: convert to twd_local_timer_register() interface Marc Zyngier
2012-01-11 13:14 ` Shilimkar, Santosh
2012-01-11 13:08 ` [PATCH 06/15] ARM: plat-versatile: " Marc Zyngier
2012-01-12 9:14 ` Russell King - ARM Linux
2012-01-12 11:53 ` Marc Zyngier
2012-01-11 13:08 ` [PATCH 07/15] ARM: tegra: " Marc Zyngier
2012-01-11 21:49 ` Stephen Warren
2012-01-11 13:08 ` [PATCH 08/15] ARM: shmobile: " Marc Zyngier
2012-01-12 9:19 ` Russell King - ARM Linux
2012-01-12 11:24 ` Marc Zyngier
2012-01-12 12:00 ` Marc Zyngier
2012-01-11 13:08 ` [PATCH 09/15] ARM: ux500: " Marc Zyngier
2012-01-11 23:53 ` Linus Walleij
2012-01-12 13:59 ` Marc Zyngier
2012-01-14 11:43 ` Linus Walleij
2012-01-12 9:16 ` Russell King - ARM Linux
2012-01-12 10:55 ` Marc Zyngier
2012-01-11 13:08 ` [PATCH 10/15] ARM: highbank: " Marc Zyngier
2012-01-11 13:08 ` [PATCH 11/15] ARM: imx6q: " Marc Zyngier
2012-01-12 9:21 ` Shawn Guo
2012-01-11 13:08 ` [PATCH 12/15] ARM: smp_twd: remove old local timer interface Marc Zyngier
2012-01-11 13:08 ` [PATCH 13/15] ARM: local timers: convert exynos to runtime registration interface Marc Zyngier
2012-01-11 13:08 ` [PATCH 14/15] ARM: local timers: convert MSM " Marc Zyngier
2012-01-13 0:13 ` David Brown
2012-01-13 0:27 ` David Brown
2012-01-13 10:11 ` Marc Zyngier
2012-01-11 13:08 ` [PATCH 15/15] ARM: local timers: make the runtime registration interface mandatory Marc Zyngier
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=4F0F1F46.6060804@arm.com \
--to=marc.zyngier@arm.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.