summaryrefslogtreecommitdiffstats
path: root/poky/meta/classes/kernel-fitimage.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/classes/kernel-fitimage.bbclass')
-rw-r--r--poky/meta/classes/kernel-fitimage.bbclass90
1 files changed, 56 insertions, 34 deletions
diff --git a/poky/meta/classes/kernel-fitimage.bbclass b/poky/meta/classes/kernel-fitimage.bbclass
index 50a91e199..4c4fd99ff 100644
--- a/poky/meta/classes/kernel-fitimage.bbclass
+++ b/poky/meta/classes/kernel-fitimage.bbclass
@@ -1,4 +1,4 @@
-inherit kernel-uboot uboot-sign
+inherit kernel-uboot kernel-artifact-names uboot-sign
python __anonymous () {
kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
@@ -135,6 +135,15 @@ fitimage_emit_section_dtb() {
dtb_csum="sha1"
+ dtb_loadline=""
+ dtb_ext=${DTB##*.}
+ if [ "${dtb_ext}" = "dtbo" ]; then
+ if [ -n "${UBOOT_DTBO_LOADADDRESS}" ]; then
+ dtb_loadline="load = <${UBOOT_DTBO_LOADADDRESS}>;"
+ fi
+ elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
+ dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
+ fi
cat << EOF >> ${1}
fdt@${2} {
description = "Flattened Device Tree blob";
@@ -142,6 +151,7 @@ fitimage_emit_section_dtb() {
type = "flat_dt";
arch = "${UBOOT_ARCH}";
compression = "none";
+ ${dtb_loadline}
hash@1 {
algo = "${dtb_csum}";
};
@@ -248,25 +258,34 @@ fitimage_emit_section_config() {
fi
# Test if we have any DTBs at all
- conf_desc="Linux kernel"
- kernel_line="kernel = \"kernel@${2}\";"
+ sep=""
+ conf_desc=""
+ kernel_line=""
fdt_line=""
ramdisk_line=""
setup_line=""
default_line=""
+ if [ -n "${2}" ]; then
+ conf_desc="Linux kernel"
+ sep=", "
+ kernel_line="kernel = \"kernel@${2}\";"
+ fi
+
if [ -n "${3}" ]; then
- conf_desc="${conf_desc}, FDT blob"
+ conf_desc="${conf_desc}${sep}FDT blob"
+ sep=", "
fdt_line="fdt = \"fdt@${3}\";"
fi
if [ -n "${4}" ]; then
- conf_desc="${conf_desc}, ramdisk"
+ conf_desc="${conf_desc}${sep}ramdisk"
+ sep=", "
ramdisk_line="ramdisk = \"ramdisk@${4}\";"
fi
if [ -n "${5}" ]; then
- conf_desc="${conf_desc}, setup"
+ conf_desc="${conf_desc}${sep}setup"
setup_line="setup = \"setup@${5}\";"
fi
@@ -289,18 +308,26 @@ EOF
if [ ! -z "${conf_sign_keyname}" ] ; then
- sign_line="sign-images = \"kernel\""
+ sign_line="sign-images = "
+ sep=""
+
+ if [ -n "${2}" ]; then
+ sign_line="${sign_line}${sep}\"kernel\""
+ sep=", "
+ fi
if [ -n "${3}" ]; then
- sign_line="${sign_line}, \"fdt\""
+ sign_line="${sign_line}${sep}\"fdt\""
+ sep=", "
fi
if [ -n "${4}" ]; then
- sign_line="${sign_line}, \"ramdisk\""
+ sign_line="${sign_line}${sep}\"ramdisk\""
+ sep=", "
fi
if [ -n "${5}" ]; then
- sign_line="${sign_line}, \"setup\""
+ sign_line="${sign_line}${sep}\"setup\""
fi
sign_line="${sign_line};"
@@ -377,7 +404,7 @@ fitimage_assemble() {
#
if [ "x${ramdiskcount}" = "x1" ] ; then
# Find and use the first initramfs image archive type we find
- for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.gz cpio; do
+ for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.gz ext2.gz cpio; do
initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.${img}"
echo "Using $initramfs_path"
if [ -e "${initramfs_path}" ]; then
@@ -403,7 +430,12 @@ fitimage_assemble() {
if [ -n "${DTBS}" ]; then
i=1
for DTB in ${DTBS}; do
- fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ dtb_ext=${DTB##*.}
+ if [ "${dtb_ext}" = "dtbo" ]; then
+ fitimage_emit_section_config ${1} "" "${DTB}" "" "" "`expr ${i} = ${dtbcount}`"
+ else
+ fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ fi
i=`expr ${i} + 1`
done
fi
@@ -427,7 +459,7 @@ fitimage_assemble() {
uboot-mkimage \
${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-F -k "${UBOOT_SIGN_KEYDIR}" \
- -K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}" \
+ ${@'-K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}"' if len('${UBOOT_DTB_BINARY}') else ''} \
-r arch/${ARCH}/boot/${2}
fi
}
@@ -456,32 +488,22 @@ kernel_do_deploy[vardepsexclude] = "DATETIME"
kernel_do_deploy_append() {
# Update deploy directory
if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
- cd ${B}
echo "Copying fit-image.its source file..."
- its_base_name="fitImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}"
- its_symlink_name=fitImage-its-${MACHINE}
- install -m 0644 fit-image.its ${DEPLOYDIR}/${its_base_name}.its
- linux_bin_base_name="fitImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"
- linux_bin_symlink_name=fitImage-linux.bin-${MACHINE}
- install -m 0644 linux.bin ${DEPLOYDIR}/${linux_bin_base_name}.bin
+ install -m 0644 ${B}/fit-image.its ${DEPLOYDIR}/fitImage-its-${KERNEL_FIT_NAME}.its
+ ln -snf fitImage-its-${KERNEL_FIT_NAME}.its ${DEPLOYDIR}/fitImage-its-${KERNEL_FIT_LINK_NAME}
+
+ echo "Copying linux.bin file..."
+ install -m 0644 ${B}/linux.bin ${DEPLOYDIR}/fitImage-linux.bin-${KERNEL_FIT_NAME}.bin
+ ln -snf fitImage-linux.bin-${KERNEL_FIT_NAME}.bin ${DEPLOYDIR}/fitImage-linux.bin-${KERNEL_FIT_LINK_NAME}
if [ -n "${INITRAMFS_IMAGE}" ]; then
echo "Copying fit-image-${INITRAMFS_IMAGE}.its source file..."
- its_initramfs_base_name="fitImage-its-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
- its_initramfs_symlink_name=fitImage-its-${INITRAMFS_IMAGE_NAME}
- install -m 0644 fit-image-${INITRAMFS_IMAGE}.its ${DEPLOYDIR}/${its_initramfs_base_name}.its
- fit_initramfs_base_name="fitImage-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
- fit_initramfs_symlink_name=fitImage-${INITRAMFS_IMAGE_NAME}
- install -m 0644 arch/${ARCH}/boot/fitImage-${INITRAMFS_IMAGE} ${DEPLOYDIR}/${fit_initramfs_base_name}.bin
- fi
-
- cd ${DEPLOYDIR}
- ln -sf ${its_base_name}.its ${its_symlink_name}.its
- ln -sf ${linux_bin_base_name}.bin ${linux_bin_symlink_name}.bin
+ install -m 0644 ${B}/fit-image-${INITRAMFS_IMAGE}.its ${DEPLOYDIR}/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its
+ ln -snf fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its ${DEPLOYDIR}/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}
- if [ -n "${INITRAMFS_IMAGE}" ]; then
- ln -sf ${its_initramfs_base_name}.its ${its_initramfs_symlink_name}.its
- ln -sf ${fit_initramfs_base_name}.bin ${fit_initramfs_symlink_name}.bin
+ echo "Copying fitImage-${INITRAMFS_IMAGE} file..."
+ install -m 0644 ${B}/arch/${ARCH}/boot/fitImage-${INITRAMFS_IMAGE} ${DEPLOYDIR}/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.bin
+ ln -snf fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.bin ${DEPLOYDIR}/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}
fi
fi
}
OpenPOWER on IntegriCloud