1#!/bin/bash
2
3if [ -z "${ANDROID_HOST_OUT}" ]; then
4  echo 'ANDROID_HOST_OUT not set. Please run lunch'
5  exit 1
6fi
7
8# Global variables
9BASE_DT_NAME="apply_fragment-base"
10OVERLAY_DT_1="multiple_overlay_1"
11OVERLAY_DT_2="multiple_overlay_2"
12OVERLAY_DT_3="multiple_overlay_3"
13OVERLAY_DT_4="multiple_overlay_4"
14ANDROID_HOST_BIN_LOCATION=${ANDROID_HOST_OUT}/bin
15IN_DATA_DIR="testdata"
16
17tmpdir=$(mktemp -d)
18trap 'rm -rf ${tmpdir};' EXIT
19
20dtc -@ -qq -O dtb -o "${tmpdir}/${BASE_DT_NAME}.dtb" "${IN_DATA_DIR}/${BASE_DT_NAME}.dts"
21dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_1}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_1}.dts"
22dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_2}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_2}.dts"
23dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_3}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_3}.dts"
24dtc -@ -qq -O dtb -o "${tmpdir}/${OVERLAY_DT_4}.dtb" "${IN_DATA_DIR}/${OVERLAY_DT_4}.dts"
25
26cd $tmpdir
27
28apply_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_apply_overlay"
29$apply_bin_path "${BASE_DT_NAME}.dtb" "${OVERLAY_DT_1}.dtb" final_dt.dtb > /dev/null
30$apply_bin_path final_dt.dtb "${OVERLAY_DT_2}.dtb" final_dt.dtb > /dev/null
31$apply_bin_path final_dt.dtb "${OVERLAY_DT_3}.dtb" final_dt.dtb > /dev/null
32
33#verify that the overlay was correctly applied
34
35verify_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_verify_overlay_host"
36
37overlay_sets=(
38                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
39                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_4}.dtb"
40                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
41                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
42                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb"
43                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
44                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
45                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_2}.dtb"
46                "${OVERLAY_DT_1}.dtb ${OVERLAY_DT_3}.dtb"
47                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_3}.dtb"
48                "${OVERLAY_DT_3}.dtb ${OVERLAY_DT_1}.dtb"
49                "${OVERLAY_DT_2}.dtb ${OVERLAY_DT_1}.dtb"
50                "${OVERLAY_DT_1}.dtb"
51                "${OVERLAY_DT_2}.dtb"
52                "${OVERLAY_DT_3}.dtb"
53                "${OVERLAY_DT_4}.dtb"
54                ""
55              )
56
57expected_out=(0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1)
58
59for((i=0;i<${#overlay_sets[@]};i++))
60do
61  $verify_bin_path final_dt.dtb ${overlay_sets[$i]} >& /dev/null
62  result=$?
63  if [[ "$result" -ne "${expected_out[$i]}" ]]
64  then
65    echo "Incorrect overlay application/verification for"  ${overlay_sets[$i]}
66    exit 1
67  fi
68done
69
70echo "Overlays Verified Successfully"
71exit 0
72