summaryrefslogtreecommitdiff
path: root/meta-nuvoton/recipes-bsp/images/npcm8xx-bootloader_04.02.03.bb
blob: 60fe402b480883b7106d9d849643f9a1ab173dfd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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 = "c36a02060f9f1cdb1382629bd1f54e43676bdebb"

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}"