mkbootimg: add support for --dt

Change-Id: I19f149fac693420cf1f630b51293bbd3650a1b59
Signed-off-by: SamarV-121 <samarvispute121@pm.me>
Signed-off-by: Jis G Jacob <studiokeys@blissroms.org>
diff --git a/mkbootimg.py b/mkbootimg.py
index ec29581..dcf7265 100755
--- a/mkbootimg.py
+++ b/mkbootimg.py
@@ -218,8 +218,8 @@
     args.output.write(pack('I', args.base + args.tags_offset))
     # flash page size
     args.output.write(pack('I', args.pagesize))
-    # version of boot image header
-    args.output.write(pack('I', args.header_version))
+    # version of boot image header or dt size in bytes
+    args.output.write(pack('I', max(args.header_version, filesize(args.dt))))
     # os version and patch level
     args.output.write(pack('I', (args.os_version << 11) | args.os_patch_level))
     # asciiz product name
@@ -230,6 +230,7 @@
     update_sha(sha, args.kernel)
     update_sha(sha, args.ramdisk)
     update_sha(sha, args.second)
+    update_sha(sha, args.dt)
 
     if args.header_version > 0:
         update_sha(sha, args.recovery_dtbo)
@@ -540,6 +541,7 @@
                         help='print the image ID on standard output')
     parser.add_argument('--header_version', type=parse_int, default=0,
                         help='boot image header version')
+    parser.add_argument('--dt', help='path to the device tree image', type=FileType('rb'))
     parser.add_argument('-o', '--output', type=FileType('wb'),
                         help='output file name')
     parser.add_argument('--vendor_boot', type=FileType('wb'),
@@ -574,6 +576,9 @@
         assert len(args.cmdline) <= BOOT_ARGS_SIZE
         assert len(args.extra_cmdline) <= BOOT_EXTRA_ARGS_SIZE
 
+    if args.header_version > 0 and args.dt != None:
+        raise ValueError('header_version and dt cannot be set at the same time')
+
     return args
 
 
@@ -617,6 +622,7 @@
     write_padded_file(args.output, args.kernel, pagesize)
     write_padded_file(args.output, args.ramdisk, pagesize)
     write_padded_file(args.output, args.second, pagesize)
+    write_padded_file(args.output, args.dt, args.pagesize)
 
     if args.header_version > 0 and args.header_version < 3:
         write_padded_file(args.output, args.recovery_dtbo, pagesize)