diff options
author | Sipke Vriend <sipke.vriend@xilinx.com> | 2013-08-21 12:00:46 +1000 |
---|---|---|
committer | Sipke Vriend <sipke.vriend@xilinx.com> | 2013-08-21 12:00:46 +1000 |
commit | ad5139ef91c7a1f4a32261238426f8661eb57871 (patch) | |
tree | 31d4f9a8ad6fdfcee61c0795ca4db5905564b0b7 | |
parent | b8b83bb1e60741e496b6daaa188a4b6252f06ecb (diff) | |
download | meta-xilinx-ad5139ef91c7a1f4a32261238426f8661eb57871.tar.gz |
recipes-kernel: Move DTB generation to meta-xilinx
oe-core changed the DTB generation to use the linux make system.
http://git.openembedded.org/openembedded-core/commit/?id=72980d5bb465f0640ed451d1ebb9c5d2a210ad0c
This resulted in the kernel make failing as the meta-xilinx contained
dts/dtsi files are not in the kernel tree.
To resolve, move the DTB creation using DTC into meta-xilinx layer.
This will correct the make error and build the DTS files in meta-xilinx.
Additionally the user can set KERNEL_DEVICETREE within local.conf to
build an in-kernel-tree DTS if they desire.
Signed-off-by: Sipke Vriend <sipke.vriend@xilinx.com>
-rw-r--r-- | recipes-kernel/linux/linux-dtb.inc | 64 | ||||
-rw-r--r-- | recipes-kernel/linux/linux-machine-common.inc | 2 | ||||
-rw-r--r-- | recipes-kernel/linux/linux-machine-config.inc | 6 |
3 files changed, 68 insertions, 4 deletions
diff --git a/recipes-kernel/linux/linux-dtb.inc b/recipes-kernel/linux/linux-dtb.inc new file mode 100644 index 00000000..afd47aef --- /dev/null +++ b/recipes-kernel/linux/linux-dtb.inc | |||
@@ -0,0 +1,64 @@ | |||
1 | # Support for device tree generation | ||
2 | OOT_KERNEL_DEVICETREE_FLAGS ?= "-R 8 -p 0x3000" | ||
3 | |||
4 | python __anonymous () { | ||
5 | oot_devicetree = d.getVar("OOT_KERNEL_DEVICETREE", True) or '' | ||
6 | if oot_devicetree: | ||
7 | depends = d.getVar("DEPENDS", True) | ||
8 | d.setVar("DEPENDS", "%s dtc-native" % depends) | ||
9 | } | ||
10 | |||
11 | do_install_append() { | ||
12 | if test -n "${OOT_KERNEL_DEVICETREE}"; then | ||
13 | for DTS_FILE in ${OOT_KERNEL_DEVICETREE}; do | ||
14 | if [ ! -f ${DTS_FILE} ]; then | ||
15 | echo "Warning: ${DTS_FILE} is not available!" | ||
16 | continue | ||
17 | fi | ||
18 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
19 | DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
20 | DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
21 | dtc -I dts -O dtb ${OOT_KERNEL_DEVICETREE_FLAGS} -o ${DTS_BASE_NAME} ${DTS_FILE} | ||
22 | install -m 0644 ${DTS_BASE_NAME} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb | ||
23 | done | ||
24 | fi | ||
25 | } | ||
26 | |||
27 | do_deploy_append() { | ||
28 | if test -n "${OOT_KERNEL_DEVICETREE}"; then | ||
29 | for DTS_FILE in ${OOT_KERNEL_DEVICETREE}; do | ||
30 | if [ ! -f ${DTS_FILE} ]; then | ||
31 | echo "Warning: ${DTS_FILE} is not available!" | ||
32 | continue | ||
33 | fi | ||
34 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
35 | DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
36 | DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
37 | install -d ${DEPLOYDIR} | ||
38 | install -m 0644 ${B}/${DTS_BASE_NAME} ${DEPLOYDIR}/${DTB_NAME}.dtb | ||
39 | cd ${DEPLOYDIR} | ||
40 | ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb | ||
41 | cd - | ||
42 | done | ||
43 | fi | ||
44 | } | ||
45 | |||
46 | pkg_postinst_kernel-devicetree () { | ||
47 | cd /${KERNEL_IMAGEDEST} | ||
48 | for DTS_FILE in ${OOT_KERNEL_DEVICETREE} | ||
49 | do | ||
50 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
51 | DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
52 | update-alternatives --install /${KERNEL_IMAGEDEST}/${DTS_BASE_NAME}.dtb ${DTS_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true | ||
53 | done | ||
54 | } | ||
55 | |||
56 | pkg_postrm_kernel-devicetree () { | ||
57 | cd /${KERNEL_IMAGEDEST} | ||
58 | for DTS_FILE in ${OOT_KERNEL_DEVICETREE} | ||
59 | do | ||
60 | DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` | ||
61 | DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"` | ||
62 | update-alternatives --remove ${DTS_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true | ||
63 | done | ||
64 | } | ||
diff --git a/recipes-kernel/linux/linux-machine-common.inc b/recipes-kernel/linux/linux-machine-common.inc index 2ef76ff9..8e31a0b9 100644 --- a/recipes-kernel/linux/linux-machine-common.inc +++ b/recipes-kernel/linux/linux-machine-common.inc | |||
@@ -1,4 +1,4 @@ | |||
1 | 1 | require linux-dtb.inc | |
2 | require linux-machine-config.inc | 2 | require linux-machine-config.inc |
3 | 3 | ||
4 | # MicroBlaze is a uImage target, but its not called 'uImage' | 4 | # MicroBlaze is a uImage target, but its not called 'uImage' |
diff --git a/recipes-kernel/linux/linux-machine-config.inc b/recipes-kernel/linux/linux-machine-config.inc index 6568e4b5..f9af2abe 100644 --- a/recipes-kernel/linux/linux-machine-config.inc +++ b/recipes-kernel/linux/linux-machine-config.inc | |||
@@ -8,7 +8,7 @@ | |||
8 | # | 8 | # |
9 | # This will expand out to: | 9 | # This will expand out to: |
10 | # SRC_URI_append += "file://zc702/zc702-zynq7.dts file://common/rtc.cfg" | 10 | # SRC_URI_append += "file://zc702/zc702-zynq7.dts file://common/rtc.cfg" |
11 | # KERNEL_DEVICETREE ?= "${WORKDIR}/devicetree/zc702-zynq7.dts" | 11 | # OOT_KERNEL_DEVICETREE ?= "${WORKDIR}/devicetree/zc702-zynq7.dts" |
12 | # | 12 | # |
13 | # This include also adds all the 'conf/machine/boards' for all layers (that are | 13 | # This include also adds all the 'conf/machine/boards' for all layers (that are |
14 | # available) to the FILESEXTRAPATHS. | 14 | # available) to the FILESEXTRAPATHS. |
@@ -37,9 +37,9 @@ def get_additional_bbpath_filespath(path, d): | |||
37 | return ":".join(board_extrapaths) + ":" | 37 | return ":".join(board_extrapaths) + ":" |
38 | return "" | 38 | return "" |
39 | 39 | ||
40 | # If KERNEL_DEVICETREE is not set, default to the device tree's provided by | 40 | # If OOT_KERNEL_DEVICETREE is not set, default to the device tree's provided by |
41 | # MACHINE_DEVICETREE | 41 | # MACHINE_DEVICETREE |
42 | KERNEL_DEVICETREE ?= "${@get_all_devicetrees(d)}" | 42 | OOT_KERNEL_DEVICETREE ?= "${@get_all_devicetrees(d)}" |
43 | 43 | ||
44 | # Appends the '<layer>/conf/machine/boards' path to FILESEXTRAPATHS for all | 44 | # Appends the '<layer>/conf/machine/boards' path to FILESEXTRAPATHS for all |
45 | # layers (using the ${BBPATH}) | 45 | # layers (using the ${BBPATH}) |