aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--conf/machine/dragonboard-410c.conf8
-rw-r--r--recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb22
-rw-r--r--recipes-kernel/linux/linux-qcom-bootimg.inc35
-rw-r--r--scripts/lib/wic/canned-wks/dragonboard410c-sd.wks18
4 files changed, 75 insertions, 8 deletions
diff --git a/conf/machine/dragonboard-410c.conf b/conf/machine/dragonboard-410c.conf
index 65393c8..97b2d72 100644
--- a/conf/machine/dragonboard-410c.conf
+++ b/conf/machine/dragonboard-410c.conf
@@ -21,3 +21,11 @@ MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " \
"
QCOM_BOOTIMG_ROOTFS ?= "mmcblk0p10"
+
+# Define rootfs partiton (kernel argument)
+SD_QCOM_BOOTIMG_ROOTFS ?= "mmcblk1p7"
+
+# Assemble SD card
+IMAGE_FSTYPES_append = " wic"
+WKS_FILE = "dragonboard410c-sd.wks"
+WKS_FILE_DEPENDS = "firmware-qcom-dragonboard410c-bootloader-sdcard"
diff --git a/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb b/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb
new file mode 100644
index 0000000..537dae3
--- /dev/null
+++ b/recipes-bsp/firmware/firmware-qcom-dragonboard410c-bootloader-sdcard_17.09.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Prebuilt bootlader images for Dragonboard 410c"
+
+inherit deploy
+
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4d087ee0965cb059f1b2f9429e166f64"
+
+SRC_URI = "https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/17.09/dragonboard410c_bootloader_sd_linux-88.zip"
+SRC_URI[md5sum] = "e15da2a623442d66587aea506599fb69"
+SRC_URI[sha256sum] = "9885f915ebd4986432340cf1d03b8fd2bfdd97ad6a4a7466200fddbe41cdcf5c"
+
+COMPATIBLE_MACHINE = "(dragonboard-410c)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+S = "${WORKDIR}"
+
+do_deploy() {
+ install -D -p -m644 ${S}/*.mbn ${DEPLOYDIR}
+}
+
+addtask deploy before do_build after do_compile
+
diff --git a/recipes-kernel/linux/linux-qcom-bootimg.inc b/recipes-kernel/linux/linux-qcom-bootimg.inc
index ab1065b..e0969ef 100644
--- a/recipes-kernel/linux/linux-qcom-bootimg.inc
+++ b/recipes-kernel/linux/linux-qcom-bootimg.inc
@@ -1,12 +1,28 @@
DEPENDS += "skales-native"
QCOM_BOOTIMG_ROOTFS ?= "undefined"
+SD_QCOM_BOOTIMG_ROOTFS ?= "undefined"
# set output file names
DT_IMAGE_BASE_NAME = "dt-${KERNEL_IMAGE_BASE_NAME}"
DT_IMAGE_SYMLINK_NAME = "dt-${KERNEL_IMAGE_SYMLINK_NAME}"
BOOT_IMAGE_BASE_NAME = "boot-${KERNEL_IMAGE_BASE_NAME}"
BOOT_IMAGE_SYMLINK_NAME = "boot-${KERNEL_IMAGE_SYMLINK_NAME}"
+SD_BOOT_IMAGE_BASE_NAME = "boot-sd${KERNEL_IMAGE_BASE_NAME}"
+SD_BOOT_IMAGE_SYMLINK_NAME = "boot-sd-${KERNEL_IMAGE_SYMLINK_NAME}"
+
+# param ${1} partition where rootfs is located
+# param ${2} output boot image file name
+priv_make_image() {
+ ${STAGING_BINDIR_NATIVE}/skales/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
+ --ramdisk ${B}/initrd.img \
+ --output ${DEPLOYDIR}/${2}.img \
+ $mkbootimg_dtarg \
+ --pagesize ${QCOM_BOOTIMG_PAGE_SIZE} \
+ --base ${QCOM_BOOTIMG_KERNEL_BASE} \
+ --cmdline \
+ "root=/dev/${1} rw rootwait console=${ttydev},${baudrate}n8"
+}
do_deploy_append() {
@@ -26,14 +42,17 @@ do_deploy_append() {
# during boot
echo "This is not an initrd" > ${B}/initrd.img
- ${STAGING_BINDIR_NATIVE}/skales/mkbootimg --kernel ${B}/arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
- --ramdisk ${B}/initrd.img \
- --output ${DEPLOYDIR}/${BOOT_IMAGE_BASE_NAME}.img \
- $mkbootimg_dtarg \
- --pagesize ${QCOM_BOOTIMG_PAGE_SIZE} \
- --base ${QCOM_BOOTIMG_KERNEL_BASE} \
- --cmdline \
- "root=/dev/${QCOM_BOOTIMG_ROOTFS} rw rootwait console=${ttydev},${baudrate}n8"
+ # don't build bootimg if rootfs partition is not defined
+ if [ "${QCOM_BOOTIMG_ROOTFS}" == "undefined"]; then
+ bbfatal "Rootfs partition must be defined"
+ fi
+ priv_make_image ${QCOM_BOOTIMG_ROOTFS} ${BOOT_IMAGE_BASE_NAME}
ln -sf ${BOOT_IMAGE_BASE_NAME}.img ${DEPLOYDIR}/${BOOT_IMAGE_SYMLINK_NAME}.img
+
+ # build sd boot image only for machines supporting it.
+ if [ "${SD_QCOM_BOOTIMG_ROOTFS}" != "undefined" ]; then
+ priv_make_image ${SD_QCOM_BOOTIMG_ROOTFS} ${SD_BOOT_IMAGE_BASE_NAME}
+ ln -sf ${SD_BOOT_IMAGE_BASE_NAME}.img ${DEPLOYDIR}/${SD_BOOT_IMAGE_SYMLINK_NAME}.img
+ fi
}
diff --git a/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks b/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks
new file mode 100644
index 0000000..8014655
--- /dev/null
+++ b/scripts/lib/wic/canned-wks/dragonboard410c-sd.wks
@@ -0,0 +1,18 @@
+# short-description: Create an SD card image with LittleKernel
+# long-description: Creates partitioned SD card image for Dragonboard 410c
+# that user can directly dd into card and run distro from externa memory
+
+# partitions sec and devinfo are not created for now, because WIC can't create
+# empty partition yet and they are not mandatory for Little Kernel
+
+part --ondisk mmcblk1 --size 512K --part-name sbl1 --part-type DEA0BA2C-CBDD-4805-B4F9-F428251C3E98 --source rawcopy --sourceparams "file=sbl1.mbn" --align 65536
+part --ondisk mmcblk1 --size 512K --part-name rpm --part-type 098DF793-D712-413D-9D4E-89D711772228 --source rawcopy --sourceparams "file=rpm.mbn"
+part --ondisk mmcblk1 --size 1024K --part-name tz --part-type A053AA7F-40B8-4B1C-BA08-2F68AC71A4F4 --source rawcopy --sourceparams "file=tz.mbn"
+part --ondisk mmcblk1 --size 512K --part-name hyp --part-type E1A6A689-0C8D-4CC6-B4E8-55A4320FBD8A --source rawcopy --sourceparams "file=hyp.mbn"
+# part --ondisk mmcblk1 --size 16K --part-name sec --part-type 303E6AC3-AF15-4C54-9E9B-D9A8FBECF401 --source empty --align 65536
+part --ondisk mmcblk1 --size 1024K --part-name aboot --part-type 400FFDCD-22E0-47E7-9A23-F16ED9382388 --source rawcopy --sourceparams "file=emmc_appsboot.mbn"
+part --ondisk mmcblk1 --size 64M --part-name boot --part-type 20117F86-E985-4357-B9EE-374BC1D8487D --source rawcopy --sourceparams "file=boot-sd-dragonboard-410c.img"
+# part --ondisk mmcblk1 --size 1024K --part-name devinfo --part-type 1B81E7E6-F50D-419B-A739-2AEEF8DA3335 --source empty
+part / --ondisk mmcblk1 --fstype=ext4 --source rootfs --part-name rootfs
+
+bootloader --ptable gpt