[U-Boot] [PATCH] arm: vf610: improve evaluation of reset source

Stefano Babic sbabic at denx.de
Mon Dec 1 10:39:00 CET 2014


On 27/11/2014 23:58, Stefan Agner wrote:
> Improve the evaluation of the reset source. Bit description according
> to latest reference manual rev. 7.
> 
> Signed-off-by: Stefan Agner <stefan at agner.ch>
> ---
>  arch/arm/cpu/armv7/vf610/generic.c         | 21 +++++++++++----------
>  arch/arm/include/asm/arch-vf610/imx-regs.h |  8 ++++++++
>  2 files changed, 19 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/vf610/generic.c b/arch/arm/cpu/armv7/vf610/generic.c
> index a26d63e..92aaad9 100644
> --- a/arch/arm/cpu/armv7/vf610/generic.c
> +++ b/arch/arm/cpu/armv7/vf610/generic.c
> @@ -265,20 +265,21 @@ static char *get_reset_cause(void)
>  
>  	cause = readl(&src_regs->srsr);
>  	writel(cause, &src_regs->srsr);
> -	cause &= 0xff;
>  
> -	switch (cause) {
> -	case 0x08:
> -		return "WDOG";
> -	case 0x20:
> +	if (cause & SRC_SRSR_POR_RST)
> +		return "POWER ON RESET";
> +	else if (cause & SRC_SRSR_WDOG_A5)
> +		return "WDOG A5";
> +	else if (cause & SRC_SRSR_WDOG_M4)
> +		return "WDOG M4";
> +	else if (cause & SRC_SRSR_JTAG_RST)
>  		return "JTAG HIGH-Z";
> -	case 0x80:
> +	else if (cause & SRC_SRSR_SW_RST)
> +		return "SW RESET";
> +	else if (cause & SRC_SRSR_RESETB)
>  		return "EXTERNAL RESET";
> -	case 0xfd:
> -		return "POR";
> -	default:
> +	else
>  		return "unknown reset";
> -	}
>  }
>  
>  int print_cpuinfo(void)
> diff --git a/arch/arm/include/asm/arch-vf610/imx-regs.h b/arch/arm/include/asm/arch-vf610/imx-regs.h
> index 9d797db..6b10bdf 100644
> --- a/arch/arm/include/asm/arch-vf610/imx-regs.h
> +++ b/arch/arm/include/asm/arch-vf610/imx-regs.h
> @@ -256,6 +256,14 @@
>  #define DDRMC_CR161_TODTH_RD(v)				(((v) & 0xf) << 8)
>  #define DDRMC_CR161_TODTH_WR(v)				((v) & 0xf)
>  
> +/* System Reset Controller (SRC) */
> +#define SRC_SRSR_SW_RST					(0x1 << 18)
> +#define SRC_SRSR_RESETB					(0x1 << 7)
> +#define SRC_SRSR_JTAG_RST				(0x1 << 5)
> +#define SRC_SRSR_WDOG_M4				(0x1 << 4)
> +#define SRC_SRSR_WDOG_A5				(0x1 << 3)
> +#define SRC_SRSR_POR_RST				(0x1 << 0)
> +
>  #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
>  #include <asm/types.h>
>  
> 

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list