xref: /netbsd-src/distrib/utils/embedded/conf/arm64.conf (revision e6c7e151de239c49d2e38720a061ed9d1fa99309)
1# $NetBSD: arm64.conf,v 1.9 2020/02/23 10:56:03 jmcneill Exp $
2# ARM64 customization script used by mkimage
3#
4board=arm64
5console=fb
6resize=true
7
8. ${DIR}/conf/evbarm.conf
9
10kernel_GENERIC64="GENERIC64"
11
12make_label() {
13	make_label_evbarm
14}
15
16make_fstab() {
17	make_fstab_evbarm
18}
19
20customize() {
21	customize_evbarm
22	cat >> "${mnt}/etc/rc.conf" << EOF
23mdnsd=YES
24devpubd=YES
25wscons=\$(dev_exists wsdisplay0)
26ec2_init=\$(dev_exists ena0)
27EOF
28}
29
30populate_common() {
31	# Add EC2 init script
32	cp ${DIR}/files/ec2_init ${mnt}/etc/rc.d/ec2_init
33	echo "./etc/rc.d/ec2_init type=file uname=root gname=wheel mode=0555" \
34	    >> "$tmp/selected_sets"
35
36	# Rename kernel to netbsd.img
37	mv "${mnt}/boot/netbsd-${kernel_GENERIC64}.img" "${mnt}/boot/netbsd.img"
38
39	# Install EFI bootloader
40	mkdir -p "${mnt}/boot/EFI/BOOT"
41	cp "${release}/usr/mdec/bootaa64.efi" "${mnt}/boot/EFI/BOOT/bootaa64.efi"
42
43	# Install kernel to root of the FFS partition
44	${GZIP_CMD} -dc ${kernel}/netbsd-${kernel_GENERIC64}.gz > "${mnt}/netbsd"
45	echo "./netbsd type=file uname=root gname=wheel mode=0755" \
46	    >> "$tmp/selected_sets"
47}
48
49populate_allwinner() {
50	# U-Boot expects 64-bit DTB files to live in an allwinner/ subdirectory
51	mkdir -p "${mnt}/boot/dtb/allwinner"
52	mv "${mnt}"/boot/sun50i-*.dtb "${mnt}/boot/dtb/allwinner/"
53}
54
55populate_amlogic() {
56	# U-Boot expects 64-bit DTB files to live in an amlogic/ subdirectory
57	mkdir -p "${mnt}/boot/dtb/amlogic"
58	mv "${mnt}"/boot/meson-*.dtb "${mnt}/boot/dtb/amlogic/"
59}
60
61populate_rockchip() {
62	# U-Boot expects 64-bit DTB files to live in a rockchip/ subdirectory
63	mkdir -p "${mnt}/boot/dtb/rockchip"
64	mv "${mnt}"/boot/rk3328-*.dtb "${mnt}/boot/dtb/rockchip/"
65	mv "${mnt}"/boot/rk3399-*.dtb "${mnt}/boot/dtb/rockchip/"
66}
67
68populate_rpi() {
69	firmwaredir="${src}/external/broadcom/rpi-firmware/dist"
70	firmwarefiles="LICENCE.broadcom bootcode.bin fixup4cd.dat fixup4.dat fixup_cd.dat fixup.dat start4cd.elf start4.elf start_cd.elf start.elf"
71
72	cat > "${mnt}/boot/cmdline.txt" << EOF
73root=ld0a console=${console}
74EOF
75
76	cat > "${mnt}/boot/cmdline-pi4.txt" << EOF
77root=ld1a console=${console}
78EOF
79
80	cat > "${mnt}/boot/config.txt" << EOF
81#
82upstream_kernel=1
83#
84arm_64bit=1
85kernel=netbsd.img
86kernel_address=0x200000
87enable_uart=1
88force_turbo=0
89#
90[pi4]
91cmdline=cmdline-pi4.txt
92#
93[all]
94EOF
95
96	echo "${bar} installing firmware files ${bar}"
97	(cd "${mnt}/boot" &&
98		for f in ${firmwarefiles}; do
99			echo " $f"
100			cp "${firmwaredir}/${f}" .
101		done
102	)
103}
104
105populate_nvidia() {
106	# Move tegra dtb files to /boot/dtb
107	mkdir -p "${mnt}/boot/dtb"
108	mv "${mnt}"/boot/tegra*.dtb "${mnt}/boot/dtb/"
109}
110
111populate() {
112	echo "${bar} looking for kernel in ${kernel} ${bar}"
113	kernels=""
114	k="$kernel_GENERIC64"
115
116	# .img kernel
117	f="${kernel}/netbsd-${k}.img.gz"
118	test -f "${f}" && kernels="${kernels} ${f}"
119
120	# .dtb files
121	test -d "${KERNOBJDIR}/${k}" && \
122	    dtbs="$(${MAKE} -C ${KERNOBJDIR}/${k} -v DTB)" || \
123	    dtbs=
124	for dtb in $dtbs; do
125		f="${kernel}/${dtb}.gz"
126		test -f "${f}" && kernels="${kernels} ${f}"
127	done
128
129	# install files to /boot partition
130	for k in ${kernels}; do
131		tgt="$(basename ${k} | sed 's/\.gz$//')"
132		echo "${bar} installing ${k} to /boot/${tgt} ${bar}"
133		case "${k}" in
134		*.gz)
135			${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}"
136			;;
137		*)
138			cp "${k}" "${mnt}/boot/${tgt}"
139			;;
140		esac ||
141			fail "Copy of ${k} to ${mnt}/boot/${tgt} failed"
142	done
143
144	# SoC specific configuration
145	populate_allwinner
146	populate_amlogic
147	populate_nvidia
148	populate_rockchip
149
150	# Board specific configuration
151	populate_rpi
152
153	# common configuration
154	populate_common
155}
156