[U-Boot] [PATCH v3 06/11] arm:reset: call the reset_misc() before the cpu reset

Minkyu Kang mk7.kang at samsung.com
Fri Jun 27 11:40:32 CEST 2014


Dear Przemyslaw Marczak,

On 26/06/14 23:15, Przemyslaw Marczak wrote:
> On an Odroid U3 board, the SOC is unable to reset the eMMC card
> in the DWMMC mode by the cpu software reset. Manual reset of the card
> by switching proper gpio pin - fixes this issue.
> 
> Such solution needs to add a call to pre reset function.
> This is done by the reset_misc() function, which is called before reset_cpu().
> The function reset_misc() is a weak function.
> 
> Signed-off-by: Przemyslaw Marczak <p.marczak at samsung.com>
> Cc: Minkyu Kang <mk7.kang at samsung.com>
> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> Cc: Albert ARIBAUD <albert.u.boot at aribaud.net>
> Cc: Tom Rini <trini at ti.com>
> ---
>  arch/arm/lib/reset.c | 7 +++++++
>  include/common.h     | 1 +
>  2 files changed, 8 insertions(+)
> 
> diff --git a/arch/arm/lib/reset.c b/arch/arm/lib/reset.c
> index 7a03580..3b39466 100644
> --- a/arch/arm/lib/reset.c
> +++ b/arch/arm/lib/reset.c
> @@ -23,6 +23,11 @@
>  
>  #include <common.h>
>  
> +void __reset_misc(void) {}
> +
> +void reset_misc(void)
> +	__attribute((weak, alias("__reset_misc")));
> +
>  int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  {
>  	puts ("resetting ...\n");
> @@ -30,6 +35,8 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  	udelay (50000);				/* wait 50 ms */
>  
>  	disable_interrupts();
> +
> +	reset_misc();
>  	reset_cpu(0);
>  
>  	/*NOTREACHED*/
> diff --git a/include/common.h b/include/common.h
> index 232136c..04bab78 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -629,6 +629,7 @@ int	checkicache   (void);
>  int	checkdcache   (void);
>  void	upmconfig     (unsigned int, unsigned int *, unsigned int);
>  ulong	get_tbclk     (void);
> +void	reset_misc    (void);
>  void	reset_cpu     (ulong addr);
>  #if defined (CONFIG_OF_LIBFDT) && defined (CONFIG_OF_BOARD_SETUP)
>  void ft_cpu_setup(void *blob, bd_t *bd);
> 

I'm not sure that we really need to add this function to arm common.
We can do this in reset_cpu (arch/arm/cpu/armv7/exynos/soc.c).
But if other SoCs also need to add such things then, it can be added as arm common.

Thanks,
Minkyu Kang.


More information about the U-Boot mailing list