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

Przemyslaw Marczak p.marczak at samsung.com
Fri Jun 27 13:34:32 CEST 2014


On 06/27/2014 11:40 AM, Minkyu Kang wrote:
> 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.
>

No one used this before, so probably better is to move it into exynos 
soc.c code.

Thank you,
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com


More information about the U-Boot mailing list