From 2b7f6e8889e736940c766709f13cf68f242be7ef Mon Sep 17 00:00:00 2001 From: engstk Date: Fri, 3 Dec 2021 15:09:55 +0000 Subject: [PATCH] AK3: add full vendor_dlkm.img flash support - Use similar dtbo.img logic - Support new hdr v4 images without repacking - Process before boot to safe bail - No resize available, checks output size and bounces if larger - Handle block state correctly to fix boot check warning Co-authored-by: osm0sis Signed-off-by: engstk --- tools/ak3-core.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tools/ak3-core.sh b/tools/ak3-core.sh index 5a944ec..74ed9bd 100755 --- a/tools/ak3-core.sh +++ b/tools/ak3-core.sh @@ -477,8 +477,48 @@ flash_vendor_boot() { fi; } +# flash_vendor_dlkm (flash vendor_dlkm only) +flash_vendor_dlkm() { + local i vendor_dlkm vendor_dlkmblock; + + cd $home; + for i in vendor_dlkm vendor_dlkm.img; do + if [ -f $i ]; then + vendor_dlkm=$i; + break; + fi; + done; + + if [ "$vendor_dlkm" -a ! -f vendor_dlkm_flashed ]; then + vendor_dlkmblock=/dev/block/mapper/vendor_dlkm$slot; + if [ ! -e "$vendor_dlkmblock" ]; then + abort "vendor_dlkm partition could not be found. Aborting..."; + fi; + if [ "$(wc -c < ${vendor_dlkm})" -gt "$(wc -c < ${vendor_dlkmblock})" ]; then + abort "New vendor_dlkm image larger than vendor_dlkm partition. Aborting..."; + fi; + blockdev --setrw $vendor_dlkmblock 2>/dev/null; + ui_print " " "$vendor_dlkmblock"; + if [ -f "$bin/flash_erase" -a -f "$bin/nandwrite" ]; then + $bin/flash_erase $vendor_dlkmblock 0 0; + $bin/nandwrite -p $vendor_dlkmblock $vendor_dlkm; + elif [ "$customdd" ]; then + dd if=/dev/zero of=$vendor_dlkmblock 2>/dev/null; + dd if=$vendor_dlkm of=$vendor_dlkmblock; + else + cat $vendor_dlkm /dev/zero > $vendor_dlkmblock 2>/dev/null || true; + fi; + if [ $? != 0 ]; then + abort "Flashing vendor_dlkm failed. Aborting..."; + fi; + blockdev --setro $vendor_dlkmblock 2>/dev/null; + touch vendor_dlkm_flashed; + fi; +} + ### write_boot (repack ramdisk then build, sign and write image and dtbo) write_boot() { + flash_vendor_dlkm; flash_vendor_boot; repack_ramdisk; flash_boot;