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

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.
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@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 */ + +#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); +} +#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 + #define CONFIG_SKIP_LOWLEVEL_INIT #define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_DISPLAY_CPUINFO -- 1.7.9.5

On Thu, Apr 25, 2013 at 01:59:37PM +0800, 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.
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@gmail.com
[snip]
+#define CONFIG_LOAD_ONE_WIRE_INFO 1 +#ifdef CONFIG_LOAD_ONE_WIRE_INFO +#define CONFIG_REVISION_TAG 1 +#define CONFIG_SERIAL_TAG 1 +#endif
No trailing '1' and you don't need the ifdef right after you set it in this case. Thanks!

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@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@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Best Regards, Bo Shen

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@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@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@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Best Regards, Bo Shen
participants (3)
-
Bo Shen
-
Julius Hemanth P
-
Tom Rini