2014-01-31 21:46:25

by Andrew Chew

[permalink] [raw]
Subject: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

This optional property can be used to specify which timers are to be used
for hardware watchdog timeouts (via a tegra wdt driver).

Signed-off-by: Andrew Chew <[email protected]>
---
Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
index b5082a1..e87fa70 100644
--- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
+++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
@@ -13,6 +13,13 @@ Required properties:
- clocks : Must contain one entry, for the module clock.
See ../clocks/clock-bindings.txt for details.

+Optional properties:
+
+- nvidia,wdt-timer-id: A list of timer IDs to be used for watchdogs.
+ Watchdog 0 will be assigned to the first timer listed, watchdog 1 will
+ be assigned to the second timer listed, etc. up to the number of watchdogs
+ available.
+
timer {
compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer";
reg = <0x60005000 0x400>;
@@ -23,4 +30,5 @@ timer {
0 121 0x04
0 122 0x04>;
clocks = <&tegra_car 214>;
+ nvidia,wdt-timer-id = <7 8>;
};
--
1.8.1.5


2014-02-03 17:11:01

by Mark Rutland

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
> This optional property can be used to specify which timers are to be used
> for hardware watchdog timeouts (via a tegra wdt driver).

Is there any reason that a particular timer should be used?

This shouldn't even mention the driver, as the binding should describe
the HW, not how it's used by Linux at the moment.

>
> Signed-off-by: Andrew Chew <[email protected]>
> ---
> Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> index b5082a1..e87fa70 100644
> --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> @@ -13,6 +13,13 @@ Required properties:
> - clocks : Must contain one entry, for the module clock.
> See ../clocks/clock-bindings.txt for details.
>
> +Optional properties:
> +
> +- nvidia,wdt-timer-id: A list of timer IDs to be used for watchdogs.
> + Watchdog 0 will be assigned to the first timer listed, watchdog 1 will
> + be assigned to the second timer listed, etc. up to the number of watchdogs
> + available.

This sounds like a description of what software should do. Is there any
reason this order is important?

Also, it feels odd for the proerty name to be singular given it's a
list...

Thanks,
Mark.

2014-02-03 18:59:43

by Andrew Chew

[permalink] [raw]
Subject: RE: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

> On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
> > This optional property can be used to specify which timers are to be
> > used for hardware watchdog timeouts (via a tegra wdt driver).
>
> Is there any reason that a particular timer should be used?

I worry about colliding with other timer allocations, and wanted to be
flexible in this regard.

> This shouldn't even mention the driver, as the binding should describe the
> HW, not how it's used by Linux at the moment.
>
> >
> > Signed-off-by: Andrew Chew <[email protected]>
> > ---
> > Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt | 8
> > ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git
> > a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> > b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> > index b5082a1..e87fa70 100644
> > --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> > +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt
> > @@ -13,6 +13,13 @@ Required properties:
> > - clocks : Must contain one entry, for the module clock.
> > See ../clocks/clock-bindings.txt for details.
> >
> > +Optional properties:
> > +
> > +- nvidia,wdt-timer-id: A list of timer IDs to be used for watchdogs.
> > + Watchdog 0 will be assigned to the first timer listed, watchdog 1 will
> > + be assigned to the second timer listed, etc. up to the number of
> watchdogs
> > + available.
>
> This sounds like a description of what software should do. Is there any
> reason this order is important?

The order in regards to which watchdog (watchdog 0, watchdog 1, etc) is paired
with which timer is unimportant for purposes of the watchdog driver that
I will follow up with. I can leave those details out of the bindings description
if that resolves your concern.

> Also, it feels odd for the proerty name to be singular given it's a list...

You're right. Given what it is, it really should be nvidia,wdt-timer-ids.

2014-02-03 21:09:59

by Stephen Warren

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

On 02/03/2014 11:59 AM, Andrew Chew wrote:
>> On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
>>> This optional property can be used to specify which timers are to be
>>> used for hardware watchdog timeouts (via a tegra wdt driver).
>>
>> Is there any reason that a particular timer should be used?
>
> I worry about colliding with other timer allocations, and wanted to be
> flexible in this regard.

Are the other timer allocations represented in DT, or simply made by or
hard-coded in the driver? If the former, this property seems like a good
equivalent of any existing allocations. If the latter, can't the driver
just allocate or hard-code the allocation in the same way as any
existing allocations?

2014-02-03 21:16:10

by Andrew Chew

[permalink] [raw]
Subject: RE: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

> On 02/03/2014 11:59 AM, Andrew Chew wrote:
> >> On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
> >>> This optional property can be used to specify which timers are to be
> >>> used for hardware watchdog timeouts (via a tegra wdt driver).
> >>
> >> Is there any reason that a particular timer should be used?
> >
> > I worry about colliding with other timer allocations, and wanted to be
> > flexible in this regard.
>
> Are the other timer allocations represented in DT, or simply made by or hard-
> coded in the driver? If the former, this property seems like a good equivalent
> of any existing allocations. If the latter, can't the driver just allocate or hard-
> code the allocation in the same way as any existing allocations?

>From what I've seen, timer allocations are just hard-coded into whatever driver.
I didn't think this was a particularly good idea, since when writing other drivers
that for some reason need a timer, the author has to be aware of allocations
made in other, barely related drivers. In addition, what seems like an arbitrary
allocation in one scenario, I anticipate may not be completely arbitrary in
a different scenario, so I thought it would be better to freeze the device driver
code, and allow for flexibility at the device tree level.

But I'll do whatever others think is right. I can make my watchdog driver just take
an arbitrary (to me right now) timer and instantiate one watchdog for it. If I'm to
do that, then this device node property isn't necessary, and we can drop this patch.

2014-02-03 21:26:51

by Stephen Warren

[permalink] [raw]
Subject: Re: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

On 02/03/2014 02:16 PM, Andrew Chew wrote:
>> On 02/03/2014 11:59 AM, Andrew Chew wrote:
>>>> On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
>>>>> This optional property can be used to specify which timers are to be
>>>>> used for hardware watchdog timeouts (via a tegra wdt driver).
>>>>
>>>> Is there any reason that a particular timer should be used?
>>>
>>> I worry about colliding with other timer allocations, and wanted to be
>>> flexible in this regard.
>>
>> Are the other timer allocations represented in DT, or simply made by or hard-
>> coded in the driver? If the former, this property seems like a good equivalent
>> of any existing allocations. If the latter, can't the driver just allocate or hard-
>> code the allocation in the same way as any existing allocations?
>
> From what I've seen, timer allocations are just hard-coded into whatever driver.
> I didn't think this was a particularly good idea, since when writing other drivers
> that for some reason need a timer, the author has to be aware of allocations
> made in other, barely related drivers.

I'm not sure that they would; why wouldn't the timer driver register the
various timers with standard Linux APIs which the clients talk to, thus
avoiding the clients having any knowledge at all of which channels are
used for what.

If you're talking about the watchdog driver, then can't we just create a
shared header file that the clocksource and watchdog drivers both
include, which defines the timer ID allocations?

2014-02-03 21:29:37

by Andrew Chew

[permalink] [raw]
Subject: RE: [PATCH v1] ARM: tegra: add nvidia,wdt-timer-id optional property

> On 02/03/2014 02:16 PM, Andrew Chew wrote:
> >> On 02/03/2014 11:59 AM, Andrew Chew wrote:
> >>>> On Fri, Jan 31, 2014 at 09:46:51PM +0000, Andrew Chew wrote:
> >>>>> This optional property can be used to specify which timers are to
> >>>>> be used for hardware watchdog timeouts (via a tegra wdt driver).
> >>>>
> >>>> Is there any reason that a particular timer should be used?
> >>>
> >>> I worry about colliding with other timer allocations, and wanted to
> >>> be flexible in this regard.
> >>
> >> Are the other timer allocations represented in DT, or simply made by
> >> or hard- coded in the driver? If the former, this property seems like
> >> a good equivalent of any existing allocations. If the latter, can't
> >> the driver just allocate or hard- code the allocation in the same way as any
> existing allocations?
> >
> > From what I've seen, timer allocations are just hard-coded into whatever
> driver.
> > I didn't think this was a particularly good idea, since when writing
> > other drivers that for some reason need a timer, the author has to be
> > aware of allocations made in other, barely related drivers.
>
> I'm not sure that they would; why wouldn't the timer driver register the
> various timers with standard Linux APIs which the clients talk to, thus
> avoiding the clients having any knowledge at all of which channels are used
> for what.
>
> If you're talking about the watchdog driver, then can't we just create a
> shared header file that the clocksource and watchdog drivers both include,
> which defines the timer ID allocations?

Sure, let's go with that. In that case, this patch isn't needed, and should be
dropped.