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

Bo Shen voice.shen at atmel.com
Fri Apr 26 03:50:48 CEST 2013


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