arm: socfpga: agilex5: Refactor system manager driver initialization

Refactor system manager initialization by searching for system manager
alias in Agilex5 device tree instead of manually passing node name to
the device model calling function

Signed-off-by: Alif Zakuan Yuslaimi <alif.zakuan.yuslaimi@altera.com>
Reviewed-by: Tien Fong Chee <tien.fong.chee@altera.com>
This commit is contained in:
Alif Zakuan Yuslaimi 2025-08-03 18:24:36 -07:00 committed by Tien Fong Chee
parent a44423e7e9
commit 5416a3a306
5 changed files with 19 additions and 7 deletions

View File

@ -596,4 +596,8 @@
};
};
};
aliases {
sysmgr = &sysmgr;
};
};

View File

@ -52,7 +52,7 @@ bool is_periph_program_force(void);
void set_regular_boot(unsigned int status);
void socfpga_pl310_clear(void);
void socfpga_get_managers_addr(void);
void socfpga_get_sys_mgr_addr(const char *compat);
void socfpga_get_sys_mgr_addr(void);
int qspi_flash_software_reset(void);
#endif /* _SOCFPGA_MISC_H_ */

View File

@ -11,6 +11,7 @@
#include <hang.h>
#include <watchdog.h>
#include <fdtdec.h>
#include <dm/ofnode.h>
#include <linux/libfdt.h>
#include <linux/printk.h>
#include <miiphy.h>
@ -274,17 +275,24 @@ void socfpga_get_managers_addr(void)
hang();
}
void socfpga_get_sys_mgr_addr(const char *compat)
void socfpga_get_sys_mgr_addr(void)
{
int ret;
struct udevice *sysmgr_dev;
struct udevice *dev;
ret = uclass_get_device_by_name(UCLASS_NOP, compat, &sysmgr_dev);
ofnode node = ofnode_get_aliases_node("sysmgr");
if (!ofnode_valid(node)) {
printf("'sysmgr' alias not found in device tree\n");
hang();
}
ret = uclass_get_device_by_ofnode(UCLASS_NOP, node, &dev);
if (ret) {
printf("Altera system manager init failed: %d\n", ret);
hang();
} else {
socfpga_sysmgr_base = (phys_addr_t)dev_read_addr(sysmgr_dev);
socfpga_sysmgr_base = (phys_addr_t)dev_read_addr(dev);
}
}

View File

@ -51,7 +51,7 @@ void board_init_f(ulong dummy)
if (ret)
hang();
socfpga_get_sys_mgr_addr("sysmgr@10d12000");
socfpga_get_sys_mgr_addr();
socfpga_get_managers_addr();
sysmgr_pinmux_init();

View File

@ -7,6 +7,6 @@
int board_early_init_f(void)
{
socfpga_get_sys_mgr_addr("sysmgr@10d12000");
socfpga_get_sys_mgr_addr();
return 0;
}