Message ID | 20200526154123.24402-4-Sergey.Semin@baikalelectronics.ru (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | watchdog: dw_wdt: Take Baikal-T1 DW WDT peculiarities into account | expand |
On Tue, May 26, 2020 at 06:41:19PM +0300, Serge Semin wrote: > In case if DW Watchdog IP core is built with WDT_USE_FIX_TOP == false, > a custom timeout periods are used to preset the timer counter. In > this case that periods should be specified in a new "snps,watchdog-tops" > property of the DW watchdog dts node. > > Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru> > Reviewed-by: Rob Herring <robh@kernel.org> > Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru> > Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: linux-mips@vger.kernel.org Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > > Changelog v2: > - Rearrange SoBs. > - Move $ref to the root level of the "snps,watchdog-tops" property > so does the constraints. > - Add default TOP values array. > - Discard the label definition from the new bindings example. > > Changelog v3: > - Remove items property and move the minItems and maxItems constraints to > the root level of the snps,watchdog-tops property. > --- > .../bindings/watchdog/snps,dw-wdt.yaml | 32 +++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml b/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml > index 5bf6dc6377f3..d9fc7bb851b1 100644 > --- a/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml > +++ b/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml > @@ -39,6 +39,23 @@ properties: > description: Phandle to the DW Watchdog reset lane > maxItems: 1 > > + snps,watchdog-tops: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + description: | > + DW APB Watchdog custom timer intervals - Timeout Period ranges (TOPs). > + Each TOP is a number loaded into the watchdog counter at the moment of > + the timer restart. The counter decrementing happens each tick of the > + reference clock. Therefore the TOPs array is equivalent to an array of > + the timer expiration intervals supported by the DW APB Watchdog. Note > + DW APB Watchdog IP-core might be synthesized with fixed TOP values, > + in which case this property is unnecessary with default TOPs utilized. > + default: [0x0001000 0x0002000 0x0004000 0x0008000 > + 0x0010000 0x0020000 0x0040000 0x0080000 > + 0x0100000 0x0200000 0x0400000 0x0800000 > + 0x1000000 0x2000000 0x4000000 0x8000000] > + minItems: 16 > + maxItems: 16 > + > unevaluatedProperties: false > > required: > @@ -55,4 +72,19 @@ examples: > clocks = <&per_base_clk>; > resets = <&wdt_rst>; > }; > + > + - | > + watchdog@ffd02000 { > + compatible = "snps,dw-wdt"; > + reg = <0xffd02000 0x1000>; > + interrupts = <0 171 4>; > + clocks = <&per_base_clk>; > + clock-names = "tclk"; > + snps,watchdog-tops = <0x000000FF 0x000001FF 0x000003FF > + 0x000007FF 0x0000FFFF 0x0001FFFF > + 0x0003FFFF 0x0007FFFF 0x000FFFFF > + 0x001FFFFF 0x003FFFFF 0x007FFFFF > + 0x00FFFFFF 0x01FFFFFF 0x03FFFFFF > + 0x07FFFFFF>; > + }; > ...
diff --git a/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml b/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml index 5bf6dc6377f3..d9fc7bb851b1 100644 --- a/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml +++ b/Documentation/devicetree/bindings/watchdog/snps,dw-wdt.yaml @@ -39,6 +39,23 @@ properties: description: Phandle to the DW Watchdog reset lane maxItems: 1 + snps,watchdog-tops: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: | + DW APB Watchdog custom timer intervals - Timeout Period ranges (TOPs). + Each TOP is a number loaded into the watchdog counter at the moment of + the timer restart. The counter decrementing happens each tick of the + reference clock. Therefore the TOPs array is equivalent to an array of + the timer expiration intervals supported by the DW APB Watchdog. Note + DW APB Watchdog IP-core might be synthesized with fixed TOP values, + in which case this property is unnecessary with default TOPs utilized. + default: [0x0001000 0x0002000 0x0004000 0x0008000 + 0x0010000 0x0020000 0x0040000 0x0080000 + 0x0100000 0x0200000 0x0400000 0x0800000 + 0x1000000 0x2000000 0x4000000 0x8000000] + minItems: 16 + maxItems: 16 + unevaluatedProperties: false required: @@ -55,4 +72,19 @@ examples: clocks = <&per_base_clk>; resets = <&wdt_rst>; }; + + - | + watchdog@ffd02000 { + compatible = "snps,dw-wdt"; + reg = <0xffd02000 0x1000>; + interrupts = <0 171 4>; + clocks = <&per_base_clk>; + clock-names = "tclk"; + snps,watchdog-tops = <0x000000FF 0x000001FF 0x000003FF + 0x000007FF 0x0000FFFF 0x0001FFFF + 0x0003FFFF 0x0007FFFF 0x000FFFFF + 0x001FFFFF 0x003FFFFF 0x007FFFFF + 0x00FFFFFF 0x01FFFFFF 0x03FFFFFF + 0x07FFFFFF>; + }; ...