[PATCH v8 30/32] fdt: Makefile: Ensure that OF_BOARD is used when needed
Simon Glass
sjg at chromium.org
Fri Dec 17 04:59:37 CET 2021
Boards which define OF_HAS_PRIOR_STAGE must define OF_BOARD at present,
since a custom function is the only way to obtain the devicetree at
runtime.
Add a build error when this requirement is not met, to avoid accepting
any patches which break this requirement.
Add a whitelist for boards which use it, currently none. This whitelist
can be updated for local development, if needed.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v8:
- Add new patch to ensure that OF_BOARD is used when needed
Makefile | 7 +++++++
scripts/check-of.sh | 42 ++++++++++++++++++++++++++++++++++++++++
scripts/of_whitelist.txt | 1 +
3 files changed, 50 insertions(+)
create mode 100755 scripts/check-of.sh
create mode 100644 scripts/of_whitelist.txt
diff --git a/Makefile b/Makefile
index 6671c5d9e2f..98ef2642f68 100644
--- a/Makefile
+++ b/Makefile
@@ -1061,6 +1061,10 @@ quiet_cmd_cfgcheck = CFGCHK $2
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
$(srctree)/scripts/config_whitelist.txt $(srctree)
+quiet_cmd_ofcheck = OFCHK $2
+cmd_ofcheck = $(srctree)/scripts/check-of.sh $2 \
+ $(srctree)/scripts/of_whitelist.txt
+
# Concat the value of all the CONFIGs (result is 'y' or 'yy', etc. )
got = $(foreach cfg,$(1),$($(cfg)))
@@ -1139,6 +1143,9 @@ endif
@# know about unless they are in Kconfig. All the existing CONFIG
@# options are whitelisted, so new ones should not be added.
$(call cmd,cfgcheck,u-boot.cfg)
+ @# Check that this build does not override OF_HAS_PRIOR_STAGE by
+ @# disabling OF_BOARD.
+ $(call cmd,ofcheck,$(KCONFIG_CONFIG))
PHONY += dtbs
dtbs: dts/dt.dtb
diff --git a/scripts/check-of.sh b/scripts/check-of.sh
new file mode 100755
index 00000000000..3ce7105cad4
--- /dev/null
+++ b/scripts/check-of.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Copyright 2021 Google LLC
+# Written by Simon Glass <sjg at chromium.org>
+#
+# Check that the .config file provided does not try to disable OF_BOARD for
+# boards that use CONFIG_OF_HAS_PRIOR_STAGE
+#
+# Usage
+# check-of.sh <path to .config> <path to whitelist file>
+#
+# For example:
+# scripts/check-of.sh b/chromebook_link/u-boot.cfg kconfig_whitelist.txt
+#
+# Exit code is 0 if OK, 3 if the .config is wrong, as above
+
+set -e
+set -u
+
+PROG_NAME="${0##*/}"
+
+usage() {
+ echo "$PROG_NAME <path to .config> <path to whitelist file>"
+ exit 1
+}
+
+[ $# -ge 2 ] || usage
+
+path="$1"
+whitelist="$2"
+
+sys_config="$(sed -n 's/CONFIG_SYS_CONFIG_NAME="\(.*\)"$/\1/p' "${path}")"
+
+if grep -q OF_HAS_PRIOR_STAGE=y "${path}"; then
+ if ! grep -lq CONFIG_OF_BOARD=y "${path}"; then
+ echo >&2 "This board uses a prior stage to provide the device tree."
+ echo >&2 "Please enable CONFIG_OF_BOARD to ensure that it works correctly."
+ if grep -q "${sys_config}" "${whitelist}"; then
+ exit 0
+ fi
+ exit 3
+ fi
+fi
diff --git a/scripts/of_whitelist.txt b/scripts/of_whitelist.txt
new file mode 100644
index 00000000000..e82cf557bb2
--- /dev/null
+++ b/scripts/of_whitelist.txt
@@ -0,0 +1 @@
+# List of boards which are permitted to use OF_HAS_PRIOR_STAGE without OF_BOARD
--
2.34.1.173.g76aa8bc2d0-goog
More information about the U-Boot
mailing list