[PATCH v3 5/9] imx: soc: Get watchdog base addresses from device tree

Peng Fan peng.fan at oss.nxp.com
Wed May 13 10:36:30 CEST 2026


On Tue, May 12, 2026 at 11:10:12AM +0800, alice.guo at oss.nxp.com wrote:
>From: Alice Guo <alice.guo at nxp.com>
>
>Replace hardcoded watchdog base addresses with dynamic address lookup
>from device tree for i.MX7ULP, i.MX8ULP, i.MX91, i.MX93, i.MX943, i.MX95
>and i.MX952.
>
>Move i.MX7ULP watchdog initialization from s_init() to
>arch_cpu_init() because ofnode_* APIs depend on FDT, which is not
>available during s_init().
>
>Signed-off-by: Alice Guo <alice.guo at nxp.com>
>---
> arch/arm/mach-imx/imx8ulp/soc.c   | 14 +++++++++++++-
> arch/arm/mach-imx/imx9/scmi/soc.c | 15 ++++++++++++---
> arch/arm/mach-imx/imx9/soc.c      | 16 +++++++++++++---
> arch/arm/mach-imx/mx7ulp/soc.c    | 24 ++++++++++++++++++------
> 4 files changed, 56 insertions(+), 13 deletions(-)
>
>diff --git a/arch/arm/mach-imx/imx8ulp/soc.c b/arch/arm/mach-imx/imx8ulp/soc.c
>index 1ee483065e8..ec85625ea25 100644
>--- a/arch/arm/mach-imx/imx8ulp/soc.c
>+++ b/arch/arm/mach-imx/imx8ulp/soc.c
>@@ -343,7 +343,19 @@ static void disable_wdog(void __iomem *wdog_base)
> 
> void init_wdog(void)
> {
>-	disable_wdog((void __iomem *)WDG3_RBASE);
>+	ofnode node;
>+
>+	for (node = ofnode_by_compatible(ofnode_null(), "fsl,imx8ulp-wdt");
>+	     ofnode_valid(node);
>+	     node = ofnode_by_compatible(node, "fsl,imx8ulp-wdt")) {

Use ofnode_for_each_compatible_node.

>+		phys_addr_t base;
>+
>+		base = ofnode_get_addr(node);
>+		if (base == FDT_ADDR_T_NONE)
>+			continue;
>+
>+		disable_wdog((void __iomem *)base);
>+	}
> }
> 
> static struct mm_region imx8ulp_arm64_mem_map[] = {
>diff --git a/arch/arm/mach-imx/imx9/scmi/soc.c b/arch/arm/mach-imx/imx9/scmi/soc.c
>index fbee435786c..365891d1d1a 100644
>--- a/arch/arm/mach-imx/imx9/scmi/soc.c
>+++ b/arch/arm/mach-imx/imx9/scmi/soc.c
>@@ -786,9 +786,18 @@ static void gpio_reset(ulong gpio_base)
> int arch_cpu_init(void)
> {
> 	if (IS_ENABLED(CONFIG_SPL_BUILD)) {
>-		if (!IS_ENABLED(CONFIG_IMX952)) {
>-			disable_wdog((void __iomem *)WDG3_BASE_ADDR);
>-			disable_wdog((void __iomem *)WDG4_BASE_ADDR);
>+		ofnode node;
>+
>+		for (node = ofnode_by_compatible(ofnode_null(), "fsl,imx93-wdt");
>+		     ofnode_valid(node);
>+		     node = ofnode_by_compatible(node, "fsl,imx93-wdt")) {

Ditto.

And same to other changes in this patch.

Regards
Peng


More information about the U-Boot mailing list