Build Atmel ARM9 board Board Support Packets
guowenxue
2024-05-22 0e1e663fc604a9b245d0b442799cbf1ad33e6630
add u-boot patch
1 files added
235 ■■■■■ changed files
bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch 235 ●●●●● patch | view | raw | blame | history
bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch
New file
@@ -0,0 +1,235 @@
diff -Nuar u-boot-at91/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c u-boot-at91-loragw/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c
--- u-boot-at91/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/arch/arm/cpu/arm926ejs/at91/at91sam9x5_devices.c    2024-05-22 11:40:07.019509486 +0800
@@ -164,6 +164,7 @@
 #if defined(CONFIG_USB_OHCI_NEW) || defined(CONFIG_USB_EHCI)
 void at91_uhp_hw_init(void)
 {
+#if 0 /* comment by guowenxue 2020.12.4, PD18 conflict with Relay control board on LoRaGW V2 */
     /* Enable VBus on UHP ports */
     at91_set_pio_output(AT91_PIO_PORTD, 18, 0); /* port A */
     at91_set_pio_output(AT91_PIO_PORTD, 19, 0); /* port B */
@@ -171,6 +172,7 @@
     /* port C is OHCI only */
     at91_set_pio_output(AT91_PIO_PORTD, 20, 0); /* port C */
 #endif
+#endif
 }
 #endif
diff -Nuar u-boot-at91/board/atmel/at91sam9x5ek/at91sam9x5ek.c u-boot-at91-loragw/board/atmel/at91sam9x5ek/at91sam9x5ek.c
--- u-boot-at91/board/atmel/at91sam9x5ek/at91sam9x5ek.c    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/board/atmel/at91sam9x5ek/at91sam9x5ek.c    2024-05-22 11:40:07.019509486 +0800
@@ -263,6 +263,9 @@
     /* adress of boot parameters */
     gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+    /* PD18 is for relay and active on lowlevel, add by guowenxue 2020.12.4 */
+    at91_set_pio_output(AT91_PIO_PORTD, 18, 1);
+
 #ifdef CONFIG_CMD_NAND
     at91sam9x5ek_nand_hw_init();
 #endif
diff -Nuar u-boot-at91/common/autoboot.c u-boot-at91-loragw/common/autoboot.c
--- u-boot-at91/common/autoboot.c    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/common/autoboot.c    2024-05-22 11:40:07.019509486 +0800
@@ -161,9 +161,11 @@
      */
     if (bootdelay >= 0) {
         if (tstc()) {    /* we got a key press    */
-            (void) getc();  /* consume input    */
-            puts("\b\b\b 0");
-            abort = 1;    /* don't auto boot    */
+            if(27==getc()) /*   Only get ECS key will skip autoboot, add by guowenxue 2019.12.10 */
+            {
+                puts("\b\b\b 0");
+                abort = 1;    /* don't auto boot    */
+            }
         }
     }
 #endif
@@ -174,14 +176,12 @@
         ts = get_timer(0);
         do {
             if (tstc()) {    /* we got a key press    */
-                abort  = 1;    /* don't auto boot    */
-                bootdelay = 0;    /* no more delay    */
-# ifdef CONFIG_MENUKEY
-                menukey = getc();
-# else
-                (void) getc();  /* consume input    */
-# endif
-                break;
+                if(27==getc()) /*    Only get ECS key will skip autoboot, add by guowenxue 2019.12.10 */
+                {
+                    abort  = 1;    /* don't auto boot    */
+                    bootdelay = 0;    /* no more delay    */
+                    break;
+                }
             }
             udelay(10000);
         } while (!abort && get_timer(ts) < 1000);
diff -Nuar u-boot-at91/common/board_r.c u-boot-at91-loragw/common/board_r.c
--- u-boot-at91/common/board_r.c    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/common/board_r.c    2024-05-22 11:40:07.019509486 +0800
@@ -427,6 +427,17 @@
     else
         set_default_env(NULL);
