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 <osm0sis@outlook.com>

Signed-off-by: engstk <eng.stk@sapo.pt>
This commit is contained in:
engstkandosm0sis authored and Chris Renshaw committed 2021-12-04 18:11:38 -04:00
1 parent 146f9b27c5
commit 2b7f6e8889
1 file changed
+40
+40
View File
@@ -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;