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

Julius Hemanth P juliushemanth at gmail.com
Thu May 9 09:02:42 CEST 2013


Thanks Bo, will send updated patch with all corrections.

Regards,
Julius Hemanth P
On May 9, 2013 8:49 AM, "Bo Shen" <voice.shen at atmel.com> wrote:

> Hi Julius,
>
> On 5/3/2013 18:54, 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<ftp://ftp.linux4sam.org/pub/uboot/u-boot-v2010.06/u-boot-5series_1.0.patch>
>>
>> Bug:-
>>
>
> I think this should not report bug, it should for compatible with old
> kernel (only for Linux 2.6.39 released on www.at91.com/linux4sam).
>
>    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.
>>
>> 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>
>> ---
>> Changes for v2:
>>          - access GPBR using c structure
>>          - removed tailing 1 for #define
>>          - s/Miscelaneous/Miscellaneous
>>          - s/initialisations/**initializations
>>
>>   board/atmel/at91sam9x5ek/**at91sam9x5ek.c |   33
>> ++++++++++++++++++++++++++++++**-
>>   include/configs/at91sam9x5ek.h          |    5 ++++
>>   2 files changed, 37 insertions(+), 1 deletions(-)
>>
>
> This patch can not be applied based on u-boot master branch or else on
> u-boot-atmel master branch.
>
> Please re-generate this patch based on u-boot master branch or
> u-boot-atmel master branch.
>
>  diff --git a/board/atmel/at91sam9x5ek/**at91sam9x5ek.c
>> b/board/atmel/at91sam9x5ek/**at91sam9x5ek.c
>> index 8773e6f..c05bdb7 100644
>> --- a/board/atmel/at91sam9x5ek/**at91sam9x5ek.c
>> +++ b/board/atmel/at91sam9x5ek/**at91sam9x5ek.c
>> @@ -27,6 +27,7 @@
>>   #include <asm/arch/at91_common.h>
>>   #include <asm/arch/at91_pmc.h>
>>   #include <asm/arch/at91_rstc.h>
>> +#include <asm/arch/at91_gpbr.h>
>>   #include <asm/arch/gpio.h>
>>   #include <asm/arch/clk.h>
>>   #include <lcd.h>
>> @@ -48,8 +49,34 @@ DECLARE_GLOBAL_DATA_PTR;
>>
>>   /* ------------------------------**------------------------------**-------------
>> */
>>   /*
>> - * Miscelaneous platform dependent initialisations
>> + * Miscellaneous platform dependent 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)
>> +{
>> +       at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR;
>> +
>> +       /* serial is in GPBR #2 and revision is in GPBR #3 */
>> +       system_serial_low = readl(gpbr->reg[2]);
>> +       system_rev = readl(gpbr->reg[3]);
>> +}
>>
>
> This is wrong which will cause u-boot hang up. It should be:
>
> system_serial_low = readl(&gpbr->reg[2]);
> system_rev = readl(&gpbr->reg[3]);
>
> Best Regards,
> Bo Shen
>


More information about the U-Boot mailing list