@@ -376,37 +376,42 @@ function get_rpi_video() {
376
376
export PKG_CONFIG_PATH=" $pkgconfig "
377
377
}
378
378
379
+ function get_rpi_model() {
380
+ # calculated based on the information from https://github.com/AndrewFromMelbourne/raspberry_pi_revision
381
+ # see also https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-revision-codes
382
+ local rev=" 0x$( sed -n ' /^Revision/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo) "
383
+ # if bit 23 is not set, we are on a rpi1 (bit 23 means the revision is a bitfield)
384
+ if [[ $(( ($rev >> 23 ) & 1 )) -eq 0 ]]; then
385
+ __platform=" rpi1"
386
+ else
387
+ # if bit 23 is set, get the cpu from bits 12-15
388
+ local cpu=$(( ($rev >> 12 ) & 15 ))
389
+ case $cpu in
390
+ 0)
391
+ __platform=" rpi1"
392
+ ;;
393
+ 1)
394
+ __platform=" rpi2"
395
+ ;;
396
+ 2)
397
+ __platform=" rpi3"
398
+ ;;
399
+ 3)
400
+ __platform=" rpi4"
401
+ ;;
402
+ 4)
403
+ __platform=" rpi5"
404
+ ;;
405
+ esac
406
+ fi
407
+ }
379
408
function get_platform() {
380
409
local architecture=" $( uname --machine) "
381
410
if [[ -z " $__platform " ]]; then
382
411
case " $( sed -n ' /^Hardware/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo) " in
383
412
BCM* )
384
- # calculated based on information from https://github.com/AndrewFromMelbourne/raspberry_pi_revision
385
- local rev=" 0x$( sed -n ' /^Revision/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo) "
386
- # if bit 23 is not set, we are on a rpi1 (bit 23 means the revision is a bitfield)
387
- if [[ $(( ($rev >> 23 ) & 1 )) -eq 0 ]]; then
388
- __platform=" rpi1"
389
- else
390
- # if bit 23 is set, get the cpu from bits 12-15
391
- local cpu=$(( ($rev >> 12 ) & 15 ))
392
- case $cpu in
393
- 0)
394
- __platform=" rpi1"
395
- ;;
396
- 1)
397
- __platform=" rpi2"
398
- ;;
399
- 2)
400
- __platform=" rpi3"
401
- ;;
402
- 3)
403
- __platform=" rpi4"
404
- ;;
405
- 4)
406
- __platform=" rpi5"
407
- ;;
408
- esac
409
- fi
413
+ # RPI kernels before 2023-11-24 print a 'Hardware: BCM2835' line
414
+ get_rpi_model
410
415
;;
411
416
* ODROIDC)
412
417
__platform=" odroid-c1"
@@ -434,6 +439,9 @@ function get_platform() {
434
439
# refer to the nv.sh script in the L4T DTS for a similar implementation
435
440
if [[ -e " /proc/device-tree/compatible" ]]; then
436
441
case " $( tr -d ' \0' < /proc/device-tree/compatible) " in
442
+ * raspberrypi* )
443
+ get_rpi_model
444
+ ;;
437
445
* tegra186* )
438
446
__platform=" tegra-x2"
439
447
;;
0 commit comments