+    /*  add by guowenxue, 2019.12.10. For auto detect rootfs type for 4K/2K nandflash  */
+    if( !getenv("nand_pagesize") )
+    {
+        char    buf[64]={'\0'};
+        extern int g_nand_erasesize; /*  defined in drivers/mtd/nand/atmel_nand.c */
+
+        snprintf(buf, sizeof(buf), "p%dk", g_nand_erasesize);
+        setenv("nand_pagesize", buf);
+        saveenv();
+    }
+
     /* Initialize from environment */
     load_addr = getenv_ulong("loadaddr", 16, load_addr);
 #if defined(CONFIG_SYS_EXTBDINFO)
diff -Nuar u-boot-at91/drivers/mtd/nand/atmel_nand.c u-boot-at91-loragw/drivers/mtd/nand/atmel_nand.c
--- u-boot-at91/drivers/mtd/nand/atmel_nand.c    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/drivers/mtd/nand/atmel_nand.c    2024-05-22 11:40:07.019509486 +0800
@@ -20,6 +20,8 @@
 #include <watchdog.h>
 #include <linux/mtd/nand_ecc.h>
+int g_nand_erasesize; /* add by guowenxue, 2019.12.10 */
+
 #ifdef CONFIG_ATMEL_NAND_HWECC
 /* Register access macros */
@@ -1519,6 +1521,7 @@
     if (!ret)
         nand_register(devnum);
+    g_nand_erasesize = mtd->writesize/1024; /* add by guowenxue, 2019.12.10 */
     return ret;
 }
diff -Nuar u-boot-at91/include/configs/at91sam9x5ek.h u-boot-at91-loragw/include/configs/at91sam9x5ek.h
--- u-boot-at91/include/configs/at91sam9x5ek.h    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/include/configs/at91sam9x5ek.h    2024-05-22 11:40:07.019509486 +0800
@@ -52,7 +52,7 @@
 #define CONFIG_ATMEL_LCD_RGB565
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_BOOTDELAY    3
+#define CONFIG_BOOTDELAY    1
 /*
  * BOOTP options
@@ -98,7 +98,7 @@
 #ifdef CONFIG_CMD_SF
 #define CONFIG_ATMEL_SPI
 #define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_ATMEL
+#define CONFIG_SPI_FLASH_WINBOND    /*  modify by guowenxue, 2019.12.09 */
 #define CONFIG_SF_DEFAULT_SPEED        30000000
 #endif
@@ -182,15 +182,13 @@
                 "0x22000000 0x200000 0x300000; " \
                 "bootm 0x22000000"
 #elif defined(CONFIG_SYS_USE_SPIFLASH)
-/* bootstrap + u-boot + env + linux in spi flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_OFFSET    0x5000
-#define CONFIG_ENV_SIZE        0x3000
-#define CONFIG_ENV_SECT_SIZE    0x1000
-#define CONFIG_ENV_SPI_MAX_HZ    30000000
-#define CONFIG_BOOTCOMMAND    "sf probe 0; " \
-                "sf read 0x22000000 0x100000 0x300000; " \
-                "bootm 0x22000000"
+
+/*  bootstrap + u-boot in SPI flash and env + linux in nandflash, modify by guowenxue */
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET           0xC0000
+#define CONFIG_ENV_SIZE             0x20000
+#define CONFIG_BOOTCOMMAND          "nand read 0x22000000 0x100000 0x700000; bootm 0x22000000"
+
 #elif defined(CONFIG_SYS_USE_DATAFLASH)
 /* bootstrap + u-boot + env + linux in data flash */
 #define CONFIG_ENV_IS_IN_SPI_FLASH
@@ -220,12 +218,35 @@
 #else
 #define CONFIG_BOOTARGS                            \
     "console=ttyS0,115200 earlyprintk "                \
