mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +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_VERSION="2021.01"
|
||||
PKG_SHA256="b407e1510a74e863b8b5cb42a24625344f0e0c2fc7582d8c866bd899367d0454"
|
||||
PKG_VERSION="2021.07"
|
||||
PKG_SHA256="312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e"
|
||||
PKG_URL="http://ftp.denx.de/pub/u-boot/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
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