Re: [PATCH v2] arm64: dts: mt8173-oak: Switch to SMC watchdog

From: Pin-yen Lin
Date: Thu Jul 28 2022 - 11:39:46 EST


On Thu, Jul 28, 2022 at 7:21 PM AngeloGioacchino Del Regno
<angelogioacchino.delregno@xxxxxxxxxxxxx> wrote:
>
> Il 27/07/22 11:40, Pin-yen Lin ha scritto:
> > Switch to SMC watchdog because we need direct control of HW watchdog
> > registers from kernel. The corresponding firmware was uploaded in
> > https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/3405.
> >
> > Signed-off-by: Pin-yen Lin <treapking@xxxxxxxxxxxx>
> > ---
> >
> > Changes in v2:
> > - Move the modifications to mt8173-elm.dtsi and add some comments.
> >
> > arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > index e21feb85d822..b2269770abc3 100644
> > --- a/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > +++ b/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
> > @@ -161,6 +161,18 @@ hdmi_connector_in: endpoint {
> > };
> > };
> > };
> > +
> > + soc {
> > + /*
> > + * Disable the original MMIO watch dog and switch to the SMC watchdog,
> > + * which operates on the same MMIO.
> > + */
> > + /delete-node/ watchdog@10007000;
>
> Unfortunately, we're not quite there yet.
> The comment is fine, but...
>
> There's no need to /delete-node/: you can just do it like
>
> /*
> * Disable the original MMIO watch dog and switch to the SMC watchdog,
> * which operates on the same MMIO.
> */
> &watchdog {
> status = "disabled";
> };
>
> and...
>
> > +
> > + watchdog {
>
> This isn't addressable, hence it belongs to the root node, not to soc.
> If you did that because of naming issues, I would propose to call it
> smc-watchdog instead of watchdog.
>
>
> > + compatible = "arm,smc-wdt";
>
Thanks for the suggestion. I'll modify it accordingly in v3.

> P.S.: No timeout-sec?

The example in the binding file has a timeout-sec property, but it is
not defined in the binding nor used in the driver...
The driver seems to talk with the firmware to get a timeout value[1]
instead of reading it from the devicetree.

[1]: https://elixir.bootlin.com/linux/latest/source/drivers/watchdog/arm_smc_wdt.c#L138
>
> Regards,
> Angelo
>
> > + };
> > + };
> > };
> >
> > &mfg_async {
> >
>