@@ -72,42 +72,37 @@ lib.overrideDerivation
7272 sed -i $buildRoot/include/config/auto.conf -e 's/^CONFIG_LOCALVERSION=.*/CONFIG_LOCALVERSION=""/'
7373 '' ;
7474
75- # Make copies of the DTBs named after the upstream names so that U-Boot finds them.
76- # This is ugly as heck, but I don't know a better solution so far.
77- postFixup = ''
78- dtbDir=${ if stdenv . hostPlatform . isAarch64 then "$out/dtbs/broadcom" else "$out/dtbs" }
79- rm $dtbDir/bcm283*.dtb
80- copyDTB() {
81- cp -v "$dtbDir/$1" "$dtbDir/$2"
82- }
83- ''
84- + lib . optionalString ( lib . elem stdenv . hostPlatform . system [ "armv6l-linux" ] ) ''
85- copyDTB bcm2708-rpi-zero-w.dtb bcm2835-rpi-zero.dtb
86- copyDTB bcm2708-rpi-zero-w.dtb bcm2835-rpi-zero-w.dtb
87- copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb
88- copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b.dtb
89- copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b-rev2.dtb
90- copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-a-plus.dtb
91- copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb
92- copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-zero.dtb
93- copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb
94- ''
95- + lib . optionalString ( lib . elem stdenv . hostPlatform . system [ "armv7l-linux" ] ) ''
96- copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb
97- ''
98- +
99- lib . optionalString
100- ( lib . elem stdenv . hostPlatform . system [
101- "armv7l-linux"
102- "aarch64-linux"
103- ] )
104- ''
105- copyDTB bcm2710-rpi-zero-2.dtb bcm2837-rpi-zero-2.dtb
106- copyDTB bcm2710-rpi-zero-2-w.dtb bcm2837-rpi-zero-2-w.dtb
107- copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
108- copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-a-plus.dtb
109- copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-b-plus.dtb
110- copyDTB bcm2710-rpi-cm3.dtb bcm2837-rpi-cm3.dtb
111- copyDTB bcm2711-rpi-4-b.dtb bcm2838-rpi-4-b.dtb
112- '' ;
75+ # The vendor kernel uses different DTB names (bcm2708/bcm2709/bcm2710) than what
76+ # U-Boot expects (bcm2835/bcm2836/bcm2837). Starting with Pi 4, names match.
77+ # See: https://github.com/u-boot/u-boot/blob/master/board/raspberrypi/rpi/rpi.c
78+ postFixup = lib . optionalString ( rpiVersion < 4 ) (
79+ ''
80+ dtbDir=${ if stdenv . hostPlatform . isAarch64 then "$out/dtbs/broadcom" else "$out/dtbs" }
81+ rm $dtbDir/bcm283*.dtb
82+ copyDTB() {
83+ cp -v "$dtbDir/$1" "$dtbDir/$2"
84+ }
85+ ''
86+ + lib . optionalString ( rpiVersion == 1 ) ''
87+ copyDTB bcm2708-rpi-zero.dtb bcm2835-rpi-zero.dtb
88+ copyDTB bcm2708-rpi-zero-w.dtb bcm2835-rpi-zero-w.dtb
89+ copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb
90+ copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b.dtb
91+ copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b-rev2.dtb
92+ copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-a-plus.dtb
93+ copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb
94+ copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb
95+ ''
96+ + lib . optionalString ( rpiVersion == 2 ) ''
97+ copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb
98+ ''
99+ + lib . optionalString ( rpiVersion == 3 ) ''
100+ copyDTB bcm2710-rpi-zero-2.dtb bcm2837-rpi-zero-2.dtb
101+ copyDTB bcm2710-rpi-zero-2-w.dtb bcm2837-rpi-zero-2-w.dtb
102+ copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
103+ copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-a-plus.dtb
104+ copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-b-plus.dtb
105+ copyDTB bcm2710-rpi-cm3.dtb bcm2837-rpi-cm3.dtb
106+ ''
107+ ) ;
113108 } )
0 commit comments