Skip to content

Commit 3539caa

Browse files
committed
raspberry-pi: fix DTB name mapping for U-Boot compatibility
- Gate DTB copies on rpiVersion instead of host architecture, skipping the workaround entirely for Pi 4+ where vendor and upstream names match - Fix bcm2835-rpi-zero.dtb: was incorrectly sourced from bcm2708-rpi-b-plus (overwriting an earlier copy from bcm2708-rpi-zero-w); now uses the correct bcm2708-rpi-zero.dtb - Remove unused bcm2711-rpi-4-b.dtb -> bcm2838-rpi-4-b.dtb copy: U-Boot already uses bcm2711-rpi-4-b.dtb which the vendor kernel provides, and nothing references bcm2838-* See: https://github.com/u-boot/u-boot/blob/master/board/raspberrypi/rpi/rpi.c
1 parent 2096f3f commit 3539caa

1 file changed

Lines changed: 33 additions & 14 deletions

File tree

raspberry-pi/common/kernel.nix

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,36 @@ lib.overrideDerivation
9797
''
9898
+
9999
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-
'';
113-
})
100+
The vendor kernel uses different DTB names (bcm2708/bcm2709/bcm2710) than what
101+
# U-Boot expects (bcm2835/bcm2836/bcm2837). Starting with Pi 4, names match.
102+
# See: https://github.com/u-boot/u-boot/blob/master/board/raspberrypi/rpi/rpi.c
103+
postFixup = lib.optionalString (rpiVersion < 4) (
104+
''
105+
dtbDir=${if stdenv.hostPlatform.isAarch64 then "$out/dtbs/broadcom" else "$out/dtbs"}
106+
rm $dtbDir/bcm283*.dtb
107+
copyDTB() {
108+
cp -v "$dtbDir/$1" "$dtbDir/$2"
109+
}
110+
''
111+
+ lib.optionalString (rpiVersion == 1) ''
112+
copyDTB bcm2708-rpi-zero.dtb bcm2835-rpi-zero.dtb
113+
copyDTB bcm2708-rpi-zero-w.dtb bcm2835-rpi-zero-w.dtb
114+
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb
115+
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b.dtb
116+
copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-b-rev2.dtb
117+
copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-a-plus.dtb
118+
copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb
119+
copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb
120+
''
121+
+ lib.optionalString (rpiVersion == 2) ''
122+
copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb
123+
''
124+
+ lib.optionalString (rpiVersion == 3) ''
125+
copyDTB bcm2710-rpi-zero-2.dtb bcm2837-rpi-zero-2.dtb
126+
copyDTB bcm2710-rpi-zero-2-w.dtb bcm2837-rpi-zero-2-w.dtb
127+
copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
128+
copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-a-plus.dtb
129+
copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-b-plus.dtb
130+
copyDTB bcm2710-rpi-cm3.dtb bcm2837-rpi-cm3.dtb
131+
''
132+
)

0 commit comments

Comments
 (0)