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 WorkerANDROID_HOST_BIN_LOCATION=${ANDROID_HOST_OUT}/bin 9*13e8728fSAndroid Build Coastguard Worker 10*13e8728fSAndroid Build Coastguard Workeradb root 11*13e8728fSAndroid Build Coastguard Worker 12*13e8728fSAndroid Build Coastguard Workertmpdir=$(mktemp -d) 13*13e8728fSAndroid Build Coastguard Workertrap 'rm -rf ${tmpdir};' EXIT 14*13e8728fSAndroid Build Coastguard Worker 15*13e8728fSAndroid Build Coastguard Workercd $tmpdir 16*13e8728fSAndroid Build Coastguard Worker 17*13e8728fSAndroid Build Coastguard Worker#find out the location to read the DTBO image from 18*13e8728fSAndroid Build Coastguard Workerboot_suffix=$(adb wait-for-device shell getprop ro.boot.slot_suffix) 19*13e8728fSAndroid Build Coastguard Workerdtbo_partition="/dev/block/by-name/dtbo" 20*13e8728fSAndroid Build Coastguard Workerdtbo_path=$dtbo_partition$boot_suffix 21*13e8728fSAndroid Build Coastguard Worker 22*13e8728fSAndroid Build Coastguard Worker#read the dtbo image and the final device tree from device 23*13e8728fSAndroid Build Coastguard Workeradb pull $dtbo_path dtbo.img > /dev/null 24*13e8728fSAndroid Build Coastguard Workeradb pull /sys/firmware/fdt final_dt > /dev/null 25*13e8728fSAndroid Build Coastguard Worker 26*13e8728fSAndroid Build Coastguard Worker#decompile the DTBO image 27*13e8728fSAndroid Build Coastguard Workermkdtimg_path="${ANDROID_HOST_BIN_LOCATION}/mkdtboimg" 28*13e8728fSAndroid Build Coastguard Worker$mkdtimg_path dump dtbo.img -b dumped_dtbo > /dev/null 29*13e8728fSAndroid Build Coastguard Worker 30*13e8728fSAndroid Build Coastguard Worker#Get the index of the overlay applied. Try bootconfig first, then cmdline. 31*13e8728fSAndroid Build Coastguard Workeroverlay_idx=$(adb shell cat /proc/bootconfig \ 32*13e8728fSAndroid Build Coastguard Worker | grep 'androidboot.dtbo_idx = .*$' | cut -d "=" -f 2 | sed 's/[ \\\"]//g') 33*13e8728fSAndroid Build Coastguard Workerif [[ ! $overlay_idx =~ [0-9]+ ]]; then 34*13e8728fSAndroid Build Coastguard Worker overlay_idx=$(adb shell cat /proc/cmdline | grep -o "androidboot.dtbo_idx=[^ ]*" | cut -d "=" -f 2) 35*13e8728fSAndroid Build Coastguard Workerfi 36*13e8728fSAndroid Build Coastguard Workerarg="" 37*13e8728fSAndroid Build Coastguard Workerfor idx in ${overlay_idx//,/ } 38*13e8728fSAndroid Build Coastguard Workerdo 39*13e8728fSAndroid Build Coastguard Worker arg="${arg}dumped_dtbo.${idx} " 40*13e8728fSAndroid Build Coastguard Workerdone 41*13e8728fSAndroid Build Coastguard Worker 42*13e8728fSAndroid Build Coastguard Worker#verify that the overlay was correctly applied 43*13e8728fSAndroid Build Coastguard Workerverify_bin_path="${ANDROID_HOST_BIN_LOCATION}/ufdt_verify_overlay_host" 44*13e8728fSAndroid Build Coastguard Worker$verify_bin_path final_dt $arg 45*13e8728fSAndroid Build Coastguard Workerresult=$? 46*13e8728fSAndroid Build Coastguard Worker 47*13e8728fSAndroid Build Coastguard Workerif [[ "$result" -eq "0" ]]; then 48*13e8728fSAndroid Build Coastguard Worker echo "Overlay was verified successfully" 49*13e8728fSAndroid Build Coastguard Workerelse 50*13e8728fSAndroid Build Coastguard Worker echo "Incorrect overlay application" 51*13e8728fSAndroid Build Coastguard Workerfi 52*13e8728fSAndroid Build Coastguard Worker 53*13e8728fSAndroid Build Coastguard Workerexit $result 54*13e8728fSAndroid Build Coastguard Worker 55