-    "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"        \
-    "256k(env),256k(env_redundant),256k(spare),"            \
-    "512k(dtb),6M(kernel)ro,-(rootfs) "                \
-    "rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw"
+    "rootfstype=ubifs ubi.mtd=2 root=ubi0:rootfs rw"
 #endif
+/*  Add by guowenxue, 2019.12.9 */
+#define CONFIG_FIT              1
+#define CONFIG_ENV_OVERWRITE    1
+#define CONFIG_ETHADDR          42:96:ab:be:a7:5d
+#define CONFIG_IPADDR           192.168.2.196
+#define CONFIG_SERVERIP         192.168.2.2
+
+#define CONFIG_BOARDNAME        "LoRaGW"
+#define CONFIG_TFTPBOOT         "tftp 0x22000000 linuxrom-${boardname}.itb && bootm 0x22000000"
+
+#define CONFIG_BBL              "sf probe && tftp 0x22000000 bootstrap-${boardname}.bin && " \
+                                "tftp 0x23000000 u-boot-${boardname}.bin && " \
+                                "sf erase 0 A0000 && sf write 0x22000000 0 3000 && sf write 0x23000000 8000 80000"
+
+#define CONFIG_BKR              "tftp 0x22000000 linuxrom-${boardname}.itb && nand erase 0x100000 0x700000; " \
+                                "nand write 0x22000000 0x100000 ${filesize}"
+
+#define CONFIG_BFS              "tftp 0x21000000 rootfs-${boardname}.ubi-${nand_pagesize} && nand erase 800000 6400000; " \
+                                "nand write 0x21000000 800000 ${filesize}"
+
+#define CONFIG_BSYS             "run bkr; run bfs"
+#define CONFIG_CLRAPPS          "nand erase d000000 13000000"
+#define CONFIG_CLRENV           "nand erase 0 100000"
+#define CONFIG_DBGRUN           "run bfs; run tb"
+/* add end  */
+
 #define CONFIG_BAUDRATE        115200
 #define CONFIG_SYS_PROMPT    "U-Boot> "
diff -Nuar u-boot-at91/include/env_default.h u-boot-at91-loragw/include/env_default.h
--- u-boot-at91/include/env_default.h    2019-12-09 22:12:00.000000000 +0800
+++ u-boot-at91-loragw/include/env_default.h    2024-05-22 11:40:07.019509486 +0800
@@ -76,6 +76,35 @@
 #ifdef    CONFIG_SERVERIP
     "serverip="    __stringify(CONFIG_SERVERIP)    "\0"
 #endif
+/*  add by guowenxue, 2019.08.22  */
+#ifdef  CONFIG_BOARDNAME
+    "boardname="    CONFIG_BOARDNAME    "\0"
+#endif
+#ifdef CONFIG_TFTPBOOT
+    "tb="   CONFIG_TFTPBOOT "\0"
+#endif
+#ifdef  CONFIG_BBL
+    "bbl="  CONFIG_BBL  "\0"
+#endif
+#ifdef CONFIG_BKR
+    "bkr="  CONFIG_BKR  "\0"
+#endif
+#ifdef CONFIG_BFS
+    "bfs="  CONFIG_BFS  "\0"
+#endif
+#ifdef CONFIG_BSYS
+    "bsys=" CONFIG_BSYS "\0"
+#endif
+#ifdef CONFIG_CLRAPPS
+    "clrapps="  CONFIG_CLRAPPS  "\0"
+#endif
+#ifdef CONFIG_CLRENV
+    "clrenv="  CONFIG_CLRENV  "\0"
+#endif
+#ifdef CONFIG_DBGRUN
+    "dbg="  CONFIG_DBGRUN   "\0"
+#endif
+/* add end */
 #ifdef    CONFIG_SYS_AUTOLOAD
     "autoload="    CONFIG_SYS_AUTOLOAD        "\0"
 #endif