1+ /*
2+ * Copyright (c) 2024 Raspberry Pi (Trading) Ltd.
3+ *
4+ * SPDX-License-Identifier: BSD-3-Clause
5+ */
6+
7+ #ifndef _BOARDS_RASPBERRY_PI_PI500_RP2040_H
8+ #define _BOARDS_RASPBERRY_PI_PI500_RP2040_H
9+
10+ pico_board_cmake_set (PICO_PLATFORM , rp2040 )
11+
12+ // For board detection
13+ #define RASPBERRY_PI_PI500_RP2040
14+
15+ // --- FLASH ---
16+ // Pi 500 uses the same flash as the original Pi Pico (W25Q16JVUXIQ) but only DSPI pins are connected
17+ #define PICO_BOOT_STAGE2_CHOOSE_W25X10CL 1
18+
19+ #ifndef PICO_FLASH_SPI_CLKDIV
20+ #define PICO_FLASH_SPI_CLKDIV 2
21+ #endif
22+
23+ pico_board_cmake_set_default (PICO_FLASH_SIZE_BYTES , (2 * 1024 * 1024 ))
24+ #ifndef PICO_FLASH_SIZE_BYTES
25+ #define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
26+ #endif
27+
28+
29+ #ifndef PICO_RP2040_B0_SUPPORTED
30+ #define PICO_RP2040_B0_SUPPORTED 0
31+ #endif
32+
33+ // Keyboard CAPS Lock indicator LED as default
34+ #define PI500_RP2040_CAPS_LOCK_LED_PIN 25
35+ #ifndef PICO_DEFAULT_LED_PIN
36+ #define PICO_DEFAULT_LED_PIN PI500_RP2040_CAPS_LOCK_LED_PIN
37+ #endif
38+
39+ // --- PI 500 POWER MANAGEMENT ---
40+ // Power button control (critical for Pi 500 power management)
41+ #define PI500_RP2040_POWER_BUTTON_PIN 19 //DO NOT SCAN OR YOU WON'T BE ABLE TO TURN THE PI500 ON!
42+ // Power key detection (shared with matrix pins but scanned separately)
43+ #define PI500_RP2040_POWER_KEY_COL_PIN 20 // Also matrix col 11
44+ #define PI500_RP2040_POWER_KEY_ROW_PIN 6 // Also matrix row 6
45+
46+ // --- UART ---
47+ #ifndef PICO_DEFAULT_UART
48+ #define PICO_DEFAULT_UART 0
49+ #endif
50+ #ifndef PICO_DEFAULT_UART_TX_PIN
51+ #define PICO_DEFAULT_UART_TX_PIN 16
52+ #endif
53+
54+ // --- KEYBOARD MATRIX PINS ---
55+ // Matrix row pins (8 pins)
56+ #define PI500_RP2040_MATRIX_ROW_0_PIN 0
57+ #define PI500_RP2040_MATRIX_ROW_1_PIN 1
58+ #define PI500_RP2040_MATRIX_ROW_2_PIN 2
59+ #define PI500_RP2040_MATRIX_ROW_3_PIN 3
60+ #define PI500_RP2040_MATRIX_ROW_4_PIN 4
61+ #define PI500_RP2040_MATRIX_ROW_5_PIN 5
62+ #define PI500_RP2040_MATRIX_ROW_6_PIN 6
63+ #define PI500_RP2040_MATRIX_ROW_7_PIN 7
64+
65+ // Matrix column pins (18 pins)
66+ #define PI500_RP2040_MATRIX_COL_0_PIN 27
67+ #define PI500_RP2040_MATRIX_COL_1_PIN 8
68+ #define PI500_RP2040_MATRIX_COL_2_PIN 9
69+ #define PI500_RP2040_MATRIX_COL_3_PIN 10
70+ #define PI500_RP2040_MATRIX_COL_4_PIN 11
71+ #define PI500_RP2040_MATRIX_COL_5_PIN 12
72+ #define PI500_RP2040_MATRIX_COL_6_PIN 13
73+ #define PI500_RP2040_MATRIX_COL_7_PIN 14
74+ #define PI500_RP2040_MATRIX_COL_8_PIN 23
75+ #define PI500_RP2040_MATRIX_COL_9_PIN 24
76+ #define PI500_RP2040_MATRIX_COL_10_PIN 22
77+ #define PI500_RP2040_MATRIX_COL_11_PIN 20
78+ #define PI500_RP2040_MATRIX_COL_12_PIN 29
79+ #define PI500_RP2040_MATRIX_COL_13_PIN 18
80+ #define PI500_RP2040_MATRIX_COL_14_PIN 15
81+ #define PI500_RP2040_MATRIX_COL_15_PIN 21
82+ #define PI500_RP2040_MATRIX_COL_16_PIN 28
83+ #define PI500_RP2040_MATRIX_COL_17_PIN 26
84+
85+ #endif
0 commit comments