summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2014-04-30 18:02:04 +0000
committerimp <imp@FreeBSD.org>2014-04-30 18:02:04 +0000
commitc4a1255f95935b40173708ba78773bcb76cfbd72 (patch)
treeb99dcaa7476d82c5822f2afec6f978c6ce9e1987
parent14906a620b6524bb6bd3f17265e6c4464f7e31d1 (diff)
downloadFreeBSD-src-c4a1255f95935b40173708ba78773bcb76cfbd72.zip
FreeBSD-src-c4a1255f95935b40173708ba78773bcb76cfbd72.tar.gz
Allow FDT_DTS_FILE to be a list, either in the makedtb target, or in a
kernel config file. If you also want to have a static DTB compiled into your kernel, however, it cannot be a list. We have no mechanism in the kernel for picking one, so that doesn't make sense and will result in a compile-time error.
-rw-r--r--Makefile.inc122
-rw-r--r--sys/conf/files2
-rwxr-xr-xsys/tools/fdt/make_dtb.sh10
3 files changed, 13 insertions, 21 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index 1b7d38d..e31945f 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -1830,24 +1830,12 @@ DTBOUTPUTPATH= ${.CURDIR}
# Build 'standalone' Device Tree Blob
#
builddtb:
- @if [ "${FDT_DTS_FILE}" = "" ]; then \
- echo "ERROR: FDT_DTS_FILE must be specified!"; \
- exit 1; \
- fi; \
- if [ ! -f ${.CURDIR}/sys/boot/fdt/dts/${TARGET}/${FDT_DTS_FILE} ]; then \
- echo "ERROR: Specified DTS file (${FDT_DTS_FILE}) does not \
- exist!"; \
- exit 1; \
- fi; \
- if [ "${DTBOUTPUTPATH}" = "${.CURDIR}" ]; then \
- echo "WARNING: DTB will be placed in the current working \
- directory"; \
- fi
- @PATH=${TMPPATH} \
- MACHINE=${TARGET} \
+.if !defined(FDT_DTS_FILE)
+.error "FDT_DTS_FILE must be specified!"
+.endif
+ @PATH=${TMPPATH} MACHINE=${TARGET} \
${.CURDIR}/sys/tools/fdt/make_dtb.sh ${.CURDIR}/sys \
- ${FDT_DTS_FILE} \
- ${DTBOUTPUTPATH}/`basename ${FDT_DTS_FILE} .dts`
+ "${FDT_DTS_FILE}" ${DTBOUTPUTPATH}
###############
diff --git a/sys/conf/files b/sys/conf/files
index 8c0c2fc..37a4770 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -14,7 +14,7 @@ acpi_quirks.h optional acpi \
# from the specified source (DTS) file: <platform>.dts -> <platform>.dtb
#
fdt_dtb_file optional fdt fdt_dtb_static \
- compile-with "sh $S/tools/fdt/make_dtb.sh $S ${FDT_DTS_FILE} ${.CURDIR}/${FDT_DTS_FILE:R}.dtb" \
+ compile-with "sh $S/tools/fdt/make_dtb.sh $S ${FDT_DTS_FILE} ${.CURDIR}" \
no-obj no-implicit-rule before-depend \
clean "${FDT_DTS_FILE:R}.dtb"
fdt_static_dtb.h optional fdt fdt_dtb_static \
diff --git a/sys/tools/fdt/make_dtb.sh b/sys/tools/fdt/make_dtb.sh
index 900ad9b..278b7bb 100755
--- a/sys/tools/fdt/make_dtb.sh
+++ b/sys/tools/fdt/make_dtb.sh
@@ -4,8 +4,12 @@
# Script generates dtb file ($3) from dts source ($2) in build tree S ($1)
S=$1
-dts=$2
-dtb=$3
+dts="$2"
+dtb_path=$3
-cpp -x assembler-with-cpp -I $S/gnu/dts/include -I $S/boot/fdt/dts/${MACHINE} -I $S/gnu/dts/${MACHINE} -include $dts /dev/null |
+for d in ${dts}; do
+ dtb=${dtb_path}/`basename $d .dts`.dtb
+ echo "converting $d -> $dtb"
+ cpp -x assembler-with-cpp -I $S/gnu/dts/include -I $S/boot/fdt/dts/${MACHINE} -I $S/gnu/dts/${MACHINE} -include $d /dev/null |
dtc -O dtb -o $dtb -b 0 -p 1024 -i $S/boot/fdt/dts/${MACHINE} -i $S/gnu/dts/${MACHINE}
+done
OpenPOWER on IntegriCloud