[PATCH v2 2/5] arm: dts: imx: Update watchdog nodes for dynamic base address lookup
Stefan Roese
stefan.roese at mailbox.org
Tue Apr 21 16:10:01 CEST 2026
On 4/21/26 16:01, alice.guo at oss.nxp.com wrote:
> From: Alice Guo <alice.guo at nxp.com>
>
> Update watchdog device tree nodes to enable dynamic base address
> retrieval for i.MX7ULP, i.MX8ULP, i.MX91, i.MX93, i.MX943, i.MX95 and
> i.MX952. This allows the bootloader to obtain watchdog base addresses
> from the device tree instead of using hardcoded values.
>
> - imx7ulp: Add wdog2 node
> - imx8ulp: Mark wdog3 available
> - imx91/imx93: Add wdog4 and wdog5 nodes
> Mark wdog3/wdog4/wdog5 available
> - imx943: Add wdog4 node and mark wdog3/wdog4 available
> - imx95/imx952: Add wdog4 node and mark wdog3/wdog4 available
>
> Watchdog nodes are marked with "bootph-all" to ensure availability
> during early boot stages when init_wdog() occurs.
>
> Signed-off-by: Alice Guo <alice.guo at nxp.com>
> ---
> arch/arm/dts/imx7ulp.dtsi | 6 ++++++
> arch/arm/dts/imx8ulp-u-boot.dtsi | 4 ++++
> arch/arm/dts/imx91-u-boot.dtsi | 12 ++++++++++++
> arch/arm/dts/imx93-u-boot.dtsi | 12 ++++++++++++
> arch/arm/dts/imx93.dtsi | 18 ++++++++++++++++++
> arch/arm/dts/imx943-u-boot.dtsi | 16 ++++++++++++++++
> arch/arm/dts/imx95-u-boot.dtsi | 14 ++++++++++++++
> arch/arm/dts/imx952-u-boot.dtsi | 14 ++++++++++++++
> 8 files changed, 96 insertions(+)
>
> diff --git a/arch/arm/dts/imx7ulp.dtsi b/arch/arm/dts/imx7ulp.dtsi
> index bcec98b9641..45a69f06e20 100644
> --- a/arch/arm/dts/imx7ulp.dtsi
> +++ b/arch/arm/dts/imx7ulp.dtsi
> @@ -295,6 +295,12 @@
> clock-names = "divcore", "hsrun_divcore";
> };
>
> + wdog2: watchdog at 40430000 {
> + compatible = "fsl,imx7ulp-wdt";
> + reg = <0x40430000 0x10000>;
> + timeout-sec = <40>;
> + };
> +
> pcc3: clock-controller at 40b30000 {
> compatible = "fsl,imx7ulp-pcc3";
> reg = <0x40b30000 0x10000>;
> diff --git a/arch/arm/dts/imx8ulp-u-boot.dtsi b/arch/arm/dts/imx8ulp-u-boot.dtsi
> index 30baaeff8ef..54ecbcf1795 100644
> --- a/arch/arm/dts/imx8ulp-u-boot.dtsi
> +++ b/arch/arm/dts/imx8ulp-u-boot.dtsi
> @@ -61,3 +61,7 @@
> };
> };
> #endif
> +
> +&wdog3 {
> + bootph-all;
> +};
> diff --git a/arch/arm/dts/imx91-u-boot.dtsi b/arch/arm/dts/imx91-u-boot.dtsi
> index 5b639c965d6..149f7bc685a 100644
> --- a/arch/arm/dts/imx91-u-boot.dtsi
> +++ b/arch/arm/dts/imx91-u-boot.dtsi
> @@ -90,3 +90,15 @@
> };
> };
> };
> +
> +&wdog3 {
> + bootph-all;
> +};
> +
> +&wdog4 {
> + bootph-all;
> +};
> +
> +&wdog5 {
> + bootph-all;
> +};
> diff --git a/arch/arm/dts/imx93-u-boot.dtsi b/arch/arm/dts/imx93-u-boot.dtsi
> index dc86746ac90..a84cdf2bc45 100644
> --- a/arch/arm/dts/imx93-u-boot.dtsi
> +++ b/arch/arm/dts/imx93-u-boot.dtsi
> @@ -96,3 +96,15 @@
> 0x000001b2 0x800001b6>;
> #thermal-sensor-cells = <1>;
> };
> +
> +&wdog3 {
> + bootph-all;
> +};
> +
> +&wdog4 {
> + bootph-all;
> +};
> +
> +&wdog5 {
> + bootph-all;
> +};
> diff --git a/arch/arm/dts/imx93.dtsi b/arch/arm/dts/imx93.dtsi
> index d6964714ea0..511e9594e37 100644
> --- a/arch/arm/dts/imx93.dtsi
> +++ b/arch/arm/dts/imx93.dtsi
> @@ -414,6 +414,24 @@
> timeout-sec = <40>;
> };
>
> + wdog4: watchdog at 424a0000 {
> + compatible = "fsl,imx93-wdt";
> + reg = <0x424a0000 0x10000>;
> + interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&clk IMX93_CLK_WDOG4_GATE>;
> + timeout-sec = <40>;
> + status = "disabled";
> + };
> +
> + wdog5: watchdog at 424b0000 {
> + compatible = "fsl,imx93-wdt";
> + reg = <0x424b0000 0x10000>;
> + interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&clk IMX93_CLK_WDOG5_GATE>;
> + timeout-sec = <40>;
> + status = "disabled";
> + };
> +
> tpm3: pwm at 424e0000 {
> compatible = "fsl,imx7ulp-pwm";
> reg = <0x424e0000 0x1000>;
> diff --git a/arch/arm/dts/imx943-u-boot.dtsi b/arch/arm/dts/imx943-u-boot.dtsi
> index 3457442a3b0..fca0f10c865 100644
> --- a/arch/arm/dts/imx943-u-boot.dtsi
> +++ b/arch/arm/dts/imx943-u-boot.dtsi
> @@ -159,6 +159,18 @@
> };
> };
>
> +&aips4 {
> + bootph-all;
> +
> + wdog4: watchdog at 49230000 {
> + bootph-all;
> +
> + compatible = "fsl,imx94-wdt", "fsl,imx93-wdt";
> + reg = <0x49230000 0x10000>;
> + status = "disabled";
> + };
> +};
> +
> &clk_ext1 {
> bootph-all;
> };
> @@ -460,3 +472,7 @@
> &sram0 {
> bootph-all;
> };
> +
> +&wdog3 {
> + bootph-all;
> +};
> diff --git a/arch/arm/dts/imx95-u-boot.dtsi b/arch/arm/dts/imx95-u-boot.dtsi
> index 6dec159752b..2fdb7e331b6 100644
> --- a/arch/arm/dts/imx95-u-boot.dtsi
> +++ b/arch/arm/dts/imx95-u-boot.dtsi
> @@ -138,6 +138,16 @@
>
> &aips2 {
> bootph-all;
> +
> + wdog4: watchdog at 424a0000 {
> + bootph-all;
> +
> + compatible = "fsl,imx93-wdt";
> + reg = <0x424a0000 0x10000>;
> + clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>;
> + timeout-sec = <40>;
> + status = "disabled";
I understand why "bootph-all" is in the u-boot special file. But the
other main properties defining the watchdog device should be in the
common dts(i) file, no?
Checking mainline kernel I see, that "bootph-all" is used there as well.
It seems to be accepted. So why not move everything into the common
dts/dtsi files instead?
Thanks,
Stefan
> + };
> };
>
> &aips3 {
> @@ -238,3 +248,7 @@
> &scmi_buf1 {
> bootph-all;
> };
> +
> +&wdog3 {
> + bootph-all;
> +};
> diff --git a/arch/arm/dts/imx952-u-boot.dtsi b/arch/arm/dts/imx952-u-boot.dtsi
> index e977014992e..082dab75a18 100644
> --- a/arch/arm/dts/imx952-u-boot.dtsi
> +++ b/arch/arm/dts/imx952-u-boot.dtsi
> @@ -115,6 +115,16 @@
>
> &aips2 {
> bootph-all;
> +
> + wdog4: watchdog at 420c0000 {
> + bootph-all;
> +
> + compatible = "fsl,imx93-wdt";
> + reg = <0x420c0000 0x10000>;
> + clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>;
> + timeout-sec = <40>;
> + status = "disabled";
> + };
> };
>
> &aips3 {
> @@ -237,6 +247,10 @@
> bootph-pre-ram;
> };
>
> +&wdog3 {
> + bootph-all;
> +};
> +
> &scmi_iomuxc {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_hog>;
>
More information about the U-Boot
mailing list