Message ID | 20211130161809.64591-1-sven@svenpeter.dev |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] dt-bindings: watchdog: Add Apple Watchdog | expand |
Hej, On 2021-11-30 17:18:09 +0100, Sven Peter wrote: > Add support for the watchdog timer found in Apple SoCs. This driver is > also required to reboot these machines. > > Signed-off-by: Sven Peter <sven@svenpeter.dev> > --- > v1 -> v2: > - set the default timeout to 30s and call watchdog_init_timeout > to allow the device tree to override it > - set WDOG_HW_RUNNING if the watchdog is enabled at boot > - check that the clock rate is not zero > - use unsigned long instead of u32 for clk_rate > - use devm_add_action_or_reset instead of manually calling > clk_disable_unprepare > - explain the magic number in apple_wdt_restart > > MAINTAINERS | 1 + > drivers/watchdog/Kconfig | 12 ++ > drivers/watchdog/Makefile | 1 + > drivers/watchdog/apple_wdt.c | 226 +++++++++++++++++++++++++++++++++++ > 4 files changed, 240 insertions(+) > create mode 100644 drivers/watchdog/apple_wdt.c Tested on M1 and M1 Max. Feel free to add Tested-by: Janne Grunau <j@jannau.net> best Janne
On Tue, Nov 30, 2021 at 05:18:08PM +0100, Sven Peter wrote: > Apple SoCs come with a simple embedded watchdog. This watchdog is also > required in order to reset the SoC. > > Reviewed-by: Mark Kettenis <kettenis@openbsd.org> > Reviewed-by: Rob Herring <robh@kernel.org> > Signed-off-by: Sven Peter <sven@svenpeter.dev> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > v1 --> v2: > - add Mark's and Rob's r-b tags > > .../bindings/watchdog/apple,wdt.yaml | 52 +++++++++++++++++++ > MAINTAINERS | 1 + > 2 files changed, 53 insertions(+) > create mode 100644 Documentation/devicetree/bindings/watchdog/apple,wdt.yaml > > diff --git a/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml > new file mode 100644 > index 000000000000..e58c56a6fdf6 > --- /dev/null > +++ b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml > @@ -0,0 +1,52 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/watchdog/apple,wdt.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Apple SoC Watchdog > + > +allOf: > + - $ref: "watchdog.yaml#" > + > +maintainers: > + - Sven Peter <sven@svenpeter.dev> > + > +properties: > + compatible: > + items: > + - enum: > + - apple,t8103-wdt > + - apple,t6000-wdt > + - const: apple,wdt > + > + reg: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > +required: > + - compatible > + - reg > + - clocks > + - interrupts > + > +unevaluatedProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/apple-aic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + wdt: watchdog@50000000 { > + compatible = "apple,t8103-wdt", "apple,wdt"; > + reg = <0x50000000 0x4000>; > + clocks = <&clk>; > + interrupts = <AIC_IRQ 123 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > +... > diff --git a/MAINTAINERS b/MAINTAINERS > index 360e9aa0205d..859201bbd4e8 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1750,6 +1750,7 @@ F: Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml > F: Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml > F: Documentation/devicetree/bindings/pci/apple,pcie.yaml > F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml > +F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml > F: arch/arm64/boot/dts/apple/ > F: drivers/i2c/busses/i2c-pasemi-core.c > F: drivers/i2c/busses/i2c-pasemi-platform.c > -- > 2.25.1 >
On 02/12/2021 23.43, Guenter Roeck wrote: > On Tue, Nov 30, 2021 at 05:18:08PM +0100, Sven Peter wrote: >> Apple SoCs come with a simple embedded watchdog. This watchdog is also >> required in order to reset the SoC. >> >> Reviewed-by: Mark Kettenis <kettenis@openbsd.org> >> Reviewed-by: Rob Herring <robh@kernel.org> >> Signed-off-by: Sven Peter <sven@svenpeter.dev> > > Reviewed-by: Guenter Roeck <linux@roeck-us.net> > >> --- >> v1 --> v2: >> - add Mark's and Rob's r-b tags >> >> .../bindings/watchdog/apple,wdt.yaml | 52 +++++++++++++++++++ >> MAINTAINERS | 1 + >> 2 files changed, 53 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/watchdog/apple,wdt.yaml >> >> diff --git a/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml >> new file mode 100644 >> index 000000000000..e58c56a6fdf6 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml >> @@ -0,0 +1,52 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/watchdog/apple,wdt.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Apple SoC Watchdog >> + >> +allOf: >> + - $ref: "watchdog.yaml#" >> + >> +maintainers: >> + - Sven Peter <sven@svenpeter.dev> >> + >> +properties: >> + compatible: >> + items: >> + - enum: >> + - apple,t8103-wdt >> + - apple,t6000-wdt >> + - const: apple,wdt >> + >> + reg: >> + maxItems: 1 >> + >> + clocks: >> + maxItems: 1 >> + >> + interrupts: >> + maxItems: 1 >> + >> +required: >> + - compatible >> + - reg >> + - clocks >> + - interrupts >> + >> +unevaluatedProperties: false >> + >> +examples: >> + - | >> + #include <dt-bindings/interrupt-controller/apple-aic.h> >> + #include <dt-bindings/interrupt-controller/irq.h> >> + >> + wdt: watchdog@50000000 { >> + compatible = "apple,t8103-wdt", "apple,wdt"; >> + reg = <0x50000000 0x4000>; >> + clocks = <&clk>; >> + interrupts = <AIC_IRQ 123 IRQ_TYPE_LEVEL_HIGH>; >> + }; >> + >> +... >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 360e9aa0205d..859201bbd4e8 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -1750,6 +1750,7 @@ F: Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml >> F: Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml >> F: Documentation/devicetree/bindings/pci/apple,pcie.yaml >> F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml >> +F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml >> F: arch/arm64/boot/dts/apple/ >> F: drivers/i2c/busses/i2c-pasemi-core.c >> F: drivers/i2c/busses/i2c-pasemi-platform.c >> -- >> 2.25.1 >> > I've gone ahead and applied this patch to the asahi-soc/dt tree, so we can build off of that to add the DT nodes. Sven, can you spin a v3 with the MAINTAINERS split and just the driver itself, without this patch? I imagine Guenter will want to take the driver itself through the linux-watchdog tree.
diff --git a/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml new file mode 100644 index 000000000000..e58c56a6fdf6 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/apple,wdt.yaml @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/watchdog/apple,wdt.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple SoC Watchdog + +allOf: + - $ref: "watchdog.yaml#" + +maintainers: + - Sven Peter <sven@svenpeter.dev> + +properties: + compatible: + items: + - enum: + - apple,t8103-wdt + - apple,t6000-wdt + - const: apple,wdt + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + interrupts: + maxItems: 1 + +required: + - compatible + - reg + - clocks + - interrupts + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/apple-aic.h> + #include <dt-bindings/interrupt-controller/irq.h> + + wdt: watchdog@50000000 { + compatible = "apple,t8103-wdt", "apple,wdt"; + reg = <0x50000000 0x4000>; + clocks = <&clk>; + interrupts = <AIC_IRQ 123 IRQ_TYPE_LEVEL_HIGH>; + }; + +... diff --git a/MAINTAINERS b/MAINTAINERS index 360e9aa0205d..859201bbd4e8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1750,6 +1750,7 @@ F: Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml F: Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml F: Documentation/devicetree/bindings/pci/apple,pcie.yaml F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml +F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml F: arch/arm64/boot/dts/apple/ F: drivers/i2c/busses/i2c-pasemi-core.c F: drivers/i2c/busses/i2c-pasemi-platform.c