From 0e1e663fc604a9b245d0b442799cbf1ad33e6630 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Wed, 22 May 2024 11:42:17 +0800
Subject: [PATCH] add u-boot patch
---
bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 235 insertions(+), 0 deletions(-)
diff --git a/bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch b/bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch
new file mode 100644
index 0000000..d394a21
--- /dev/null
+++ b/bootloader/patches/loragw/u-boot-at91-linux4sam-6.1.patch
@@ -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
--
Gitblit v1.9.1