mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 05:36:47 +00:00
u-boot: Update to 2021.07
This commit is contained in:
parent
85b190b30f
commit
03e61f9216
@ -35,10 +35,9 @@ case "${PROJECT}" in
|
|||||||
PKG_PATCH_DIRS="rockchip"
|
PKG_PATCH_DIRS="rockchip"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
PKG_VERSION="2021.01"
|
PKG_VERSION="2021.07"
|
||||||
PKG_SHA256="b407e1510a74e863b8b5cb42a24625344f0e0c2fc7582d8c866bd899367d0454"
|
PKG_SHA256="312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e"
|
||||||
PKG_URL="http://ftp.denx.de/pub/u-boot/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
PKG_URL="http://ftp.denx.de/pub/u-boot/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||||
PKG_PATCH_DIRS="default"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -1,197 +0,0 @@
|
|||||||
From ac4728b374f39debc266fe42c513ea8f61e3d369 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
Date: Thu, 24 Dec 2020 09:03:15 +0100
|
|
||||||
Subject: [PATCH] pxe: add support for FDT overlays
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
This adds support for specicyinf FDT overlays in an extlinux/pxelinux
|
|
||||||
configuration file.
|
|
||||||
|
|
||||||
Without this, there is no simple way to apply overlays when the kernel
|
|
||||||
and ftd is loaded by the pxe command.
|
|
||||||
|
|
||||||
This change adds the 'fdtoverlays' keyword for a label, supporting multiple
|
|
||||||
overlay files to be applied on top of the fdt specific in the 'fdt' or
|
|
||||||
'devicetree' keyword.
|
|
||||||
|
|
||||||
Cc: Jernej Škrabec <jernej.skrabec@siol.net>
|
|
||||||
Cc: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
cmd/pxe_utils.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
cmd/pxe_utils.h | 1 +
|
|
||||||
2 files changed, 104 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c
|
|
||||||
index 8716e782f6aa..25367190a700 100644
|
|
||||||
--- a/cmd/pxe_utils.c
|
|
||||||
+++ b/cmd/pxe_utils.c
|
|
||||||
@@ -13,6 +13,8 @@
|
|
||||||
#include <mapmem.h>
|
|
||||||
#include <lcd.h>
|
|
||||||
#include <net.h>
|
|
||||||
+#include <fdt_support.h>
|
|
||||||
+#include <linux/libfdt.h>
|
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -284,6 +286,9 @@ static void label_destroy(struct pxe_label *label)
|
|
||||||
if (label->fdtdir)
|
|
||||||
free(label->fdtdir);
|
|
||||||
|
|
||||||
+ if (label->fdtoverlays)
|
|
||||||
+ free(label->fdtoverlays);
|
|
||||||
+
|
|
||||||
free(label);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -331,6 +336,92 @@ static int label_localboot(struct pxe_label *label)
|
|
||||||
return run_command_list(localcmd, strlen(localcmd), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Loads fdt overlays specified in 'fdtoverlays'.
|
|
||||||
+ */
|
|
||||||
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
|
|
||||||
+static void label_boot_fdtoverlay(struct cmd_tbl *cmdtp, struct pxe_label *label)
|
|
||||||
+{
|
|
||||||
+ char *fdtoverlay = label->fdtoverlays;
|
|
||||||
+ struct fdt_header *working_fdt;
|
|
||||||
+ char *fdtoverlay_addr_env;
|
|
||||||
+ ulong fdtoverlay_addr;
|
|
||||||
+ ulong fdt_addr;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ /* Get the main fdt and map it */
|
|
||||||
+ fdt_addr = simple_strtoul(env_get("fdt_addr_r"), NULL, 16);
|
|
||||||
+ working_fdt = map_sysmem(fdt_addr, 0);
|
|
||||||
+ err = fdt_check_header(working_fdt);
|
|
||||||
+ if (err)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ /* Get the specific overlay loading address */
|
|
||||||
+ fdtoverlay_addr_env = env_get("fdtoverlay_addr_r");
|
|
||||||
+ if (!fdtoverlay_addr_env) {
|
|
||||||
+ printf("Invalid fdtoverlay_addr_r for loading overlays\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ fdtoverlay_addr = simple_strtoul(fdtoverlay_addr_env, NULL, 16);
|
|
||||||
+
|
|
||||||
+ /* Cycle over the overlay files and apply them in order */
|
|
||||||
+ do {
|
|
||||||
+ struct fdt_header *blob;
|
|
||||||
+ char *overlayfile;
|
|
||||||
+ char *end;
|
|
||||||
+ int len;
|
|
||||||
+
|
|
||||||
+ /* Drop leading spaces */
|
|
||||||
+ while (*fdtoverlay == ' ')
|
|
||||||
+ ++fdtoverlay;
|
|
||||||
+
|
|
||||||
+ /* Copy a single filename if multiple provided */
|
|
||||||
+ end = strstr(fdtoverlay, " ");
|
|
||||||
+ if (end) {
|
|
||||||
+ len = (int)(end - fdtoverlay);
|
|
||||||
+ overlayfile = malloc(len + 1);
|
|
||||||
+ strncpy(overlayfile, fdtoverlay, len);
|
|
||||||
+ overlayfile[len] = '\0';
|
|
||||||
+ } else
|
|
||||||
+ overlayfile = fdtoverlay;
|
|
||||||
+
|
|
||||||
+ if (!strlen(overlayfile))
|
|
||||||
+ goto skip_overlay;
|
|
||||||
+
|
|
||||||
+ /* Load overlay file */
|
|
||||||
+ err = get_relfile_envaddr(cmdtp, overlayfile,
|
|
||||||
+ "fdtoverlay_addr_r");
|
|
||||||
+ if (err < 0) {
|
|
||||||
+ printf("Failed loading overlay %s\n", overlayfile);
|
|
||||||
+ goto skip_overlay;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Resize main fdt */
|
|
||||||
+ fdt_shrink_to_minimum(working_fdt, 8192);
|
|
||||||
+
|
|
||||||
+ blob = map_sysmem(fdtoverlay_addr, 0);
|
|
||||||
+ err = fdt_check_header(blob);
|
|
||||||
+ if (err) {
|
|
||||||
+ printf("Invalid overlay %s, skipping\n",
|
|
||||||
+ overlayfile);
|
|
||||||
+ goto skip_overlay;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ err = fdt_overlay_apply_verbose(working_fdt, blob);
|
|
||||||
+ if (err) {
|
|
||||||
+ printf("Failed to apply overlay %s, skipping\n",
|
|
||||||
+ overlayfile);
|
|
||||||
+ goto skip_overlay;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+skip_overlay:
|
|
||||||
+ if (end)
|
|
||||||
+ free(overlayfile);
|
|
||||||
+ } while ((fdtoverlay = strstr(fdtoverlay, " ")));
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Boot according to the contents of a pxe_label.
|
|
||||||
*
|
|
||||||
@@ -525,6 +616,11 @@ static int label_boot(struct cmd_tbl *cmdtp, struct pxe_label *label)
|
|
||||||
label->name);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_OF_LIBFDT_OVERLAY
|
|
||||||
+ if (label->fdtoverlays)
|
|
||||||
+ label_boot_fdtoverlay(cmdtp, label);
|
|
||||||
+#endif
|
|
||||||
} else {
|
|
||||||
bootm_argv[3] = NULL;
|
|
||||||
}
|
|
||||||
@@ -582,6 +678,7 @@ enum token_type {
|
|
||||||
T_INCLUDE,
|
|
||||||
T_FDT,
|
|
||||||
T_FDTDIR,
|
|
||||||
+ T_FDTOVERLAYS,
|
|
||||||
T_ONTIMEOUT,
|
|
||||||
T_IPAPPEND,
|
|
||||||
T_BACKGROUND,
|
|
||||||
@@ -616,6 +713,7 @@ static const struct token keywords[] = {
|
|
||||||
{"fdt", T_FDT},
|
|
||||||
{"devicetreedir", T_FDTDIR},
|
|
||||||
{"fdtdir", T_FDTDIR},
|
|
||||||
+ {"fdtoverlays", T_FDTOVERLAYS},
|
|
||||||
{"ontimeout", T_ONTIMEOUT,},
|
|
||||||
{"ipappend", T_IPAPPEND,},
|
|
||||||
{"background", T_BACKGROUND,},
|
|
||||||
@@ -1048,6 +1146,11 @@ static int parse_label(char **c, struct pxe_menu *cfg)
|
|
||||||
err = parse_sliteral(c, &label->fdtdir);
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case T_FDTOVERLAYS:
|
|
||||||
+ if (!label->fdtoverlays)
|
|
||||||
+ err = parse_sliteral(c, &label->fdtoverlays);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
case T_LOCALBOOT:
|
|
||||||
label->localboot = 1;
|
|
||||||
err = parse_integer(c, &label->localboot_val);
|
|
||||||
diff --git a/cmd/pxe_utils.h b/cmd/pxe_utils.h
|
|
||||||
index 77d25888758f..6af952373430 100644
|
|
||||||
--- a/cmd/pxe_utils.h
|
|
||||||
+++ b/cmd/pxe_utils.h
|
|
||||||
@@ -43,6 +43,7 @@ struct pxe_label {
|
|
||||||
char *initrd;
|
|
||||||
char *fdt;
|
|
||||||
char *fdtdir;
|
|
||||||
+ char *fdtoverlays;
|
|
||||||
int ipappend;
|
|
||||||
int attempted;
|
|
||||||
int localboot;
|
|
||||||
--
|
|
||||||
2.29.2
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
|||||||
From 48f5c27ae2edfb36d7f6a628d3763b4c4b85c9c7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
|
||||||
Date: Wed, 30 Dec 2020 21:01:20 +0100
|
|
||||||
Subject: [PATCH] sunxi: Add fdtoverlay_addr_r env variable
|
|
||||||
|
|
||||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
|
||||||
---
|
|
||||||
include/configs/sunxi-common.h | 40 +++++++++++++++++++---------------
|
|
||||||
1 file changed, 22 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
|
|
||||||
index a6a4879523a3..34917be3325f 100644
|
|
||||||
--- a/include/configs/sunxi-common.h
|
|
||||||
+++ b/include/configs/sunxi-common.h
|
|
||||||
@@ -287,12 +287,13 @@ extern int soft_i2c_gpio_scl;
|
|
||||||
* Scripts, PXE and DTBs should go afterwards, leaving the rest for the initrd.
|
|
||||||
* Align the initrd to a 2MB page.
|
|
||||||
*/
|
|
||||||
-#define BOOTM_SIZE __stringify(0xa000000)
|
|
||||||
-#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0080000))
|
|
||||||
-#define FDT_ADDR_R __stringify(SDRAM_OFFSET(FA00000))
|
|
||||||
-#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(FC00000))
|
|
||||||
-#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(FD00000))
|
|
||||||
-#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(FE00000))
|
|
||||||
+#define BOOTM_SIZE __stringify(0xa000000)
|
|
||||||
+#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0080000))
|
|
||||||
+#define FDT_ADDR_R __stringify(SDRAM_OFFSET(FA00000))
|
|
||||||
+#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(FB00000))
|
|
||||||
+#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(FC00000))
|
|
||||||
+#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(FD00000))
|
|
||||||
+#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(FE00000))
|
|
||||||
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
@@ -301,24 +302,26 @@ extern int soft_i2c_gpio_scl;
|
|
||||||
* 1M script, 1M pxe and the ramdisk at the end.
|
|
||||||
*/
|
|
||||||
#ifndef CONFIG_MACH_SUN8I_V3S
|
|
||||||
-#define BOOTM_SIZE __stringify(0xa000000)
|
|
||||||
-#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(2000000))
|
|
||||||
-#define FDT_ADDR_R __stringify(SDRAM_OFFSET(3000000))
|
|
||||||
-#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(3100000))
|
|
||||||
-#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(3200000))
|
|
||||||
-#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(3300000))
|
|
||||||
+#define BOOTM_SIZE __stringify(0xa000000)
|
|
||||||
+#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(2000000))
|
|
||||||
+#define FDT_ADDR_R __stringify(SDRAM_OFFSET(3000000))
|
|
||||||
+#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(3100000))
|
|
||||||
+#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(3200000))
|
|
||||||
+#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(3300000))
|
|
||||||
+#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(3400000))
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* 64M RAM minus 2MB heap + 16MB for u-boot, stack, fb, etc.
|
|
||||||
* 16M uncompressed kernel, 8M compressed kernel, 1M fdt,
|
|
||||||
* 1M script, 1M pxe and the ramdisk at the end.
|
|
||||||
*/
|
|
||||||
-#define BOOTM_SIZE __stringify(0x2e00000)
|
|
||||||
-#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(1000000))
|
|
||||||
-#define FDT_ADDR_R __stringify(SDRAM_OFFSET(1800000))
|
|
||||||
-#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(1900000))
|
|
||||||
-#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(1A00000))
|
|
||||||
-#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(1B00000))
|
|
||||||
+#define BOOTM_SIZE __stringify(0x2e00000)
|
|
||||||
+#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(1000000))
|
|
||||||
+#define FDT_ADDR_R __stringify(SDRAM_OFFSET(1800000))
|
|
||||||
+#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(1900000))
|
|
||||||
+#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(1A00000))
|
|
||||||
+#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(1B00000))
|
|
||||||
+#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(1C00000))
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -326,6 +329,7 @@ extern int soft_i2c_gpio_scl;
|
|
||||||
"bootm_size=" BOOTM_SIZE "\0" \
|
|
||||||
"kernel_addr_r=" KERNEL_ADDR_R "\0" \
|
|
||||||
"fdt_addr_r=" FDT_ADDR_R "\0" \
|
|
||||||
+ "fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \
|
|
||||||
"scriptaddr=" SCRIPT_ADDR_R "\0" \
|
|
||||||
"pxefile_addr_r=" PXEFILE_ADDR_R "\0" \
|
|
||||||
"ramdisk_addr_r=" RAMDISK_ADDR_R "\0"
|
|
||||||
--
|
|
||||||
2.30.0
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user