44 * SPDX-License-Identifier: BSD-3-Clause
55 */
66
7- // -----------------------------------------------------
8- // NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
9- // SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
10- // -----------------------------------------------------
11-
127#ifndef _BOARDS_RASPBERRY_PI_PI500_RP2040_H
138#define _BOARDS_RASPBERRY_PI_PI500_RP2040_H
149
@@ -17,50 +12,6 @@ pico_board_cmake_set(PICO_PLATFORM, rp2040)
1712// For board detection
1813#define RASPBERRY_PI_PI500_RP2040
1914
20- // --- UART ---
21- #ifndef PICO_DEFAULT_UART
22- #define PICO_DEFAULT_UART 0
23- #endif
24- #ifndef PICO_DEFAULT_UART_TX_PIN
25- #define PICO_DEFAULT_UART_TX_PIN 16 // Pi 500 debug UART on GP16
26- #endif
27- #ifndef PICO_DEFAULT_UART_RX_PIN
28- #define PICO_DEFAULT_UART_RX_PIN 1 // Standard RX pin
29- #endif
30-
31- // --- LED ---
32- #ifndef PICO_DEFAULT_LED_PIN
33- #define PICO_DEFAULT_LED_PIN 17 // Pi 500 LED on GP17
34- #endif
35-
36- // --- I2C ---
37- #ifndef PICO_DEFAULT_I2C
38- #define PICO_DEFAULT_I2C 0
39- #endif
40- #ifndef PICO_DEFAULT_I2C_SDA_PIN
41- #define PICO_DEFAULT_I2C_SDA_PIN 4
42- #endif
43- #ifndef PICO_DEFAULT_I2C_SCL_PIN
44- #define PICO_DEFAULT_I2C_SCL_PIN 5
45- #endif
46-
47- // --- SPI ---
48- #ifndef PICO_DEFAULT_SPI
49- #define PICO_DEFAULT_SPI 0
50- #endif
51- #ifndef PICO_DEFAULT_SPI_SCK_PIN
52- #define PICO_DEFAULT_SPI_SCK_PIN 18
53- #endif
54- #ifndef PICO_DEFAULT_SPI_TX_PIN
55- #define PICO_DEFAULT_SPI_TX_PIN 19
56- #endif
57- #ifndef PICO_DEFAULT_SPI_RX_PIN
58- #define PICO_DEFAULT_SPI_RX_PIN 16
59- #endif
60- #ifndef PICO_DEFAULT_SPI_CSN_PIN
61- #define PICO_DEFAULT_SPI_CSN_PIN 17
62- #endif
63-
6415// --- FLASH ---
6516// Pi 500 uses W25X10CL flash (differs from standard Pico W25Q080)
6617#define PICO_BOOT_STAGE2_CHOOSE_W25X10CL 1
@@ -69,59 +20,62 @@ pico_board_cmake_set(PICO_PLATFORM, rp2040)
6920#define PICO_FLASH_SPI_CLKDIV 2
7021#endif
7122
72- pico_board_cmake_set_default (PICO_FLASH_SIZE_BYTES , (1 * 1024 * 1024 )) // 1MB W25X10CL
23+ pico_board_cmake_set_default (PICO_FLASH_SIZE_BYTES , (128 * 1024 ))
7324#ifndef PICO_FLASH_SIZE_BYTES
74- #define PICO_FLASH_SIZE_BYTES (1 * 1024 * 1024)
25+ #define PICO_FLASH_SIZE_BYTES (128 * 1024)
7526#endif
7627
77- // Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
78- #define PICO_SMPS_MODE_PIN 23
79-
80- #ifndef PICO_RP2040_B0_SUPPORTED
81- #define PICO_RP2040_B0_SUPPORTED 1
82- #endif
8328
84- // The GPIO Pin used to read VBUS to determine if the device is battery powered.
85- #ifndef PICO_VBUS_PIN
86- #define PICO_VBUS_PIN 24
87- #endif
8829
89- // The GPIO Pin used to monitor VSYS. Typically you would use this with ADC.
90- #ifndef PICO_VSYS_PIN
91- #define PICO_VSYS_PIN 29
30+ #ifndef PICO_RP2040_B0_SUPPORTED
31+ #define PICO_RP2040_B0_SUPPORTED 0
9232#endif
9333
94- // --- USB CONFIGURATION ---
95- // Crucial for Pi 500 keyboard function when Pi is off - ignores USB startup check
96- #define PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE 0
97- #define PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED 0
98-
99- // --- BOOTLOADER CONFIGURATION ---
100- // Disable double tap reset timeout for Pi 500
101- #define PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED 0
102-
103- // --- PI 500 KEYBOARD MATRIX CONFIGURATION ---
104- // Complete GPIO pin mapping for 8×18 keyboard matrix
105- // Rows (8): GP0, GP1, GP2, GP3, GP4, GP5, GP6, GP7
106- // Cols (18): GP27, GP8, GP9, GP10, GP11, GP12, GP13, GP14, GP23, GP24, GP22, GP20, GP29, GP18, GP15, GP21, GP28, GP26
107- // Matrix scanning: ROW2COL, no diodes (ghost keys possible with 3+ key combinations)
108-
109- // --- PI 500 SYSTEM PINS ---
110- // These pins are reserved for Pi 500 hardware functions:
111- // GP0-GP7: Keyboard matrix rows
112- // GP8-GP15: Keyboard matrix columns (partial)
113- // GP16: Debug UART TX
114- // GP17: LED (heartbeat/debug)
115- // GP18: Keyboard matrix column
116- // GP19: Power button control (PWR_BTN) - CRITICAL for Pi power management
117- // GP20: Power key detection column (separate from matrix)
118- // GP21-GP24: Keyboard matrix columns
119- // GP25: Caps Lock LED
120- // GP26-GP29: Keyboard matrix columns
121-
122- // --- POWER MANAGEMENT WARNING ---
123- // Custom firmware MUST implement power button handling via GP19 or the Pi 500
124- // power button will stop working, potentially making the device unbootable.
125- // See QMK pi500.c for reference implementation.
34+ // --- PI 500 KEYBOARD LEDS ---
35+ // LEDs directly connected to RP2040 (not via FFC)
36+ #ifndef PICO_DEFAULT_LED_PIN
37+ #define PICO_DEFAULT_LED_PIN 17 // Power/Status LED
38+ #endif
39+
40+ // Keyboard indicator LEDs
41+ #define PI500_RP2040_CAPS_LOCK_LED_PIN 25
42+
43+ // --- PI 500 POWER MANAGEMENT ---
44+ // Power button control (critical for Pi 500 power management)
45+ #define PI500_RP2040_POWER_BUTTON_PIN 19
46+ // Power key detection (shared with matrix pins but scanned separately)
47+ #define PI500_RP2040_POWER_KEY_COL_PIN 20 // Also matrix col 11
48+ #define PI500_RP2040_POWER_KEY_ROW_PIN 6 // Also matrix row 6
49+
50+ // --- KEYBOARD MATRIX PINS ---
51+ // Matrix row pins (8 pins)
52+ #define PI500_RP2040_MATRIX_ROW_0_PIN 0
53+ #define PI500_RP2040_MATRIX_ROW_1_PIN 1
54+ #define PI500_RP2040_MATRIX_ROW_2_PIN 2
55+ #define PI500_RP2040_MATRIX_ROW_3_PIN 3
56+ #define PI500_RP2040_MATRIX_ROW_4_PIN 4
57+ #define PI500_RP2040_MATRIX_ROW_5_PIN 5
58+ #define PI500_RP2040_MATRIX_ROW_6_PIN 6
59+ #define PI500_RP2040_MATRIX_ROW_7_PIN 7
60+
61+ // Matrix column pins (18 pins)
62+ #define PI500_RP2040_MATRIX_COL_0_PIN 27
63+ #define PI500_RP2040_MATRIX_COL_1_PIN 8
64+ #define PI500_RP2040_MATRIX_COL_2_PIN 9
65+ #define PI500_RP2040_MATRIX_COL_3_PIN 10
66+ #define PI500_RP2040_MATRIX_COL_4_PIN 11
67+ #define PI500_RP2040_MATRIX_COL_5_PIN 12
68+ #define PI500_RP2040_MATRIX_COL_6_PIN 13
69+ #define PI500_RP2040_MATRIX_COL_7_PIN 14
70+ #define PI500_RP2040_MATRIX_COL_8_PIN 23
71+ #define PI500_RP2040_MATRIX_COL_9_PIN 24
72+ #define PI500_RP2040_MATRIX_COL_10_PIN 22
73+ #define PI500_RP2040_MATRIX_COL_11_PIN 20
74+ #define PI500_RP2040_MATRIX_COL_12_PIN 29
75+ #define PI500_RP2040_MATRIX_COL_13_PIN 18
76+ #define PI500_RP2040_MATRIX_COL_14_PIN 15
77+ #define PI500_RP2040_MATRIX_COL_15_PIN 21
78+ #define PI500_RP2040_MATRIX_COL_16_PIN 28
79+ #define PI500_RP2040_MATRIX_COL_17_PIN 26
12680
12781#endif
0 commit comments