blob: e297501ce20cdb24ec856642e82b252ba0d8c5c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# SPDX-License-Identifier: GPL-2.0+
make_FIT_image() {
local kernel_compression
local kernel_its=$output_dir/arch/$arch/boot/kernel_fdt.its
case $image_kernel in
*.gz)
kernel_compression=gzip
;;
*)
kernel_compression=none
;;
esac
cat <<EOF > $kernel_its
/dts-v1/;
/ {
description = "Kernel + FDT image for $board board";
#address-cells = <1>;
images {
kernel {
description = "Linux kernel";
data = /incbin/("$output_dir/arch/$arch/boot/$image_kernel");
type = "kernel";
arch = "$arch";
os = "linux";
compression = "$kernel_compression";
load = <$loadaddr>;
entry = <$loadaddr>;
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
EOF
local dtb
for dtb in $dtbs ; do
local src=${dtb/:*/}
local dst=${dtb/*:/}
dst=${dst/*\//}
cat <<EOF >> $kernel_its
fdt-$dst {
description = "Flattened Device Tree blob $dst";
data = /incbin/("$output_dir/arch/$arch/boot/dts/$src");
type = "flat_dt";
arch = "$arch";
compression = "none";
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
EOF
done
local config=$(echo $dtbs | sed 's/.*[:/]//')
cat <<EOF >> $kernel_its
};
configurations {
default = "conf-$config";
EOF
for dtb in $dtbs ; do
local dst=${dtb/*:/}
dst=${dst/*\//}
cat <<EOF >> $kernel_its
conf-$dst {
description = "Boot Linux kernel with $dst blob";
kernel = "kernel";
fdt = "fdt-$dst";
};
EOF
done
cat <<EOF >> $kernel_its
};
};
EOF
PATH="$output_dir/scripts/dtc:$PATH" mkimage -f $kernel_its ${kernel_its/its/itb}
}
_image_file=kernel_fdt.itb
|