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