From f00273a3a300d4f67bd4fa65cfc3da7b3e23819a Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 23 Aug 2018 11:01:08 +0800 Subject: rockchip: make_fit_atf: fix warning unit_address_vs_reg Patch fix warning: /builddir/BUILD/u-boot-2018.05-rc2/"arch/arm/mach-rockchip/make_fit_atf.py" \ arch/arm/dts/rk3399-firefly.dtb > u-boot.its ./tools/mkimage -f u-boot.its -E u-boot.itb >/dev/null && cat /dev/null u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /images/uboot@1 has a unit name, but no reg property u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /images/atf@1 has a unit name, but no reg property u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /images/atf@2 has a unit name, but no reg property u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /images/atf@3 has a unit name, but no reg property u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /images/fdt@1 has a unit name, but no reg property u-boot.itb.tmp: Warning (unit_address_vs_reg): Node /configurations/config@1 has a unit name, but no reg property make[1]: Leaving directory '/builddir/BUILD/u-boot-2018.05-rc2/builds/firefly-rk3399' Reported-by: Peter Robinson Signed-off-by: Kever Yang Tested-by: Peter Robinson Reviewed-by: Philipp Tomsich Acked-by: Philipp Tomsich --- arch/arm/mach-rockchip/make_fit_atf.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py index 6b3d9201c9..62b9caee34 100755 --- a/arch/arm/mach-rockchip/make_fit_atf.py +++ b/arch/arm/mach-rockchip/make_fit_atf.py @@ -34,7 +34,7 @@ DT_HEADER="""// SPDX-License-Identifier: GPL-2.0+ OR X11 #address-cells = <1>; images { - uboot@1 { + uboot { description = "U-Boot (64-bit)"; data = /incbin/("u-boot-nodtb.bin"); type = "standalone"; @@ -58,7 +58,7 @@ def append_atf_node(file, atf_index, phy_addr): Append ATF DT node to input FIT dts file. """ data = 'bl31_0x%08x.bin' % phy_addr - print >> file, '\t\tatf@%d {' % atf_index + print >> file, '\t\tatf_%d {' % atf_index print >> file, '\t\t\tdescription = \"ARM Trusted Firmware\";' print >> file, '\t\t\tdata = /incbin/("%s");' % data print >> file, '\t\t\ttype = "firmware";' @@ -78,7 +78,7 @@ def append_fdt_node(file, dtbs): cnt = 1 for dtb in dtbs: dtname = os.path.basename(dtb) - print >> file, '\t\tfdt@%d {' % cnt + print >> file, '\t\tfdt_%d {' % cnt print >> file, '\t\t\tdescription = "%s";' % dtname print >> file, '\t\t\tdata = /incbin/("%s");' % dtb print >> file, '\t\t\ttype = "flat_dt";' @@ -88,17 +88,17 @@ def append_fdt_node(file, dtbs): cnt = cnt + 1 def append_conf_section(file, cnt, dtname, atf_cnt): - print >> file, '\t\tconfig@%d {' % cnt + print >> file, '\t\tconfig_%d {' % cnt print >> file, '\t\t\tdescription = "%s";' % dtname - print >> file, '\t\t\tfirmware = "atf@1";' - print >> file, '\t\t\tloadables = "uboot@1",', + print >> file, '\t\t\tfirmware = "atf_1";' + print >> file, '\t\t\tloadables = "uboot",', for i in range(1, atf_cnt): - print >> file, '"atf@%d"' % (i+1), + print >> file, '"atf_%d"' % (i+1), if i != (atf_cnt - 1): print >> file, ',', else: print >> file, ';' - print >> file, '\t\t\tfdt = "fdt@1";' + print >> file, '\t\t\tfdt = "fdt_1";' print >> file, '\t\t};' print >> file, '' @@ -108,7 +108,7 @@ def append_conf_node(file, dtbs, atf_cnt): """ cnt = 1 print >> file, '\tconfigurations {' - print >> file, '\t\tdefault = "config@1";' + print >> file, '\t\tdefault = "config_1";' for dtb in dtbs: dtname = os.path.basename(dtb) append_conf_section(file, cnt, dtname, atf_cnt) -- cgit From aabb51da59ef6d6841e41212b4d6cc883ca71858 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 23 Aug 2018 17:18:00 +0800 Subject: rockchip: add fit source file for pack itb with op-tee We package U-Boot and OP-TEE into one itb file for SPL, so that we can support OP-TEE in SPL. Signed-off-by: Kever Yang Acked-by: Philipp Tomsich Reviewed-by: Philipp Tomsich --- arch/arm/mach-rockchip/fit_spl_optee.its | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 arch/arm/mach-rockchip/fit_spl_optee.its (limited to 'arch') diff --git a/arch/arm/mach-rockchip/fit_spl_optee.its b/arch/arm/mach-rockchip/fit_spl_optee.its new file mode 100644 index 0000000000..9be4b3c8d2 --- /dev/null +++ b/arch/arm/mach-rockchip/fit_spl_optee.its @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2017 Rockchip Electronic Co.,Ltd + * + * Simple U-boot fit source file containing U-Boot, dtb and optee + */ + +/dts-v1/; + +/ { + description = "Simple image with OP-TEE support"; + #address-cells = <1>; + + images { + uboot@1 { + description = "U-Boot"; + data = /incbin/("../../../u-boot-nodtb.bin"); + type = "standalone"; + os = "U-Boot"; + arch = "arm"; + compression = "none"; + load = <0x61000000>; + }; + optee@1 { + description = "OP-TEE"; + data = /incbin/("../../../tee.bin"); + type = "firmware"; + arch = "arm"; + os = "tee"; + compression = "none"; + load = <0x68400000>; + entry = <0x68400000>; + }; + fdt@1 { + description = "dtb"; + data = /incbin/("../../../u-boot.dtb"); + type = "flat_dt"; + compression = "none"; + }; + }; + + configurations { + default = "conf@1"; + conf@1 { + description = "Rockchip armv7 with OP-TEE"; + firmware = "optee@1"; + loadables = "uboot@1"; + fdt = "fdt@1"; + }; + }; +}; -- cgit From e4011e8daa2b9832b4d4a396d6e14024da586277 Mon Sep 17 00:00:00 2001 From: Mian Yousaf Kaukab Date: Fri, 8 Jun 2018 10:47:09 +0200 Subject: rockchip: make_fit_atf: use elf entry point make_fit_atf.py uses physical address of first segment as the entry point to bl31. It is incorrect and causes following abort when bl31_entry() is called: U-Boot SPL board initTrying to boot from MMC1 "Synchronous Abort" handler, esr 0x02000000 elr: 0000000000000000 lr : 00000000ff8c7e8c x 0: 00000000ff8e0000 x 1: 0000000000000000 x 2: 0000000000000000 x 3: 00000000ff8e0180 x 4: 0000000000000000 x 5: 0000000000000000 x 6: 0000000000000030 x 7: 00000000ff8e0188 x 8: 00000000000001e0 x 9: 0000000000000000 x10: 000000000007fcdc x11: 00000000002881b8 x12: 00000000000001a2 x13: 0000000000000198 x14: 000000000007fdcc x15: 00000000002881b8 x16: 00000000003c0724 x17: 00000000003c0718 x18: 000000000007fe80 x19: 00000000ff8e0000 x20: 0000000000200000 x21: 00000000ff8e0000 x22: 0000000000000000 x23: 000000000007fe30 x24: 00000000ff8d1c3c x25: 00000000ff8d5000 x26: 00000000deadbeef x27: 00000000000004a0 x28: 000000000000009c x29: 000000000007fd90 Fix it by using the entry point from the elf header. Signed-off-by: Mian Yousaf Kaukab Reviewed-by: Philipp Tomsich --- arch/arm/mach-rockchip/make_fit_atf.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py index 62b9caee34..571369ba4c 100755 --- a/arch/arm/mach-rockchip/make_fit_atf.py +++ b/arch/arm/mach-rockchip/make_fit_atf.py @@ -53,7 +53,7 @@ DT_END=""" }; """ -def append_atf_node(file, atf_index, phy_addr): +def append_atf_node(file, atf_index, phy_addr, elf_entry): """ Append ATF DT node to input FIT dts file. """ @@ -67,7 +67,7 @@ def append_atf_node(file, atf_index, phy_addr): print >> file, '\t\t\tcompression = "none";' print >> file, '\t\t\tload = <0x%08x>;' % phy_addr if atf_index == 1: - print >> file, '\t\t\tentry = <0x%08x>;' % phy_addr + print >> file, '\t\t\tentry = <0x%08x>;' % elf_entry print >> file, '\t\t};' print >> file, '' @@ -141,12 +141,13 @@ def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_fi with open(bl31_file_name) as bl31_file: bl31 = ELFFile(bl31_file) + elf_entry = bl31.header['e_entry'] for i in range(bl31.num_segments()): seg = bl31.get_segment(i) if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)): paddr = seg.__getitem__(ELF_SEG_P_PADDR) p= seg.__getitem__(ELF_SEG_P_PADDR) - append_atf_node(fit_file, i+1, paddr) + append_atf_node(fit_file, i+1, paddr, elf_entry) atf_cnt = i+1 append_fdt_node(fit_file, dtbs_file_name) print >> fit_file, '%s' % DT_IMAGES_NODE_END -- cgit From 7009eae89053ee84d1b522097cb99264357c39ff Mon Sep 17 00:00:00 2001 From: Mian Yousaf Kaukab Date: Fri, 8 Jun 2018 10:47:10 +0200 Subject: rockchip: make_fit_atf: make python3 compatible Make script python3 compatible. No functional changes intended. Signed-off-by: Mian Yousaf Kaukab Reviewed-by: Philipp Tomsich --- arch/arm/mach-rockchip/make_fit_atf.py | 89 +++++++++++++++++----------------- 1 file changed, 45 insertions(+), 44 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py index 571369ba4c..d1faff1957 100755 --- a/arch/arm/mach-rockchip/make_fit_atf.py +++ b/arch/arm/mach-rockchip/make_fit_atf.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python """ A script to generate FIT image source for rockchip boards with ARM Trusted Firmware @@ -43,6 +43,7 @@ DT_HEADER="""// SPDX-License-Identifier: GPL-2.0+ OR X11 compression = "none"; load = <0x%08x>; }; + """ DT_IMAGES_NODE_END=""" @@ -58,18 +59,18 @@ def append_atf_node(file, atf_index, phy_addr, elf_entry): Append ATF DT node to input FIT dts file. """ data = 'bl31_0x%08x.bin' % phy_addr - print >> file, '\t\tatf_%d {' % atf_index - print >> file, '\t\t\tdescription = \"ARM Trusted Firmware\";' - print >> file, '\t\t\tdata = /incbin/("%s");' % data - print >> file, '\t\t\ttype = "firmware";' - print >> file, '\t\t\tarch = "arm64";' - print >> file, '\t\t\tos = "arm-trusted-firmware";' - print >> file, '\t\t\tcompression = "none";' - print >> file, '\t\t\tload = <0x%08x>;' % phy_addr + file.write('\t\tatf_%d {\n' % atf_index) + file.write('\t\t\tdescription = \"ARM Trusted Firmware\";\n') + file.write('\t\t\tdata = /incbin/("%s");\n' % data) + file.write('\t\t\ttype = "firmware";\n') + file.write('\t\t\tarch = "arm64";\n') + file.write('\t\t\tos = "arm-trusted-firmware";\n') + file.write('\t\t\tcompression = "none";\n') + file.write('\t\t\tload = <0x%08x>;\n' % phy_addr) if atf_index == 1: - print >> file, '\t\t\tentry = <0x%08x>;' % elf_entry - print >> file, '\t\t};' - print >> file, '' + file.write('\t\t\tentry = <0x%08x>;\n' % elf_entry) + file.write('\t\t};\n') + file.write('\n') def append_fdt_node(file, dtbs): """ @@ -78,43 +79,43 @@ def append_fdt_node(file, dtbs): cnt = 1 for dtb in dtbs: dtname = os.path.basename(dtb) - print >> file, '\t\tfdt_%d {' % cnt - print >> file, '\t\t\tdescription = "%s";' % dtname - print >> file, '\t\t\tdata = /incbin/("%s");' % dtb - print >> file, '\t\t\ttype = "flat_dt";' - print >> file, '\t\t\tcompression = "none";' - print >> file, '\t\t};' - print >> file, '' + file.write('\t\tfdt_%d {\n' % cnt) + file.write('\t\t\tdescription = "%s";\n' % dtname) + file.write('\t\t\tdata = /incbin/("%s");\n' % dtb) + file.write('\t\t\ttype = "flat_dt";\n') + file.write('\t\t\tcompression = "none";\n') + file.write('\t\t};\n') + file.write('\n') cnt = cnt + 1 def append_conf_section(file, cnt, dtname, atf_cnt): - print >> file, '\t\tconfig_%d {' % cnt - print >> file, '\t\t\tdescription = "%s";' % dtname - print >> file, '\t\t\tfirmware = "atf_1";' - print >> file, '\t\t\tloadables = "uboot",', + file.write('\t\tconfig_%d {\n' % cnt) + file.write('\t\t\tdescription = "%s";\n' % dtname) + file.write('\t\t\tfirmware = "atf_1";\n') + file.write('\t\t\tloadables = "uboot",') for i in range(1, atf_cnt): - print >> file, '"atf_%d"' % (i+1), + file.write('"atf_%d"' % (i+1)) if i != (atf_cnt - 1): - print >> file, ',', + file.write(',') else: - print >> file, ';' - print >> file, '\t\t\tfdt = "fdt_1";' - print >> file, '\t\t};' - print >> file, '' + file.write(';\n') + file.write('\t\t\tfdt = "fdt_1";\n') + file.write('\t\t};\n') + file.write('\n') def append_conf_node(file, dtbs, atf_cnt): """ Append configeration nodes. """ cnt = 1 - print >> file, '\tconfigurations {' - print >> file, '\t\tdefault = "config_1";' + file.write('\tconfigurations {\n') + file.write('\t\tdefault = "config_1";\n') for dtb in dtbs: dtname = os.path.basename(dtb) append_conf_section(file, cnt, dtname, atf_cnt) cnt = cnt + 1 - print >> file, '\t};' - print >> file, '' + file.write('\t};\n') + file.write('\n') def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_file_name): """ @@ -127,7 +128,7 @@ def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_fi num_load_seg = 0 p_paddr = 0xFFFFFFFF - with open(uboot_file_name) as uboot_file: + with open(uboot_file_name, 'rb') as uboot_file: uboot = ELFFile(uboot_file) for i in range(uboot.num_segments()): seg = uboot.get_segment(i) @@ -137,9 +138,9 @@ def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_fi assert (p_paddr != 0xFFFFFFFF and num_load_seg == 1) - print >> fit_file, DT_HEADER % p_paddr + fit_file.write(DT_HEADER % p_paddr) - with open(bl31_file_name) as bl31_file: + with open(bl31_file_name, 'rb') as bl31_file: bl31 = ELFFile(bl31_file) elf_entry = bl31.header['e_entry'] for i in range(bl31.num_segments()): @@ -150,15 +151,15 @@ def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_fi append_atf_node(fit_file, i+1, paddr, elf_entry) atf_cnt = i+1 append_fdt_node(fit_file, dtbs_file_name) - print >> fit_file, '%s' % DT_IMAGES_NODE_END + fit_file.write('%s\n' % DT_IMAGES_NODE_END) append_conf_node(fit_file, dtbs_file_name, atf_cnt) - print >> fit_file, '%s' % DT_END + fit_file.write('%s\n' % DT_END) if fit_file_name != sys.stdout: fit_file.close() def generate_atf_binary(bl31_file_name): - with open(bl31_file_name) as bl31_file: + with open(bl31_file_name, 'rb') as bl31_file: bl31 = ELFFile(bl31_file) num = bl31.num_segments() @@ -179,17 +180,17 @@ def get_bl31_segments_info(bl31_file_name): bl31 = ELFFile(bl31_file) num = bl31.num_segments() - print 'Number of Segments : %d' % bl31.num_segments() + print('Number of Segments : %d' % bl31.num_segments()) for i in range(num): - print 'Segment %d' % i + print('Segment %d' % i) seg = bl31.get_segment(i) ptype = seg[ELF_SEG_P_TYPE] poffset = seg[ELF_SEG_P_OFFSET] pmemsz = seg[ELF_SEG_P_MEMSZ] pfilesz = seg[ELF_SEG_P_FILESZ] - print 'type: %s\nfilesz: %08x\nmemsz: %08x\noffset: %08x' % (ptype, pfilesz, pmemsz, poffset) + print('type: %s\nfilesz: %08x\nmemsz: %08x\noffset: %08x' % (ptype, pfilesz, pmemsz, poffset)) paddr = seg[ELF_SEG_P_PADDR] - print 'paddr: %08x' % paddr + print('paddr: %08x' % paddr) def main(): uboot_elf="./u-boot" @@ -205,7 +206,7 @@ def main(): elif opt == "-b": bl31_elf=val elif opt == "-h": - print __doc__ + print(__doc__) sys.exit(2) dtbs = args -- cgit