[U-Boot] [PATCH] ARM: k2g: Configure reset mux to device reset
Nishanth Menon
nm at ti.com
Thu May 26 17:45:48 CEST 2016
On 05/26/2016 08:35 AM, Lokesh Vutla wrote:
> BOOTCFG_RSTMUX8 register controls the reset mux associated with the ARM.
> Timer5(dedicated to ARM) when used as WatchDog timer, the events it
> generates are routed to the above mux.
>
> Following are the 3 events that can controlled bt the reset mux:
> - Device Reset
> - An interrupt to the ARM_GIC
> - An interrupt to the ARM_GIC followed by a device reset.
>
> Right now to give a default watchdog behaviour "Device reset" is
> being selected.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com>
> ---
Thanks.
Acked-by: Nishanth Menon <nm at ti.com>
> arch/arm/mach-keystone/include/mach/hardware-k2g.h | 12 ++++++++++++
> board/ti/ks2_evm/board_k2g.c | 16 ++++++++++++++++
> 2 files changed, 28 insertions(+)
>
> diff --git a/arch/arm/mach-keystone/include/mach/hardware-k2g.h b/arch/arm/mach-keystone/include/mach/hardware-k2g.h
> index ca2a119..0f6bf61 100644
> --- a/arch/arm/mach-keystone/include/mach/hardware-k2g.h
> +++ b/arch/arm/mach-keystone/include/mach/hardware-k2g.h
> @@ -74,4 +74,16 @@
> #define K2G_GPIO_DIR_OFFSET 0x0
> #define K2G_GPIO_SETDATA_OFFSET 0x8
>
> +/* BOOTCFG RESETMUX8 */
> +#define KS2_RSTMUX8 (KS2_DEVICE_STATE_CTRL_BASE + 0x328)
> +
> +/* RESETMUX register definitions */
> +#define RSTMUX_LOCK8_SHIFT 0x0
> +#define RSTMUX_LOCK8_MASK (0x1 << 0)
> +#define RSTMUX_OMODE8_SHIFT 0x1
> +#define RSTMUX_OMODE8_MASK (0x7 << 1)
> +#define RSTMUX_OMODE8_DEV_RESET 0x2
> +#define RSTMUX_OMODE8_INT 0x3
> +#define RSTMUX_OMODE8_INT_AND_DEV_RESET 0x4
> +
> #endif /* __ASM_ARCH_HARDWARE_K2G_H */
> diff --git a/board/ti/ks2_evm/board_k2g.c b/board/ti/ks2_evm/board_k2g.c
> index b62c412..8f16845 100644
> --- a/board/ti/ks2_evm/board_k2g.c
> +++ b/board/ti/ks2_evm/board_k2g.c
> @@ -117,12 +117,28 @@ int board_mmc_init(bd_t *bis)
> #endif
>
> #ifdef CONFIG_BOARD_EARLY_INIT_F
> +
> +static void k2g_reset_mux_config(void)
> +{
> + /* Unlock the reset mux register */
> + clrbits_le32(KS2_RSTMUX8, RSTMUX_LOCK8_MASK);
> +
> + /* Configure BOOTCFG_RSTMUX8 for WDT event to cause a device reset */
> + clrsetbits_le32(KS2_RSTMUX8, RSTMUX_OMODE8_MASK,
> + RSTMUX_OMODE8_DEV_RESET << RSTMUX_OMODE8_SHIFT);
> +
> + /* lock the reset mux register to prevent any spurious writes. */
> + setbits_le32(KS2_RSTMUX8, RSTMUX_LOCK8_MASK);
> +}
> +
> int board_early_init_f(void)
> {
> init_plls();
>
> k2g_mux_config();
>
> + k2g_reset_mux_config();
> +
> /* deassert FLASH_HOLD */
> clrbits_le32(K2G_GPIO1_BANK2_BASE + K2G_GPIO_DIR_OFFSET,
> BIT(9));
>
--
Regards,
Nishanth Menon
More information about the U-Boot
mailing list