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

Julius Hemanth P juliushemanth at gmail.com
Thu Apr 25 07:59:37 CEST 2013


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 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
  */
+
+#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


More information about the U-Boot mailing list