Commit graph

34 commits

Author SHA1 Message Date
Andrew Featherstone
cb1e51b4df soc: rp2350: Add initial support for the Hazard3 cores
The RP2350 SoC series contain two Hazard3 cores, which use the RISC-V
instruction set. Define a new CPU cluster (`hazard3`), which is intended
to be used with the two Hazard3 cores 'plugged in' to the two 'sockets'
in the RP2350 series SoCs.

Update the linker script to support linking against the correct
(ISA-specific) linker script, and to generate a correct IMAGE_DEF for
the target ISA.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2025-09-29 12:30:28 -04:00
Andrew Featherstone
80a54a89cd drivers: intc: RP2350: Add initial support for Hazard3
The RP2350 uses the Xh3irq interrupt controller, which supports nested
and prioritised interrupts. This adds initial support, configuring the
controller in 'direct' (non-vectored) mode.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2025-09-29 12:30:28 -04:00
Andrew Featherstone
23419dcbad modules: hal_rpi_pico: Correct comment in config_autogen.h
This comment was incorrect after changes in c9a7ba2f06 removed one of
the definitions. Correct the comment to avoid confusion in subsequent
changes.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2025-09-29 12:30:28 -04:00
Keith Packard
3ed633b69b modules/hal_rpi_pico: Switch boot_stage2 to picolibc
Now that rpi_pico can use picolibc, let's switch to it.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-08-29 19:19:08 -04:00
TOKITA Hiroshi
1e14953480 Revert "modules: hal_rpi_pico: set -std=gnu11 in a toolchain independent way."
This reverts commit 05401b3f44.

Introducing c-std setting with CMake way in the commit,
but the actual command line is below.

```
arm-zephyr-eabi-gcc -DKERNEL ... -std=gnu11 ...  -std=c99 ...
```

The setting `CONFIG_STD_C99` in Kconfig appends the `-std=c99`,
and (At least in gcc,) options are processed last-come-first,
so this setting was meaningless.

This will cause a build error, so we will revert it.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2025-06-03 21:32:02 -07:00
Robin Kastberg
05401b3f44 modules: hal_rpi_pico: set -std=gnu11 in a toolchain independent way.
Set `-std=gnu11` in a more toolchain independent way.

Signed-off-by: Robin Kastberg <robin.kastberg@iar.com>
2025-05-19 16:36:04 +02:00
TOKITA Hiroshi
1d543dead8 pico-sdk: Exclude the watchdog driver.
Review the dependencies to make it unnecessary to pull in the
watchdog driver.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2025-03-07 19:47:41 +01:00
TOKITA Hiroshi
4cb8761b22 modules: hal_rpi_pico: Introducing -std=gnu11 option
The original Pico-SDK is compiled with `-std=gnu11` option.
Aligning with it.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2025-02-11 14:52:31 +00:00
Dominik Prütting
4e7ed9d39a boards: hal_rpi_pico hardware_xip_cache not included
include hardware_xip_cache when CONFIG_PICOSDK_USE_FLASH is set

Signed-off-by: Dominik Prütting <dominik.pruetting@fau.de>
2025-01-31 11:49:30 +01:00
TOKITA Hiroshi
a76c18163e manifest: update hal_rpi_pico to 2.1.0 release
This version of the HAL is based on the 2.1.0 release of the Raspberry
Pi Pico SDK.

Update `modules/hal_rpi_pico/CMakeLists.txt` to add the new include
directories to the build. See https://github.com/raspberrypi/pico-sdk/releases/tag/2.1.0
for more information.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2025-01-23 23:19:36 +01:00
Andrew Featherstone
8d39008f2f drivers: clock_control: rpi_pico: Start tick generators for timers
Unlike the RP2040, the RP2350 has multiple tick generators that need to
be started. Start TIMER0 and TIMER1 tick generators during
clock_control_init.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2024-12-23 23:57:57 +01:00
Benjamin Cabé
cc4a985316 soc: rp2350: Add initial support for the Raspberry Pi RP2350
RP2350 is Raspberry Pi's newest SoC. From the datasheet:

"RP2350 is a new family of microcontrollers from Raspberry Pi that
offers significant enhancements over RP2040. Key features include:
• Dual Cortex-M33 or Hazard3 processors at 150 MHz
• 520 kB on-chip SRAM, in 10 independent banks
• 8 kB of one-time-programmable storage (OTP)
• Up to 16 MB of external QSPI flash/PSRAM via dedicated QSPI bus
...
"

This commit introduces some changes to support the existing RP2040 and
what is describe by Raspberry Pi as the "RP2350 family". Currently there
are 4 published products in the family: RP2350A, RP2350B, RP2354A, and
RP2354A. Within Zephyr's taxonomy, split the configuration as follows:
Family: Raspberry Pi Pico. This contains all RP2XXX SoCs,
SoC Series: RP2040 and RP2350.
SoC: RP2040 and, for now, just the RP2350A, which is present on the Pico
2, where the A suffix indicates  QFN-60 package type. This structure is
reflected in `soc/raspberrypi/soc.yml`, and somewhat assumes that there
won't be a RP2050, for example, as a RP2040 with more RAM.

This is foundation work ahead of introducing support for Raspberry Pi's
Pico 2 board, which is fitted with a RP2350A and 4MB of flash.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-12-23 23:57:57 +01:00
Flavio Ceolin
c9a7ba2f06 modules: hal_rpi_pico: Use Zephyr noinline definition
Zephyr alread defines __noinline attribute in its toolchain haders.

Signed-off-by: Flavio Ceolin <flavio.ceolin@gmail.com>
2024-11-30 01:04:11 +01:00
TOKITA Hiroshi
6a2aafe286 modules: hal_rpi_pico: Update to fit for 2.0.0 directory structure
The directory structure has changed in 2.0.0,
so we update it accordingly.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-10-08 06:01:23 -04:00
Xudong Zheng
3c092f9274 dts: bindings: clock: rpi_pico: add XOSC definition
This defines raspberrypi,pico-xosc along with a configurable startup
delay multiplier. On some boards, the XOSC takes longer to stabilize.

Signed-off-by: Xudong Zheng <7pkvm5aw@slicealias.com>
2024-09-18 15:31:04 +02:00
Andrew Featherstone
df8c89b528 drivers: rtc: rpi_pico: Add support for the Raspberry Pi Pico RTC
This adds the minimal get_time/set_time support for the rp2040 and
enables support by default on the Pico boards. This doesn't support
configuring the clock source or alarm interrupts yet.

Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
2024-03-06 10:08:48 +00:00
TOKITA Hiroshi
2b24a5c90c modules: hal_rpi_pico: Remove unused drivers
Remove drivers that not been referenced.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2023-12-20 11:14:24 +01:00
Pieter De Gendt
8f8a77abc9 modules: hal_rpi_pico: Use zephyr_library_add_dependencies
Replace usage of add_dependencies(${ZEPHYR_CURRENT_LIBRARY} ...)

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2023-11-20 09:19:34 +01:00
TOKITA Hiroshi
8d98e7064e modules: hal_rpi_pico: Enable TIMER driver
Enable TIME driver.
Add the path of the TIME driver header into include paths.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
2023-09-13 16:18:44 +02:00
Yonatan Schachter
5abb1b1ec0 drivers: misc: Add driver for RaspberryPi Pico PIO
Added a generic driver for RaspberryPi Pico PIO.
This driver is an intermediate driver for abstracting the PIO
device driver from physical pin configuration.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
Signed-off-by: Ionut Catalin Pavel <iocapa@iocapa.com>
2023-04-25 13:12:02 +02:00
TOKITA Hiroshi
15535edbfe modules: hal_rpi_pico: Enable DMA driver
Enable DMA driver.
Add the path of the DMA driver header into include paths.
`hardware_claim` is depends by DMA driver, also enable it.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
2023-03-22 09:33:52 +01:00
Fabio Baltieri
9b30667c77 build: drop LEGACY_INCLUDE_PATH support
LEGACY_INCLUDE_PATH has been defaulting to "n" and marked as deprecated
in both v3.2 and v3.3. Drop the option entirely for v3.4.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2023-02-21 15:06:48 +01:00
Thad House
92e518ed5c rpi_pico: add support for Pi Pico and C11
Currently if C11 or higher is enabled, many files fail to compile because
static_assert is defined in multiple header files. Solve this by
disabling the one in the HAL if the other macro is found

Signed-off-by: Thad House <thadhouse1@gmail.com>
2023-01-28 07:48:30 -05:00
TOKITA Hiroshi
725aa4759a modules: hal_rpi_pico: Enable ADC driver
Enable ADC driver.
Add the path of the ADC driver header into include paths.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
2022-09-06 17:11:19 +02:00
Joep Buruma
7e0fff24c7 drivers: pwm: add pwm driver for rpi_pico
Add pwm driver implementation for rpi pico family.
Adds myself as codeowner of drivers/pwm/*rpi_pico*

Signed-off-by: Joep Buruma <burumaj50@gmail.com>
2022-07-07 15:17:26 +02:00
Yonatan Schachter
2bfc245576 rpi_pico: Fix bootloader linking
A recent change to hal_rpi_pico's cmake, intended to fix the
compilation via Unix Makefiles, ended up not linking the BL
to the final ELF. This commit fixes both problems.

Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
2022-06-23 09:10:10 +02:00
Fabio Baltieri
33cc6827ba modules: rpi_pico: fix boot_stage2 generation when using Makefiles
RPi Pico second stage bootloader generation seems to fail when using
Makefiles with:

gmake[2]: *** No rule to make target 'bootloader/boot_stage2.S'...

Changing the ExternalProject_Add byproduct to the actual generated file
and not the .S seems to fix the problem.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2022-05-27 11:58:37 -07:00
Gerard Marull-Paretas
5f5a905784 modules: migrate includes to <zephyr/...>
In order to bring consistency in-tree, migrate all modules code to the
new prefix <zephyr/...>. Note that the conversion has been scripted,
refer to zephyrproject-rtos#45388 for more details.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-05-06 19:57:47 +02:00
Yonatan Schachter
29677da91f rpi_pico: Fix compilation for non Linux systems
On non Linux system, the compilation failed because the main
CMake did not pass the CMAKE_SYSTEM_NAME to the bootloader's
CMake. This caused the variable to be empty, instead of being
"Generic".

Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
2022-05-05 14:47:23 -05:00
Yuval Peress
1ec0c6f530 build: make non zephyr/ include prefix configurable
Add a Kconfig to disable non prefixed includes. By setting
`CONFIG_LEGACY_INCLUDE_PATH=n` developers can disable having
`include/zephyr` in the search path. This means that includes such
as `#include <kernel.h>` will no longer work.

Internally, every header should be updated to add the `zephyr/`
prefix to the headers. Only then, will developers be able to use
this config value for their applications.

Signed-off-by: Yuval Peress <peress@google.com>
2022-04-08 19:03:32 +02:00
Yuval Peress
53ef68d459 include: Prefix includes to use a scope
Move include paths and add new target_include_directories to support
backwards compatibility:
* /include -> /include/zephyr
  example: <irq.h> -> <zephyr/irq.h>

Issue #41543

Signed-off-by: Yuval Peress <peress@google.com>
2022-04-08 19:03:32 +02:00
Yonatan Schachter
90b20fffa4 drivers: hwinfo: Added unique ID support for RPi Pico
Added support for hwinfo's hwinfo_get_device_id for the
RPi Pico series.

Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
2022-03-16 10:24:32 +01:00
Yonatan Schachter
36888b1fb7 soc: rp2040: Enable bootrom functions
Support function and data lookup in the RPi's ROM.
The objects are obtained by including <pico/bootrom.h> and calling
rom_func_lookup or rom_data_lookup.

Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
2022-03-16 10:24:32 +01:00
Yonatan Schachter
db5b2780bf soc: Added support for Raspberry Pi's RP2040 SoC
Added basic support for the RP2040 SoC. Support
includes booting and starting the kernel, on one
core only.

Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
2022-02-02 16:23:35 +01:00