mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 15:37:23 +00:00
arm64: mach-k3: am625_init: Probe ESM nodes
On AM62x devices, main ESM error event outputs can be routed to MCU ESM as inputs. So, two ESM device nodes are expected in the device tree : one for main ESM and another one for MCU ESM. MCU ESM error output can trigger the reset logic to reset the device when CTRLMMR_MCU_RST_CTRL:MCU_ESM_ERROR_RESET_EN_Z is set to '0'. Signed-off-by: Julien Panis <jpanis@baylibre.com>
This commit is contained in:
parent
3128c890f2
commit
169582025a
2 changed files with 26 additions and 0 deletions
|
@ -64,6 +64,15 @@ static void ctrl_mmr_unlock(void)
|
|||
mmr_unlock(PADCFG_MMR1_BASE, 1);
|
||||
}
|
||||
|
||||
static __maybe_unused void enable_mcu_esm_reset(void)
|
||||
{
|
||||
/* Set CTRLMMR_MCU_RST_CTRL:MCU_ESM_ERROR_RST_EN_Z to '0' (low active) */
|
||||
u32 stat = readl(CTRLMMR_MCU_RST_CTRL);
|
||||
|
||||
stat &= RST_CTRL_ESM_ERROR_RST_EN_Z_MASK;
|
||||
writel(stat, CTRLMMR_MCU_RST_CTRL);
|
||||
}
|
||||
|
||||
void board_init_f(ulong dummy)
|
||||
{
|
||||
struct udevice *dev;
|
||||
|
@ -142,6 +151,20 @@ void board_init_f(ulong dummy)
|
|||
/* Output System Firmware version info */
|
||||
k3_sysfw_print_ver();
|
||||
|
||||
if (IS_ENABLED(CONFIG_ESM_K3)) {
|
||||
/* Probe/configure ESM0 */
|
||||
ret = uclass_get_device_by_name(UCLASS_MISC, "esm@420000", &dev);
|
||||
if (ret)
|
||||
printf("esm main init failed: %d\n", ret);
|
||||
|
||||
/* Probe/configure MCUESM */
|
||||
ret = uclass_get_device_by_name(UCLASS_MISC, "esm@4100000", &dev);
|
||||
if (ret)
|
||||
printf("esm mcu init failed: %d\n", ret);
|
||||
|
||||
enable_mcu_esm_reset();
|
||||
}
|
||||
|
||||
#if defined(CONFIG_K3_AM64_DDRSS)
|
||||
ret = uclass_get_device(UCLASS_RAM, 0, &dev);
|
||||
if (ret)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#define MAIN_DEVSTAT_BACKUP_BOOTMODE_SHIFT 10
|
||||
#define MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_MASK BIT(13)
|
||||
#define MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_SHIFT 13
|
||||
#define RST_CTRL_ESM_ERROR_RST_EN_Z_MASK (~BIT(17))
|
||||
|
||||
/* Primary Bootmode MMC Config macros */
|
||||
#define MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK 0x4
|
||||
|
@ -67,6 +68,8 @@
|
|||
#define MCU_CTRL_DEVICE_CLKOUT_32K_CTRL (MCU_CTRL_MMR0_BASE + 0x8058)
|
||||
#define MCU_CTRL_DEVICE_CLKOUT_LFOSC_SELECT_VAL (0x3)
|
||||
|
||||
#define CTRLMMR_MCU_RST_CTRL (MCU_CTRL_MMR0_BASE + 0x18170)
|
||||
|
||||
#define ROM_ENTENDED_BOOT_DATA_INFO 0x43c3f1e0
|
||||
|
||||
/* Use Last 2K as Scratch pad */
|
||||
|
|
Loading…
Reference in a new issue