From 68bdec451077a33b0b1247ce01ed30e470163dea Mon Sep 17 00:00:00 2001 From: Sebastian Barrenechea Date: Wed, 16 Apr 2025 10:43:24 -0400 Subject: [PATCH 1/3] feat: Waveshare RP2350-USB-A board support --- Firmware/RP2040/CMakeLists.txt | 7 +++++++ Firmware/RP2040/src/Board/Config.h | 8 +++++++- Firmware/RP2040/src/OGXMini/Board/Standard.cpp | 2 +- Firmware/RP2040/src/OGXMini/OGXMini.cpp | 5 +++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Firmware/RP2040/CMakeLists.txt b/Firmware/RP2040/CMakeLists.txt index 260ffbfb..871c7e95 100644 --- a/Firmware/RP2040/CMakeLists.txt +++ b/Firmware/RP2040/CMakeLists.txt @@ -167,6 +167,13 @@ elseif(OGXM_BOARD STREQUAL "ESP32_BLUERETRO_I2C") add_compile_definitions(OGXM_RETAIL=1) endif() +elseif(OGXM_BOARD STREQUAL "RP2350_USB_A") + add_compile_definitions(CONFIG_OGXM_BOARD_RP2350_USB_A=1) + set(EN_USB_HOST TRUE) + set(PICO_PLATFORM rp2350) + set(EN_RGB TRUE) + set(FLASH_SIZE_MB 2) + else() message(FATAL_ERROR "Invalid OGXM_BOARD value. See options in src/board_config.h") diff --git a/Firmware/RP2040/src/Board/Config.h b/Firmware/RP2040/src/Board/Config.h index 658378e2..eac2459b 100644 --- a/Firmware/RP2040/src/Board/Config.h +++ b/Firmware/RP2040/src/Board/Config.h @@ -9,7 +9,8 @@ #define ESP32_BLUERETRO_I2C 5 #define EXTERNAL_4CH_I2C 6 #define INTERNAL_4CH_I2C 7 -#define BOARDS_COUNT 8 +#define RP2350_USB_A 8 +#define BOARDS_COUNT 9 #define SYSCLOCK_KHZ 240000 @@ -89,6 +90,11 @@ #define MAX_GAMEPADS 1 #endif +#elif defined(CONFIG_OGXM_BOARD_RP2350_USB_A) + #define OGXM_BOARD RP2350_USB_A + #define PIO_USB_DP_PIN 12 + #define RGB_PXL_PIN 16 + #else #error "Invalid OGXMini board selected" diff --git a/Firmware/RP2040/src/OGXMini/Board/Standard.cpp b/Firmware/RP2040/src/OGXMini/Board/Standard.cpp index 1db4f58b..4a303def 100644 --- a/Firmware/RP2040/src/OGXMini/Board/Standard.cpp +++ b/Firmware/RP2040/src/OGXMini/Board/Standard.cpp @@ -1,6 +1,6 @@ #include "Board/Config.h" #include "OGXMini/Board/Standard.h" -#if ((OGXM_BOARD == PI_PICO) || (OGXM_BOARD == RP2040_ZERO) || (OGXM_BOARD == ADAFRUIT_FEATHER)) +#if ((OGXM_BOARD == PI_PICO) || (OGXM_BOARD == RP2040_ZERO) || (OGXM_BOARD == ADAFRUIT_FEATHER) || (OGXM_BOARD == RP2350_USB_A)) #include diff --git a/Firmware/RP2040/src/OGXMini/OGXMini.cpp b/Firmware/RP2040/src/OGXMini/OGXMini.cpp index a754c630..fd134dcc 100644 --- a/Firmware/RP2040/src/OGXMini/OGXMini.cpp +++ b/Firmware/RP2040/src/OGXMini/OGXMini.cpp @@ -22,6 +22,7 @@ namespace OGXMini { esp32_br_i2c::initialize, // ESP32_BLUERETRO_I2C four_ch_i2c::initialize, // EXTERNAL_4CH_I2C four_ch_i2c::initialize, // INTERNAL_4CH_I2C + standard::initialize, // RP2350_USB_A }; static constexpr RunFunc run_func[BOARDS_COUNT] = { @@ -33,6 +34,7 @@ namespace OGXMini { esp32_br_i2c::run, // ESP32_BLUERETRO_I2C four_ch_i2c::run, // EXTERNAL_4CH_I2C four_ch_i2c::run, // INTERNAL_4CH_I2C + standard::run, // RP2350_USB_A }; static constexpr HostMountedFunc host_mount_func[BOARDS_COUNT] = { @@ -44,6 +46,7 @@ namespace OGXMini { nullptr, // ESP32_BLUERETRO_I2C four_ch_i2c::host_mounted, // EXTERNAL_4CH_I2C four_ch_i2c::host_mounted, // INTERNAL_4CH_I2C + standard::host_mounted, // RP2350_USB_A }; static constexpr HostMountedWTypeFunc host_mount_w_type_func[BOARDS_COUNT] = { @@ -55,6 +58,7 @@ namespace OGXMini { nullptr, // ESP32_BLUERETRO_I2C four_ch_i2c::host_mounted_w_type, // EXTERNAL_4CH_I2C four_ch_i2c::host_mounted_w_type, // INTERNAL_4CH_I2C + nullptr, // RP2350_USB_A }; static constexpr WirelessConnectedFunc wl_conn_func[BOARDS_COUNT] = { @@ -66,6 +70,7 @@ namespace OGXMini { nullptr, // ESP32_BLUERETRO_I2C four_ch_i2c::wireless_connected, // EXTERNAL_4CH_I2C four_ch_i2c::wireless_connected, // INTERNAL_4CH_I2C + nullptr, // RP2350_USB_A }; void initialize() { From 4869d164f5ec32aa05af0abf95a47c1dc6aca309 Mon Sep 17 00:00:00 2001 From: Sebastian Barrenechea Date: Wed, 16 Apr 2025 10:55:44 -0400 Subject: [PATCH 2/3] fix: newer gcc versions restricting implicit usages --- Firmware/RP2040/src/TaskQueue/TaskQueue.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/RP2040/src/TaskQueue/TaskQueue.h b/Firmware/RP2040/src/TaskQueue/TaskQueue.h index 7ee2e0cb..21c59465 100644 --- a/Firmware/RP2040/src/TaskQueue/TaskQueue.h +++ b/Firmware/RP2040/src/TaskQueue/TaskQueue.h @@ -1,6 +1,7 @@ #ifndef TASK_QUEUE_H #define TASK_QUEUE_H +#include #include #include #include From 8ec60643f5813e6749137f777ce353e05703ad52 Mon Sep 17 00:00:00 2001 From: Sebastian Barrenechea Date: Wed, 16 Apr 2025 11:01:48 -0400 Subject: [PATCH 3/3] chore: bump pico-sdk to 2.1.1 --- Firmware/RP2040/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/RP2040/CMakeLists.txt b/Firmware/RP2040/CMakeLists.txt index 871c7e95..a4ccaa77 100644 --- a/Firmware/RP2040/CMakeLists.txt +++ b/Firmware/RP2040/CMakeLists.txt @@ -11,7 +11,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(SRC ${CMAKE_CURRENT_LIST_DIR}/src) set(EXTERNAL_DIR ${CMAKE_CURRENT_LIST_DIR}/../external) -set(PICOSDK_VERSION_TAG "2.1.0") +set(PICOSDK_VERSION_TAG "2.1.1") include(${CMAKE_CURRENT_LIST_DIR}/../cmake/init_submodules.cmake) include(${CMAKE_CURRENT_LIST_DIR}/../cmake/patch_libs.cmake)