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