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

Minkyu Kang
2014-06-27T09:40:32Z

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@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
> Cc: Tom Rini <trini@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.