summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2022-02-14 22:18:45 +0300
committerTom Rini <trini@konsulko.com>2022-02-14 22:18:45 +0300
commit139e049732e2df1bc69eec9e8fdad274bb118bfb (patch)
treefd158530bd396a17e187152e7326e49877ea01f7
parent162c22bfbc4141f22937c6bc37aa02fd4621e76c (diff)
parent9f0deae6d5fa656d604b3efa2371ea52def22173 (diff)
downloadu-boot-139e049732e2df1bc69eec9e8fdad274bb118bfb.tar.xz
Merge branch '2022-02-14-assorted-fixes'
- Fix for pstore already being in the DT, "setlocalversion" script bugfix and pdu001 platform bugfix
-rw-r--r--arch/arm/dts/am335x-pdu001-u-boot.dtsi20
-rw-r--r--cmd/pstore.c39
-rw-r--r--configs/am335x_pdu001_defconfig4
-rwxr-xr-xscripts/setlocalversion5
4 files changed, 55 insertions, 13 deletions
diff --git a/arch/arm/dts/am335x-pdu001-u-boot.dtsi b/arch/arm/dts/am335x-pdu001-u-boot.dtsi
index 686a152fd9..f1860ee3e4 100644
--- a/arch/arm/dts/am335x-pdu001-u-boot.dtsi
+++ b/arch/arm/dts/am335x-pdu001-u-boot.dtsi
@@ -5,17 +5,25 @@
#include "am33xx-u-boot.dtsi"
-/ {
- ocp {
- u-boot,dm-pre-reloc;
- };
-};
-
&l4_wkup {
u-boot,dm-pre-reloc;
+ segment@200000 {
+
+ target-module@10000 {
+ u-boot,dm-pre-reloc;
+ };
+ };
};
&l4_per {
+ u-boot,dm-pre-reloc;
+ segment@100000 {
+ u-boot,dm-pre-reloc;
+
+ target-module@a6000 {
+ u-boot,dm-pre-reloc;
+ };
+ };
segment@300000 {
diff --git a/cmd/pstore.c b/cmd/pstore.c
index 9fac8c7218..cd6f6feb2f 100644
--- a/cmd/pstore.c
+++ b/cmd/pstore.c
@@ -11,6 +11,7 @@
#include <mapmem.h>
#include <memalign.h>
#include <part.h>
+#include <fdt_support.h>
struct persistent_ram_buffer {
u32 sig;
@@ -485,6 +486,8 @@ void fdt_fixup_pstore(void *blob)
{
char node[32];
int nodeoffset; /* node offset from libfdt */
+ u32 addr_cells;
+ u32 size_cells;
nodeoffset = fdt_path_offset(blob, "/");
if (nodeoffset < 0) {
@@ -493,14 +496,18 @@ void fdt_fixup_pstore(void *blob)
return;
}
- nodeoffset = fdt_add_subnode(blob, nodeoffset, "reserved-memory");
+ nodeoffset = fdt_find_or_add_subnode(blob, nodeoffset, "reserved-memory");
if (nodeoffset < 0) {
log_err("Add 'reserved-memory' node failed: %s\n",
fdt_strerror(nodeoffset));
return;
}
- fdt_setprop_u32(blob, nodeoffset, "#address-cells", 2);
- fdt_setprop_u32(blob, nodeoffset, "#size-cells", 2);
+
+ addr_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#address-cells", 2);
+ size_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#size-cells", 2);
+ fdt_setprop_u32(blob, nodeoffset, "#address-cells", addr_cells);
+ fdt_setprop_u32(blob, nodeoffset, "#size-cells", size_cells);
+
fdt_setprop_empty(blob, nodeoffset, "ranges");
sprintf(node, "ramoops@%llx", (unsigned long long)pstore_addr);
@@ -509,14 +516,36 @@ void fdt_fixup_pstore(void *blob)
log_err("Add '%s' node failed: %s\n", node, fdt_strerror(nodeoffset));
return;
}
+
fdt_setprop_string(blob, nodeoffset, "compatible", "ramoops");
- fdt_setprop_u64(blob, nodeoffset, "reg", pstore_addr);
- fdt_appendprop_u64(blob, nodeoffset, "reg", pstore_length);
+
+ if (addr_cells == 1) {
+ fdt_setprop_u32(blob, nodeoffset, "reg", pstore_addr);
+ } else if (addr_cells == 2) {
+ fdt_setprop_u64(blob, nodeoffset, "reg", pstore_addr);
+ } else {
+ log_err("Unsupported #address-cells: %u\n", addr_cells);
+ goto clean_ramoops;
+ }
+
+ if (size_cells == 1) {
+ // Let's consider that the pstore_length fits in a 32 bits value
+ fdt_appendprop_u32(blob, nodeoffset, "reg", pstore_length);
+ } else if (size_cells == 2) {
+ fdt_appendprop_u64(blob, nodeoffset, "reg", pstore_length);
+ } else {
+ log_err("Unsupported #size-cells: %u\n", addr_cells);
+ goto clean_ramoops;
+ }
+
fdt_setprop_u32(blob, nodeoffset, "record-size", pstore_record_size);
fdt_setprop_u32(blob, nodeoffset, "console-size", pstore_console_size);
fdt_setprop_u32(blob, nodeoffset, "ftrace-size", pstore_ftrace_size);
fdt_setprop_u32(blob, nodeoffset, "pmsg-size", pstore_pmsg_size);
fdt_setprop_u32(blob, nodeoffset, "ecc-size", pstore_ecc_size);
+
+clean_ramoops:
+ fdt_del_node_and_alias(blob, node);
}
U_BOOT_CMD(pstore, 10, 0, do_pstore,
diff --git a/configs/am335x_pdu001_defconfig b/configs/am335x_pdu001_defconfig
index 1c4c711858..1381cc7f9c 100644
--- a/configs/am335x_pdu001_defconfig
+++ b/configs/am335x_pdu001_defconfig
@@ -35,8 +35,10 @@ CONFIG_CMD_PMIC=y
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
+CONFIG_SPL_OF_TRANSLATE=y
CONFIG_ENV_OVERWRITE=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_SYS_MALLOC_F_LEN=0x1200
# CONFIG_NET is not set
CONFIG_SPL_DM=y
CONFIG_SPL_DM_SEQ_ALIAS=y
@@ -45,6 +47,8 @@ CONFIG_MMC_OMAP_HS=y
CONFIG_MMC_SDHCI=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_SINGLE=y
+CONFIG_CLK=y
+CONFIG_CLK_TI_CTRL=y
CONFIG_DM_PMIC=y
CONFIG_DM_PMIC_TPS65910=y
CONFIG_DM_REGULATOR=y
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index c1c0435267..4a63143706 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -153,8 +153,9 @@ if test -e include/config/auto.conf; then
# We are interested only in CONFIG_LOCALVERSION and
# CONFIG_LOCALVERSION_AUTO, so extract these in a safe
# way (i.e. w/o sourcing auto.conf)
- CONFIG_LOCALVERSION=`cat include/config/auto.conf | awk -F '=' '/^CONFIG_LOCALVERSION=/ {print $2}'`
- CONFIG_LOCALVERSION_AUTO=`cat include/config/auto.conf | awk -F '=' '/^CONFIG_LOCALVERSION_AUTO=/ {print $2}'`
+ # xargs echo removes quotes
+ CONFIG_LOCALVERSION=`cat include/config/auto.conf | awk -F '=' '/^CONFIG_LOCALVERSION=/ {print $2}' | xargs echo`
+ CONFIG_LOCALVERSION_AUTO=`cat include/config/auto.conf | awk -F '=' '/^CONFIG_LOCALVERSION_AUTO=/ {print $2}' | xargs echo`
else
echo "Error: kernelrelease not valid - run 'make prepare' to update it" >&2
exit 1