[PATCH v2 3/4] arch: arm: mach-k3: am642_init: Probe ESM nodes
Christian Gmeiner
christian.gmeiner at gmail.com
Mon Mar 7 12:18:10 CET 2022
Am Mo., 28. Feb. 2022 um 05:56 Uhr schrieb Hari Nagalla <hnagalla at ti.com>:
>
> On AM64x devices, it is possible to route Main ESM0 error events to MCU
> ESM. MCU ESM high error output can trigger the reset logic to reset the
> device. So, for these devices we expect two ESM device nodes in the
> device tree, one for Main ESM and the another MCU ESM in the device tree.
> When these ESM device nodes are properly configired it is possible to
> route the Main RTI0 WWDT output to the MCU ESM high ouput through Main
> ESM and trigger a device reset when
> CTRLMMR_MCU_RST_CTRL:MCU_ESM_ERROR_RESET_EN_Z is set to '0'.
>
> On K3 AM64x devices, the R5 SPL u-boot handles the ESM device node
> configurations.
>
> Signed-off-by: Hari Nagalla <hnagalla at ti.com>
> ---
> arch/arm/mach-k3/am642_init.c | 29 +++++++++++++++++++++++++----
> 1 file changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-k3/am642_init.c b/arch/arm/mach-k3/am642_init.c
> index 543dea02bc..f171c1e254 100644
> --- a/arch/arm/mach-k3/am642_init.c
> +++ b/arch/arm/mach-k3/am642_init.c
> @@ -24,12 +24,22 @@
> #include <dm/root.h>
>
> #if defined(CONFIG_SPL_BUILD)
> +#define MCU_CTRL_MMR0_BASE 0x04500000
> +#define CTRLMMR_MCU_RST_CTRL 0x04518170
>
> static void ctrl_mmr_unlock(void)
> {
> /* Unlock all PADCFG_MMR1 module registers */
> mmr_unlock(PADCFG_MMR1_BASE, 1);
>
> + /* Unlock all MCU_CTRL_MMR0 module registers */
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 0);
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 1);
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 2);
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 3);
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 4);
> + mmr_unlock(MCU_CTRL_MMR0_BASE, 6);
> +
> /* Unlock all CTRL_MMR0 module registers */
> mmr_unlock(CTRL_MMR0_BASE, 0);
> mmr_unlock(CTRL_MMR0_BASE, 1);
> @@ -37,9 +47,6 @@ static void ctrl_mmr_unlock(void)
> mmr_unlock(CTRL_MMR0_BASE, 3);
> mmr_unlock(CTRL_MMR0_BASE, 5);
> mmr_unlock(CTRL_MMR0_BASE, 6);
> -
> - /* Unlock all MCU_PADCFG_MMR1 module registers */
> - mmr_unlock(MCU_PADCFG_MMR1_BASE, 1);
> }
>
> /*
> @@ -144,7 +151,7 @@ int fdtdec_board_setup(const void *fdt_blob)
>
> void board_init_f(ulong dummy)
> {
> -#if defined(CONFIG_K3_LOAD_SYSFW) || defined(CONFIG_K3_AM64_DDRSS)
> +#if defined(CONFIG_K3_LOAD_SYSFW) || defined(CONFIG_K3_AM64_DDRSS) || defined(CONFIG_ESM_K3)
> struct udevice *dev;
> int ret;
> #endif
> @@ -194,6 +201,20 @@ void board_init_f(ulong dummy)
> /* Output System Firmware version info */
> k3_sysfw_print_ver();
>
> +#if defined(CONFIG_ESM_K3)
> + /* Probe/configure ESM0 */
> + ret = uclass_get_device_by_name(UCLASS_MISC, "esm at 420000", &dev);
> + if (ret)
> + printf("esm main init failed: %d\n", ret);
> +
> + /* Probe/configure MCUESM */
> + ret = uclass_get_device_by_name(UCLASS_MISC, "esm at 4100000", &dev);
> + if (ret)
> + printf("esm mcu init failed: %d\n", ret);
> +
> + enable_mcu_esm_reset();
enable_mcu_esm_reset() is undefined! I think you forgot something in
this patch series :(
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
More information about the U-Boot
mailing list