On Tue, May 12, 2026 at 11:10:12AM +0800, [email protected] wrote:
>From: Alice Guo <[email protected]>
>
>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 <[email protected]>
>---
> 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

Reply via email to