summaryrefslogtreecommitdiff
path: root/installer/hikey960/mkdtimg
diff options
context:
space:
mode:
Diffstat (limited to 'installer/hikey960/mkdtimg')
-rwxr-xr-xinstaller/hikey960/mkdtimg159
1 files changed, 0 insertions, 159 deletions
diff --git a/installer/hikey960/mkdtimg b/installer/hikey960/mkdtimg
deleted file mode 100755
index 65722043..00000000
--- a/installer/hikey960/mkdtimg
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2017, The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-from __future__ import print_function
-try:
- from os import fstat, stat, remove
- from sys import exit
- from argparse import ArgumentParser, FileType
- from ctypes import sizeof, Structure, c_char, c_int
- from struct import pack, calcsize
- import zlib
-except Exception as e:
- print("some module is needed:" + str(e))
- exit(-1)
-
-dt_head_info_fmt = '4sII'
-dt_entry_fmt = 'Q4I2Q'
-dtimg_version = 1
-dtb_count = 1
-
-def write32(output, value):
- output.write(chr(value & 255)) ; value=value // 256
- output.write(chr(value & 255)) ; value=value // 256
- output.write(chr(value & 255)) ; value=value // 256
- output.write(chr(value & 255))
-
-def compress(filename, input, output):
- output.write('\037\213\010')
- output.write(chr(0))
-
- statval = stat(filename)
- write32(output, 0)
- output.write('\002')
- output.write('\003')
-
- crcval = zlib.crc32("")
- compobj = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS,
- zlib.DEF_MEM_LEVEL, 0)
- while True:
- data = input.read(1024)
- if data == "":
- break
- crcval = zlib.crc32(data, crcval)
- output.write(compobj.compress(data))
- output.write(compobj.flush())
- write32(output, crcval)
- write32(output, statval.st_size)
-
-def dtb_compress(dtb_file):
- try:
- outputname = dtb_file + '.gz'
- input = open(dtb_file, 'rb')
- output = open(outputname, 'wb')
- compress(dtb_file, input, output)
- input.close()
- output.close()
- except Exception as e:
- print('dtb_compress error:' + str(e))
- exit(-1)
- return outputname
-
-class dt_head_info(Structure):
- _fields_ = [('magic', c_char * 4),
- ('version', c_int),
- ('dt_count', c_int)]
-
-class dt_entry_t(Structure):
- _fields_ = [('dtb_size', c_int),
- ('dtb_offset', c_int)]
-
-def align_page_size(offset, pagesize):
- return (pagesize - (offset % pagesize))
-
-def write_head_info(head_info, args):
- args.output.write(pack(dt_head_info_fmt,
- head_info.magic,
- head_info.version,
- head_info.dt_count))
-
-def write_dtb_entry_t(dt_entry, args):
- args.output.write(pack(dt_entry_fmt,
- 0, # reserved
- dt_entry.dtb_size,
- 0, # reserved
- dt_entry.dtb_offset,
- 0, # reserved
- 0, # reserved
- 0)) # reserved
-
-def write_padding(args, padding):
- for i in range(0, padding):
- args.output.write('\x00')
-
-def write_dtb(args):
- dtb_file = args.dtb
- out_dtb = dtb_file
- if args.compress == True:
- out_dtb = dtb_compress(dtb_file)
- try:
- dtb_offset = calcsize(dt_head_info_fmt) + \
- calcsize(dt_entry_fmt) + \
- 4
- padding = align_page_size(dtb_offset, args.pagesize)
- dtb_size = stat(out_dtb).st_size
- dtb_size_padding = align_page_size(dtb_size, args.pagesize)
- dt_entry = dt_entry_t(dtb_size + dtb_size_padding,
- dtb_offset + padding)
- write_dtb_entry_t(dt_entry, args)
- args.output.write(pack('I', 0)) # SUCCESS code number
- write_padding(args, padding)
- with open(out_dtb, 'rb') as dtb_fd:
- args.output.write(dtb_fd.read(dtb_size))
- write_padding(args, dtb_size_padding)
- except Exception as e:
- print('write dtb error:' + str(e))
- exit(-1)
-
-def clean_gz_file(args):
- try:
- if args.compress != True:
- return
- remove(args.dtb + '.gz')
- except Exception as e:
- print('clean gz file error:' + str(e))
- exit(-1)
-
-def parse_cmdline():
- parser = ArgumentParser()
- parser.add_argument('-c', '--compress', help='compress dtb or not',
- action='store_true')
- parser.add_argument('-d', '--dtb', help='path to the dtb', type=str,
- required=True)
- parser.add_argument('-s', '--pagesize', help='align page size',
- type=int, choices=[2**i for i in range(11,15)],
- default=2048)
- parser.add_argument('-o', '--output', help='output file name',
- type=FileType('wb'), required=True)
- return parser.parse_args()
-
-def main():
- args = parse_cmdline()
- dtimg_head_info = dt_head_info('HSDT', dtimg_version, dtb_count)
- write_head_info(dtimg_head_info, args)
- write_dtb(args)
- clean_gz_file(args)
-
-if __name__ == '__main__':
- main()