xref: /aosp_15_r20/system/libufdt/tests/apply_verify_multiple_overlay.sh (revision 13e8728f0cffde9369df671f7b293a048a99c7ed)
1*13e8728fSAndroid Build Coastguard Worker#!/bin/bash
2*13e8728fSAndroid Build Coastguard Worker
3*13e8728fSAndroid Build Coastguard Workerif [ -z "${ANDROID_HOST_OUT}" ]; then
4*13e8728fSAndroid Build Coastguard Worker  echo 'ANDROID_HOST_OUT not set. Please run lunch'
5*13e8728fSAndroid Build Coastguard Worker  exit 1
6*13e8728fSAndroid Build Coastguard Workerfi
7*13e8728fSAndroid Build Coastguard Worker
8*13e8728fSAndroid Build Coastguard Worker# Global variables
9*13e8728fSAndroid Build Coastguard WorkerBASE_DT_NAME="apply_fragment-base"
10*13e8728fSAndroid Build Coastguard WorkerOVERLAY_DT_1="multiple_overlay_1"
11*13e8728fSAndroid Build Coastguard WorkerOVERLAY_DT_2="multiple_overlay_2"
12*13e8728fSAndroid Build Coastguard WorkerOVERLAY_DT_3="multiple_overlay_3"
13*13e8728fSAndroid Build Coastguard WorkerOVERLAY_DT_4="multiple_overlay_4"
14*13e8728fSAndroid Build Coastguard WorkerANDROID_HOST_BIN_LOCATION=${ANDROID_HOST_OUT}/bin
15*13e8728fSAndroid Build Coastguard WorkerIN_DATA_DIR="testdata"
16*13e8728fSAndroid Build Coastguard Worker
17*13e8728fSAndroid Build Coastguard Workertmpdir=$(mktemp -d)
18*13e8728fSAndroid Build Coastguard Workertrap 'rm -rf ${tmpdir};' EXIT
19*13e8728fSAndroid Build Coastguard Worker
20*13e8728fSAndroid Build Coastguard Workerdtc -@ -qq -O dtb -o "${tmpdir}/${BASE_DT_NAME}.dtb" "${IN_DATA_DIR}/${BASE_DT_NAME}.dts"
21*13e8728fSAndroid Build Coastguard Workerdtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_1}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_1}.dts"
22*13e8728fSAndroid Build Coastguard Workerdtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_2}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_2}.dts"
23*13e8728fSAndroid Build Coastguard Workerdtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_3}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_3}.dts"
24*13e8728fSAndroid Build Coastguard Workerdtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_4}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_4}.dts"
25*13e8728fSAndroid Build Coastguard Worker
26*13e8728fSAndroid Build Coastguard Workercd $tmpdir
27*13e8728fSAndroid Build Coastguard Worker
28*13e8728fSAndroid Build Coastguard Workerapply_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_apply_overlay"
29*13e8728fSAndroid Build Coastguard Worker$apply_bin_path "${BASE_DT_NAME}.dtb" "${OVERLAY_DT_1}.dtb" final_dt.dtb > /dev/null
30*13e8728fSAndroid Build Coastguard Worker$apply_bin_path final_dt.dtb "${OVERLAY_DT_2}.dtb" final_dt.dtb > /dev/null
31*13e8728fSAndroid Build Coastguard Worker$apply_bin_path final_dt.dtb "${OVERLAY_DT_3}.dtb" final_dt.dtb > /dev/null
32*13e8728fSAndroid Build Coastguard Worker
33*13e8728fSAndroid Build Coastguard Worker#verify that the overlay was correctly applied
34*13e8728fSAndroid Build Coastguard Worker
35*13e8728fSAndroid Build Coastguard Workerverify_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_verify_overlay_host"
36*13e8728fSAndroid Build Coastguard Worker
37*13e8728fSAndroid Build Coastguard Workeroverlay_sets=(
38*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
39*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_4}.dtb"
40*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
41*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
42*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb"
43*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
44*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
45*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
46*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
47*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
48*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
49*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
50*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_1}.dtb"
51*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_2}.dtb"
52*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_3}.dtb"
53*13e8728fSAndroid Build Coastguard Worker                "${OVERLAY_DT_4}.dtb"
54*13e8728fSAndroid Build Coastguard Worker                ""
55*13e8728fSAndroid Build Coastguard Worker              )
56*13e8728fSAndroid Build Coastguard Worker
57*13e8728fSAndroid Build Coastguard Workerexpected_out=(0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1)
58*13e8728fSAndroid Build Coastguard Worker
59*13e8728fSAndroid Build Coastguard Workerfor((i=0;i<${#overlay_sets[@]};i++))
60*13e8728fSAndroid Build Coastguard Workerdo
61*13e8728fSAndroid Build Coastguard Worker  $verify_bin_path final_dt.dtb ${overlay_sets[$i]} >& /dev/null
62*13e8728fSAndroid Build Coastguard Worker  result=$?
63*13e8728fSAndroid Build Coastguard Worker  if [[ "$result" -ne "${expected_out[$i]}" ]]
64*13e8728fSAndroid Build Coastguard Worker  then
65*13e8728fSAndroid Build Coastguard Worker    echo "Incorrect overlay application/verification for"  ${overlay_sets[$i]}
66*13e8728fSAndroid Build Coastguard Worker    exit 1
67*13e8728fSAndroid Build Coastguard Worker  fi
68*13e8728fSAndroid Build Coastguard Workerdone
69*13e8728fSAndroid Build Coastguard Worker
70*13e8728fSAndroid Build Coastguard Workerecho "Overlays Verified Successfully"
71*13e8728fSAndroid Build Coastguard Workerexit 0
72