| SUMMARY = "Nuvoton NPCM8XX bootloader" |
| DESCRIPTION = "This is front end recipe for NPCM8XX IGPS. It replace \ |
| original IGPS recipe which need implement many redundant function in \ |
| recipe or class. After we add some hook in IGPS, now we can generate \ |
| full bootbloader by IGPS script. We only need collect all built images \ |
| from deploy folder, put them to IGPS input folder, and run script." |
| HOMEPAGE = "https://github.com/Nuvoton-Israel/igps-npcm8xx" |
| LICENSE = "GPL-2.0-only" |
| LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263" |
| |
| IGPS_BRANCH ?= "main" |
| SRC_URI = " \ |
| git://github.com/Nuvoton-Israel/igps-npcm8xx;branch=${IGPS_BRANCH};protocol=https \ |
| " |
| SRCREV = "d3b7edaca6748b95e7fdcdf7b2fd1b06ce438f96" |
| |
| S = "${WORKDIR}/git" |
| |
| DEPENDS = "npcm7xx-bingo-native openssl-native" |
| inherit obmc-phosphor-utils |
| inherit python3native deploy |
| FILE_FMT = "file://{}" |
| |
| # Sign keys, replace them for production |
| IGPS_KEYS = "" |
| # Configuration files, clean them if no need |
| IGPS_CSVS = "" |
| IGPS_SETTINGS = "settings.json" |
| IGPS_CONFS = "${IGPS_KEYS} ${IGPS_CSVS} ${IGPS_SETTINGS}" |
| SRC_URI += "${@compose_list(d, 'FILE_FMT', 'IGPS_CONFS')}" |
| |
| IGPS_SCRIPT_BASE = "${S}/py_scripts/ImageGeneration" |
| BB_BIN = "arbel_a35_bootblock" |
| BB_BIN .= "${@'_no_tip.bin' if d.getVar("TIP_IMAGE") != 'True' else '.bin'}" |
| |
| do_configure[dirs] = "${WORKDIR}" |
| do_configure() { |
| KEY_FOLDER=${IGPS_SCRIPT_BASE}/keys/openssl |
| CSV_FOLDER=${IGPS_SCRIPT_BASE}/inputs/registers |
| # keys |
| install -d ${KEY_FOLDER} |
| if [ -n "${IGPS_KEYS}" ];then |
| cp -v ${IGPS_KEYS} ${KEY_FOLDER} |
| fi |
| |
| # csv files |
| install -d ${CSV_FOLDER} |
| if [ -n "${IGPS_CSVS}" ];then |
| cp -v ${IGPS_CSVS} ${CSV_FOLDER} |
| fi |
| |
| # change customized settings for XML and key setting |
| if [ -n "${IGPS_SETTINGS}" ];then |
| cd ${S} |
| python3 ${IGPS_SCRIPT_BASE}/config_replacer.py ${WORKDIR}/${IGPS_SETTINGS} |
| fi |
| } |
| |
| do_compile[depends] += " \ |
| npcm8xx-tip-fw:do_deploy npcm8xx-bootblock:do_deploy \ |
| trusted-firmware-a:do_deploy optee-os:do_deploy \ |
| u-boot-nuvoton:do_deploy" |
| do_compile() { |
| # copy Openbmc built images |
| cd ${DEPLOY_DIR_IMAGE} |
| cp -v ${BB_BIN} bl31.bin tee.bin u-boot.bin ${IGPS_SCRIPT_BASE}/inputs |
| |
| cd ${IGPS_SCRIPT_BASE} |
| install -d output_binaries/tmp |
| install -d inputs/key_input |
| if [ "${TIP_IMAGE}" = "True" ] || [ "${SA_TIP_IMAGE}" = "True" ];then |
| # Do not sign combo0 image again |
| python3 ${S}/py_scripts/GenerateAll.py openssl ${DEPLOY_DIR_IMAGE} |
| else |
| # for No TIP, we can run IGPS script directly |
| python3 ${S}/py_scripts/GenerateAll.py openssl |
| fi |
| } |
| |
| do_deploy() { |
| OUT=${IGPS_SCRIPT_BASE}/output_binaries |
| BOOTLOADER=u-boot.bin.merged |
| install -d ${DEPLOYDIR} |
| if [ "${SA_TIP_IMAGE}" = "True" ];then |
| install -m 644 ${OUT}/Secure/image_no_tip_SA.bin ${DEPLOYDIR}/${BOOTLOADER} |
| elif [ "${TIP_IMAGE}" = "True" ];then |
| install -m 644 ${OUT}/Secure/Kmt_TipFwL0_Skmt_TipFwL1_BootBlock_BL31_Tee_uboot.bin ${DEPLOYDIR}/${BOOTLOADER} |
| else |
| install -m 644 ${OUT}/Basic/image_no_tip.bin ${DEPLOYDIR}/${BOOTLOADER} |
| fi |
| } |
| addtask deploy before do_build after do_compile |
| PACKAGE_ARCH = "${MACHINE_ARCH}" |