Files
kernel/scripts/mkmultidtb.py
Andy Yan 8e5c859386 scripts: add mkmultidtb.py to package multiple dtbs to resource.img
People sometimes want to package multiple dtbs to resource.img for
a baseboard which may has several hardware variants. And on the
hardware design side, may use adc value or gpio level to indicate
the hardware id, so we encode the hardware id information at the
suffix of the dtb file name.

For example:

DTBS['PX30-EVB'] = OrderedDict([('px30-evb-ddr3-v10', '#_saradc_ch0=1024'),
                                ('px30-evb-ddr3-lvds-v10', '#_saradc_ch0=512')])

DTBS['RK3308-EVB'] = OrderedDict([('rk3308-evb-dmic-i2s-v10', '#_saradc_ch3=288'),
                                  ('rk3308-evb-dmic-pdm-v10', '#_saradc_ch3=1024'),
                                  ('rk3308-evb-amic-v10', '#_saradc_ch3=407')])

DTBS['RK3308-SWEEPER'] = OrderedDict([('rk3308-sweeper-v10', '#gpio0a2=0'),
				      ('rk3308-sweeper-v11', '#gpio0a2=1')])

When you run the script like:
$ scripts/mkmultidtb.py RK3308-EVB

The script will package all the dtbs you list in DTBS['PX30-EVB']
to resource.img with a new name that suffix with hardware id
information:

rk3308-evb-dmic-pdm-v10#_saradc_ch3=1024.dtb
rk3308-evb-dmic-i2s-v10#_saradc_ch3=288.dtb
rk3308-evb-amic-v10#_saradc_ch3=407.dtb

And the script will also make another copy of the fist dtb
file which you list in the OrderedDict named as rk-kernel.dtb

Check the content of resource.img by command: hd resource.img | less

00000000  52 53 43 45 00 00 00 00  01 01 01 00 06 00 00 00  |RSCE............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

00000200  45 4e 54 52 72 6b 2d 6b  65 72 6e 65 6c 2e 64 74  |ENTRrk-kernel.dt|
00000210  62 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |b...............|
00000220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000300  00 00 00 00 07 00 00 00  d4 a3 00 00 00 00 00 00  |................|
00000310  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  45 4e 54 52 72 6b 33 33  30 38 2d 65 76 62 2d 64  |ENTRrk3308-evb-d|
00000410  6d 69 63 2d 70 64 6d 2d  76 31 30 23 5f 73 61 72  |mic-pdm-v10#_sar|
00000420  61 64 63 5f 63 68 33 3d  31 30 32 34 2e 64 74 62  |adc_ch3=1024.dtb|
00000430  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000500  00 00 00 00 59 00 00 00  d4 a3 00 00 00 00 00 00  |....Y...........|
00000510  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000600  45 4e 54 52 72 6b 33 33  30 38 2d 65 76 62 2d 64  |ENTRrk3308-evb-d|
00000610  6d 69 63 2d 69 32 73 2d  76 31 30 23 5f 73 61 72  |mic-i2s-v10#_sar|
00000620  61 64 63 5f 63 68 33 3d  32 38 38 2e 64 74 62 00  |adc_ch3=288.dtb.|
00000630  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000700  00 00 00 00 ab 00 00 00  e0 a3 00 00 00 00 00 00  |................|
00000710  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000800  45 4e 54 52 72 6b 33 33  30 38 2d 65 76 62 2d 61  |ENTRrk3308-evb-a|
00000810  6d 69 63 2d 76 31 30 23  5f 73 61 72 61 64 63 5f  |mic-v10#_saradc_|
00000820  63 68 33 3d 34 30 37 2e  64 74 62 00 00 00 00 00  |ch3=407.dtb.....|

Note: the scripts is run on python2.6

Change-Id: I89d96d629511024c32267be46c1c72748bf04e49
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
2018-05-08 17:28:51 +08:00

56 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
# Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
#
"""
Multiple dtb package tool
Usage: scripts/mkmultidtb.py board
The board is what you defined in DTBS dictionary like DTBS['board'],
Such as: PX30-EVB, RK3308-EVB
"""
import os
import sys
import shutil
from collections import OrderedDict
DTBS = {}
DTBS['PX30-EVB'] = OrderedDict([('px30-evb-ddr3-v10', '#_saradc_ch0=1024'),
('px30-evb-ddr3-lvds-v10', '#_saradc_ch0=512')])
DTBS['RK3308-EVB'] = OrderedDict([('rk3308-evb-dmic-i2s-v10', '#_saradc_ch3=288'),
('rk3308-evb-dmic-pdm-v10', '#_saradc_ch3=1024'),
('rk3308-evb-amic-v10', '#_saradc_ch3=407')])
def main():
if (len(sys.argv) < 2) or (sys.argv[1] == '-h'):
print __doc__
sys.exit(2)
BOARD = sys.argv[1]
TARGET_DTBS = DTBS[BOARD]
target_dtb_list = ''
default_dtb = True
for dtb, value in TARGET_DTBS.items():
if default_dtb:
ori_file = 'arch/arm64/boot/dts/rockchip/' + dtb + '.dtb'
shutil.copyfile(ori_file, "rk-kernel.dtb")
target_dtb_list += 'rk-kernel.dtb '
default_dtb = False
new_file = dtb + value + '.dtb'
ori_file = 'arch/arm64/boot/dts/rockchip/' + dtb + '.dtb'
shutil.copyfile(ori_file, new_file)
target_dtb_list += ' ' + new_file
print target_dtb_list
os.system('scripts/resource_tool logo.bmp logo_kernel.bmp ' + target_dtb_list)
os.system('rm ' + target_dtb_list)
if __name__ == '__main__':
main()