From 302280363f0e544eb70403e18163d7701028fe11 Mon Sep 17 00:00:00 2001 From: Chuckduey Date: Fri, 24 Nov 2023 15:00:09 -0700 Subject: [PATCH] Adding in RPI 5 support Signed-off-by: Chuckduey --- include/arm/raspberry_pi.h | 2 +- src/arm/raspberry_pi.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/arm/raspberry_pi.h b/include/arm/raspberry_pi.h index 349857f..eff5fc2 100644 --- a/include/arm/raspberry_pi.h +++ b/include/arm/raspberry_pi.h @@ -26,7 +26,7 @@ extern "C" { #define MRAA_RASPBERRY_PI3_A_PLUS_PINCOUNT 41 #define MRAA_RASPBERRY_PI4_B_PINCOUNT 41 #define MRAA_RASPBERRY_PI_400_PINCOUNT 41 - +#define MRAA_RASPBERRY_PI5_B_PINCOUNT 41 mraa_board_t * mraa_raspberry_pi(); diff --git a/src/arm/raspberry_pi.c b/src/arm/raspberry_pi.c index 650fec1..ce61f37 100644 --- a/src/arm/raspberry_pi.c +++ b/src/arm/raspberry_pi.c @@ -30,6 +30,7 @@ #define PLATFORM_NAME_RASPBERRY_PI3_A_PLUS "Raspberry Pi 3 Model A+" #define PLATFORM_NAME_RASPBERRY_PI4_B "Raspberry Pi 4 Model B" #define PLATFORM_NAME_RASPBERRY_PI_400 "Raspberry Pi 400" +#define PLATFORM_NAME_RASPBERRY_PI5_B "Raspberry Pi 5 Model B" #define PLATFORM_RASPBERRY_PI_B_REV_1 1 #define PLATFORM_RASPBERRY_PI_A_REV_2 2 #define PLATFORM_RASPBERRY_PI_B_REV_2 3 @@ -44,6 +45,7 @@ #define PLATFORM_RASPBERRY_PI3_A_PLUS 12 #define PLATFORM_RASPBERRY_PI4_B 13 #define PLATFORM_RASPBERRY_PI_400 14 +#define PLATFORM_RASPBERRY_PI5_B 15 #define MMAP_PATH "/dev/mem" #define BCM2835_PERI_BASE 0x20000000 #define BCM2836_PERI_BASE 0x3f000000 @@ -523,6 +525,12 @@ mraa_raspberry_pi() platform_detected = PLATFORM_RASPBERRY_PI_400; b->phy_pin_count = MRAA_RASPBERRY_PI_400_PINCOUNT; peripheral_base = BCM2837_PERI_BASE; + block_size = BCM2837_BLOCK_SIZE; + } else if (strstr(line, "c04170") || strstr(line,"d04170")) { + b->platform_name = PLATFORM_NAME_RASPBERRY_PI5_B; + platform_detected = PLATFORM_RASPBERRY_PI5_B; + b->phy_pin_count = MRAA_RASPBERRY_PI5_B_PINCOUNT; + peripheral_base = BCM2837_PERI_BASE; block_size = BCM2837_BLOCK_SIZE; } else { b->platform_name = PLATFORM_NAME_RASPBERRY_PI_B_REV_1; @@ -602,6 +610,10 @@ mraa_raspberry_pi() b->platform_name = PLATFORM_NAME_RASPBERRY_PI_400; platform_detected = PLATFORM_RASPBERRY_PI_400; b->phy_pin_count = MRAA_RASPBERRY_PI_400_PINCOUNT; + } else if (mraa_file_contains(compatible_path, "raspberrypi,5-model-b")) { + b->platform_name = PLATFORM_NAME_RASPBERRY_PI5_B; + platform_detected = PLATFORM_RASPBERRY_PI5_B; + b->phy_pin_count = MRAA_RASPBERRY_PI5_B_PINCOUNT; } } @@ -872,7 +884,8 @@ mraa_raspberry_pi() (platform_detected == PLATFORM_RASPBERRY_PI3_B_PLUS) || (platform_detected == PLATFORM_RASPBERRY_PI3_A_PLUS) || (platform_detected == PLATFORM_RASPBERRY_PI4_B) || - (platform_detected == PLATFORM_RASPBERRY_PI_400)) { + (platform_detected == PLATFORM_RASPBERRY_PI_400) || + (platform_detected == PLATFORM_RASPBERRY_PI5_B) ) { strncpy(b->pins[27].name, "ID_SD", MRAA_PIN_NAME_SIZE); b->pins[27].capabilities = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };