Skip to content

Commit a3aca2f

Browse files
committed
soc: Added support for Raspberry Pi's RP2040 SoC
Signed-off-by: Yonatan Schachter <[email protected]> Signed-off-by: Ioannis Glaropoulos <[email protected]>
1 parent ed82604 commit a3aca2f

File tree

17 files changed

+348
-0
lines changed

17 files changed

+348
-0
lines changed

CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
/soc/arm/nuvoton/ @ssekar15
4545
/soc/arm/nuvoton_npcx/ @MulinChao @WealianLiao @ChiHuaL
4646
/soc/arm/quicklogic_eos_s3/ @kowalewskijan @kgugala
47+
/soc/arm/raspberrypi/ @yonsch
4748
/soc/arm/silabs_exx32/efm32pg1b/ @rdmeneze
4849
/soc/arm/silabs_exx32/efr32mg21/ @l-alfred
4950
/soc/arm/st_stm32/ @erwango
@@ -357,6 +358,7 @@
357358
/dts/arm/nuvoton/npcx/ @MulinChao @WealianLiao @ChiHuaL
358359
/dts/arm/nxp/ @MaureenHelm @mmahadevan108 @dleach02
359360
/dts/arm/microchip/ @franciscomunoz @albertofloyd @scottwcpg
361+
/dts/arm/raspberrypi/ @yonsch
360362
/dts/arm/silabs/efm32_pg_1b.dtsi @rdmeneze
361363
/dts/arm/silabs/efm32gg11b* @oanerer
362364
/dts/arm/silabs/efm32_jg_pg* @chrta

dts/arm/raspberrypi/rp2040.dtsi

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/*
2+
* Copyright (c) 2021 Yonatan Schachter
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <arm/armv6-m.dtsi>
8+
#include <dt-bindings/gpio/gpio.h>
9+
#include <mem.h>
10+
11+
/ {
12+
cpus {
13+
#address-cells = <1>;
14+
#size-cells = <0>;
15+
16+
cpu0: cpu@0 {
17+
compatible = "arm,cortex-m0+";
18+
reg = <0>;
19+
};
20+
21+
cpu1: cpu@1 {
22+
compatible = "arm,cortex-m0+";
23+
reg = <1>;
24+
};
25+
};
26+
27+
sram0: memory@20000000 {
28+
compatible = "mmio-sram";
29+
reg = <0x20000000 DT_SIZE_K(264)>;
30+
};
31+
32+
/* Flash starts at 0x10000000 but the first 0x100 bytes
33+
* are reserved for the second stage bootloader
34+
*/
35+
flash0: flash@10000100 {
36+
compatible = "soc-nv-flash";
37+
label = "FLASH_RP2";
38+
39+
write-block-size = <1>;
40+
};
41+
42+
clk_peri: uart-clock {
43+
compatible = "fixed-clock";
44+
clock-frequency = <125000000>;
45+
#clock-cells = <0>;
46+
};
47+
48+
soc {
49+
uart0: uart@40034000 {
50+
compatible = "raspberrypi,rp2-uart";
51+
reg = <0x40034000 DT_SIZE_K(4)>;
52+
clocks = <&clk_peri>;
53+
interrupts = <20 3>;
54+
interrupt-names = "uart0";
55+
label = "UART_0";
56+
status = "disabled";
57+
};
58+
59+
uart1: uart@40038000 {
60+
compatible = "raspberrypi,rp2-uart";
61+
reg = <0x40038000 DT_SIZE_K(4)>;
62+
clocks = <&clk_peri>;
63+
interrupts = <21 3>;
64+
interrupt-names = "uart1";
65+
label = "UART_1";
66+
status = "disabled";
67+
};
68+
};
69+
};
70+
71+
&nvic {
72+
arm,num-irq-priority-bits = <3>;
73+
};

modules/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ source "modules/Kconfig.mcux"
2323
source "modules/Kconfig.microchip"
2424
source "modules/Kconfig.nuvoton"
2525
source "modules/Kconfig.open-amp"
26+
source "modules/Kconfig.raspberrypi"
2627
source "modules/Kconfig.silabs"
2728
source "modules/Kconfig.simplelink"
2829
source "modules/Kconfig.sof"

modules/Kconfig.raspberrypi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2021 Yonatan Schachter
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config HAS_RASPBERRYPI
5+
bool

soc/arm/raspberrypi/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
add_subdirectory(${SOC_SERIES})

soc/arm/raspberrypi/Kconfig

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Raspberry Pi (RP) MCU line
2+
3+
# Copyright (c) 2021 Nordic Semiconductor ASA
4+
# Copyright (c) 2021 Yonatan Schachter
5+
# SPDX-License-Identifier: Apache-2.0
6+
7+
config SOC_FAMILY_RASPBERRY_PI
8+
bool
9+
10+
if SOC_FAMILY_RASPBERRY_PI
11+
config SOC_FAMILY
12+
string
13+
default "raspberrypi"
14+
15+
source "soc/arm/raspberrypi/*/Kconfig.soc"
16+
17+
endif # SOC_FAMILY_RASPBERRY_PI
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Raspberry Pi (RP) MCU line
2+
3+
# Copyright (c) 2021 Nordic Semiconductor ASA
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
if SOC_FAMILY_RASPBERRY_PI
7+
8+
source "soc/arm/raspberrypi/*/Kconfig.defconfig.series"
9+
10+
endif # SOC_FAMILY_RASPBERRY_PI

soc/arm/raspberrypi/Kconfig.soc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Raspberry Pi (RP) MCU line
2+
3+
# Copyright (c) 2021 Nordic Semiconductor ASA
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
source "soc/arm/raspberrypi/*/Kconfig.series"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright (c) 2021 Yonatan Schachter
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
zephyr_library()
5+
6+
zephyr_library_sources(
7+
soc.c
8+
rp2_init.c
9+
)
10+
11+
zephyr_library_include_directories(
12+
${ZEPHYR_BASE}/kernel/include
13+
${ZEPHYR_BASE}/arch/arm/include
14+
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# # Raspberry Pi RP2040 MCU
2+
3+
# Copyright (c) 2021 Nordic Semiconductor ASA
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
config SOC
7+
default "rp2040"
8+
depends on SOC_RP2040

0 commit comments

Comments
 (0)