[U-Boot] [PATCH] at91sam9x5ek: Pass serial and revision tags to Linux

Julius Hemanth P juliushemanth at gmail.com
Fri Apr 26 10:33:22 CEST 2013


Thanks Bo and Tom.
I shall modify patch as suggested and will send it again.


On Fri, Apr 26, 2013 at 7:20 AM, Bo Shen <voice.shen at atmel.com> wrote:
> Hi Julius,
>
>
> On 4/25/2013 13:59, Julius Hemanth P wrote:
>>
>> This code is small snippet from patch
>> ftp://ftp.linux4sam.org/pub/uboot/u-boot-v2010.06/u-boot-5series_1.0.patch
>>
>> Bug:-
>>   For board at91sam9x5ek, U-boot doesn't pass serial and revision tags
>> to Linux kernel, hence kernel fails to identify correct revision and
>> assumes
>> as rev-A, resulting in failing to detect NAND device.
>
>
> It won't have issue work with mainline Linux kernel for at91sam9x5.
>
> Actually, this only occur when mainline u-boot work with the Linux kernel we
> released based on 2.6.39 (This is almost two years old). So, for customer we
> suggest them upgrade the Linux kernel.
>
> For compatible issue, add this won't hurt. Temporary, we can accept it. if
> the GPBR will use for other function in future, this will be removed.
>
>
>> This patch enables u-boot to pass serial and revision tags to Linux
>> kernel, which helps Linux to detect NAND device.
>>
>> Signed-off-by: Julius Hemanth <juliushemanth at gmail.com>
>> ---
>>   board/atmel/at91sam9x5ek/at91sam9x5ek.c |   28
>> ++++++++++++++++++++++++++++
>>   include/configs/at91sam9x5ek.h          |    7 +++++++
>>   2 files changed, 35 insertions(+)
>>
>> diff --git a/board/atmel/at91sam9x5ek/at91sam9x5ek.c
>> b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
>> index 8773e6f..43a55e4 100644
>> --- a/board/atmel/at91sam9x5ek/at91sam9x5ek.c
>> +++ b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
>> @@ -50,6 +50,30 @@ DECLARE_GLOBAL_DATA_PTR;
>>   /*
>>    * Miscelaneous platform dependent initialisations
>>    */
>
>
> s/Miscelaneous/Miscellaneous
> s/initialisations/initializations
>
>
>> +
>> +#ifdef CONFIG_LOAD_ONE_WIRE_INFO
>> +static u32 system_rev;
>> +static u32 system_serial_low;
>> +
>> +u32 get_board_rev(void)
>> +{
>> +       return system_rev;
>> +}
>> +
>> +void get_board_serial(struct tag_serialnr *serialnr)
>> +{
>> +       serialnr->high = 0; /* Not used */
>> +       serialnr->low = system_serial_low;
>> +}
>> +
>> +void load_1wire_info(void)
>> +{
>> +       /* serial is in GPBR #2 and revision is in GPBR #3 */
>> +       system_serial_low = readl(ATMEL_BASE_GPBR + 4 * 2);
>> +       system_rev = readl(ATMEL_BASE_GPBR + 4 * 3);
>
>
> Please use c structure to access it.
>
>
>> +}
>> +#endif
>> +
>>   #ifdef CONFIG_CMD_NAND
>>   static void at91sam9x5ek_nand_hw_init(void)
>>   {
>> @@ -282,6 +306,10 @@ int board_init(void)
>>          /* adress of boot parameters */
>>          gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
>>
>> +#ifdef CONFIG_LOAD_ONE_WIRE_INFO
>> +       load_1wire_info();
>> +#endif
>> +
>>   #ifdef CONFIG_CMD_NAND
>>          at91sam9x5ek_nand_hw_init();
>>   #endif
>> diff --git a/include/configs/at91sam9x5ek.h
>> b/include/configs/at91sam9x5ek.h
>> index ee6e3fc..b6236b8 100644
>> --- a/include/configs/at91sam9x5ek.h
>> +++ b/include/configs/at91sam9x5ek.h
>> @@ -38,6 +38,13 @@
>>   #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
>>   #define CONFIG_SETUP_MEMORY_TAGS
>>   #define CONFIG_INITRD_TAG
>> +
>> +#define CONFIG_LOAD_ONE_WIRE_INFO      1
>> +#ifdef CONFIG_LOAD_ONE_WIRE_INFO
>> +#define CONFIG_REVISION_TAG            1
>> +#define CONFIG_SERIAL_TAG              1
>> +#endif
>
>
> Address Tom Rini's comments.
>
>> +
>>   #define CONFIG_SKIP_LOWLEVEL_INIT
>>   #define CONFIG_BOARD_EARLY_INIT_F
>>   #define CONFIG_DISPLAY_CPUINFO
>> --
>> 1.7.9.5
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>>
>
> Best Regards,
> Bo Shen
>


More information about the U-Boot mailing list