Skip to content

Commit 409b079

Browse files
authored
RPI: Add support for RPI4 (#1364)
1 parent be4d6a8 commit 409b079

File tree

4 files changed

+919
-130
lines changed

4 files changed

+919
-130
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ GATEWAY_OBJECTS=$(patsubst %.c,$(BUILDDIR)/%.o,$(GATEWAY_C_SOURCES)) $(patsubst
2626

2727
INCLUDES=-I. -I./core -I./hal/architecture/Linux/drivers/core
2828

29-
ifeq ($(SOC),$(filter $(SOC),BCM2835 BCM2836 BCM2837))
29+
ifeq ($(SOC),$(filter $(SOC),BCM2835 BCM2836 BCM2837 BCM2711))
3030
BCM_C_SOURCES=$(wildcard hal/architecture/Linux/drivers/BCM/*.c)
3131
BCM_CPP_SOURCES=$(wildcard hal/architecture/Linux/drivers/BCM/*.cpp)
3232
GATEWAY_OBJECTS+=$(patsubst %.c,$(BUILDDIR)/%.o,$(BCM_C_SOURCES)) $(patsubst %.cpp,$(BUILDDIR)/%.o,$(BCM_CPP_SOURCES))

configure

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ SPI driver options:
1717
Device path. [/dev/spidev0.0]
1818
1919
Building options:
20-
--soc=[BCM2835|BCM2836|BCM2837|AM33XX|A10|A13|A20|H3]
20+
--soc=[BCM2711|BCM2835|BCM2836|BCM2837|AM33XX|A10|A13|A20|H3]
2121
SoC type to be used. [configure autodetected]
2222
--cpu-flags=<CPUFLAGS> CPU defining/optimizing flags to be used. [configure autodetected]
2323
--extra-cflags=<CFLAGS> Extra C flags passed to C compilation. []
@@ -183,6 +183,10 @@ function detect_machine {
183183
soc="BCM2837"
184184
tp="rpi3"
185185
;;
186+
3)
187+
soc="BCM2711"
188+
tp="rpi4"
189+
;;
186190
esac
187191
fi
188192
elif [[ $hardware == "BCM2708"* ]]; then
@@ -261,6 +265,9 @@ function gcc_cpu_flags {
261265
BCM2837)
262266
flags="-march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
263267
;;
268+
BCM2711)
269+
flags="-march=armv8-a+crc -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
270+
;;
264271
AM33XX)
265272
flags="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
266273
;;
@@ -557,7 +564,7 @@ if [ -z "${CPUFLAGS}" ]; then
557564
CPUFLAGS=$(gcc_cpu_flags $SOC)
558565
fi
559566

560-
if [[ $SOC == "BCM2835" || $SOC == "BCM2836" || $SOC == "BCM2837" ]]; then
567+
if [[ $SOC == "BCM2835" || $SOC == "BCM2836" || $SOC == "BCM2837" || $SOC == "BCM2711" ]]; then
561568
CPPFLAGS="-DLINUX_ARCH_RASPBERRYPI $CPPFLAGS"
562569
else
563570
printf "${SECTION} Checking GPIO Sysfs.\n"
@@ -570,7 +577,7 @@ fi
570577

571578
if [ -z "${SPI_DRIVER}" ]; then
572579
printf "${SECTION} Detecting SPI driver.\n"
573-
if [[ $SOC == "BCM2835" || $SOC == "BCM2836" || $SOC == "BCM2837" ]]; then
580+
if [[ $SOC == "BCM2835" || $SOC == "BCM2836" || $SOC == "BCM2837" || $SOC == "BCM2711" ]]; then
574581
SPI_DRIVER=BCM
575582
elif [[ $(eval 'ls /dev/spidev* 2>/dev/null') ]]; then
576583
SPI_DRIVER=SPIDEV
@@ -585,8 +592,8 @@ fi
585592
if [ -n "${SPI_DRIVER}" ]; then
586593
case ${SPI_DRIVER} in
587594
BCM)
588-
if [[ $SOC != "BCM2835" && $SOC != "BCM2836" && $SOC != "BCM2837" ]]; then
589-
die "BCM SPI driver is only supported for SOCs BCM2835, BCM2836 or BCM2837" 5
595+
if [[ $SOC != "BCM2835" && $SOC != "BCM2836" && $SOC != "BCM2837" && $SOC != "BCM2711" ]]; then
596+
die "BCM SPI driver is only supported for SOCs BCM2835, BCM2836, BCM2837 or BCM2711" 5
590597
fi
591598
CPPFLAGS="-DLINUX_SPI_BCM $CPPFLAGS"
592599
;;

0 commit comments

Comments
 (0)