Commit graph

118,807 commits

Author SHA1 Message Date
Robert Robinson
9c672fb876 include: drivers: clock_control: Remove strict inclusion for nrf_clock.h
This reverts commit ee05087935.
Since all devices now support nrf_clock HAL as of nrfx 3.10

Signed-off-by: Robert Robinson <robert.robinson@nordicsemi.no>
2025-04-10 12:57:52 +02:00
Johann Fischer
0f4fc767be drivers: udc_rpi_pico: use atomic_t instead of k_event for value passing
Use atomic_t instead of k_event for event value passing.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
dfe483dbcc drivers: udc_rpi_pico: fix restart of the new transaction
At high throughput, the controller sometimes fails to start a new
transaction. Clearing the corresponding endpoint bit in the BUFF_STATUS
completion register before initiating a new transaction solves this
problem.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
6c90673a32 drivers: udc_rpi_pico: fix OUT transfer handling in ISR
Do not check if the tailroom is greater than or equal to MPS because the
controller does not write directly to the buffer and therefore cannot
write outside the buffer.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
a2c5861568 drivers: udc_rpi_pico: fix set/clear endpoint halt
For the IN endpoint, we only need to set/reset the STALL bit in the
endpoint control register.
To set halt on the OUT endpoint, the AVAILABLE bit must also be set,
which is similar to starting a new transfer, but first any transfer in
progress must be canceled.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
e98e774b75 drivers: udc_rpi_pico: mark endpoint as not busy after transfer canceled
Mark endpoint as not busy after transfer is canceled.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
f701357675 drivers: udc_rpi_pico: support VBUS state change detection
Support VBUS state change detection and enable/disable DP pull-up
according to VBUS state when pinctrl property is provided.

It brings the similar functionality introduced in commit 4c0317fa47
("drivers: usb_dc_rpi_pico: Implemented vbus detection handling")
for the legacy device controller driver.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
06232bb491 drivers: udc_rpi_pico: replace message queue with k_events
Using k_events eliminates the drawback of the queue potentially dropping
messages and provides a reliable event notification mechanism. It is
similar to commit c2f2d8ce5d
("drivers: usb: udc_dwc2: Replace queue with events")

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Johann Fischer
2f64a422e2 drivers: udc_rpi_pico: fix suspend/resume ISR handling
Set suspended state on suspend/resume ISR.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-04-10 12:57:43 +02:00
Sebastian Głąb
3c34f88678 tests: drivers: uart: uart_elementary: Run test on nRF54L* FLPR
Add overlays required to run the test on:
- nrf54l09pdk/nrf54l09/cpuflpr,
- nrf54l20pdk/nrf54l20/cpuflpr.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
a2f4154674 samples: drivers: watchdog: Enable sample on nrf54L09 and L20
Add overlays required to run watchdog sample on:
- nrf54l09pdk/nrf54l09/cpuapp,
- nrf54l09pdk/nrf54l09/cpuflpr,
- nrf54l20pdk/nrf54l20/cpuflpr.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
a9e822ee29 tests: drivers: watchdog: wdt_basic_api: Enable test on nRF54L09 and L20
Enable wdt_basic_api test on:
- nrf54l09pdk/nrf54l09/cpuapp (missing supported),
- nrf54l09pdk/nrf54l09/cpuflpr (missing overlay),
- nrf54l20pdk/nrf54l20/cpuflpr (missing supported and overlay).

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
729e39a0a7 tests: boards: nrf: qdec: Enable test on nRF54L20 FLPR
Add overlay required to run qdec tests
on nrf54l20pdk/nrf54l20/cpuflpr.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
6a782cf31f tests: drivers: timer: Enable test on nRF54L* cpuflpr
Enable nrf_grtc_timer test on:
- nrf54l09pdk/nrf54l09/cpuflpr and
- nrf54l20pdk/nrf54l20/cpuflpr.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
fb1d730f5c tests: drivers: gpio: gpio_basic_api: Enable test on nRF54L* cpuflpr
Add overlay required to run gpio_basic_api test on
- nrf54l09pdk/nrf54l09/cpuflpr and
- nrf54l20pdk/nrf54l20/cpuflpr.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Sebastian Głąb
9bb5e2f910 samples: drivers: mbox: Enable sample on L09 and L20
Add board overlays required to run mbox sample on
nRF54L09 and nRF54L20 targets.

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2025-04-10 12:57:27 +02:00
Tomasz Moń
d6a8bd5870 usb: device_next: Change speed selection Kconfig dependency
In my opinion, the user is supposed to configure the speed of the stack
and drivers ough to honor that choice. However current Zephyr USB
maintainer imposes that the dependency is the other way round, i.e.
that user first needs to disable High-Speed chirp at driver level and
only then can select Full-Speed only operation. Adhere to the
arbitrarily set up rule to allow this really necessary functionality to
enter Zephyr.

I consider this change to be harmful because it opens up a Kconfig trap
that allows configuring High-Speed capable stack with a device driver
limited to Full-Speed only operation.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Tomasz Moń
79f2615f1a drivers: udc_dwc2: Limit operating speed to stack configuration
Limit maximum operating speed in DCFG register if USB stack is
configured to support only Full-Speed.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Tomasz Moń
b3eb6f2d11 usb: device_next: Reduce code size on Full-Speed only configuration
Allow compiler optimizations to remove High-Speed handling code. Knowing
that maximum operating speed is Full-Speed allows to reduce bulk buffers
from 512 to 64 bytes. More RAM optimizations are possible but this
commit only gets the low hanging fruits.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Tomasz Moń
faeabc63c9 usb: device_next: Add Kconfig to set maximum speed
Two main ideas behind setting maximum speed are:
  * Allow code and RAM optimizations at compile time
  * Allow High-Speed capable drivers to limit operating speed to user
    choice.

This commit only introduces the necessary Kconfig options but does not
implement any code or RAM optimizations and does not modify any driver.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Tomasz Moń
35af7b88b3 usb: device_next: Unregister class according to speed
Fix a typo resulted in USBD_SPEED_HS unregistering Full-Speed class
instead of High-Speed.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2025-04-10 12:57:19 +02:00
Krzysztof Chruściński
eb1081e8f4 doc: services: logging: Clarify limitations
Add note about limitation regarding logging strings with width. Clarify
that it is required to cast character pointer to non-character pointer
when used with %p format specifier.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2025-04-10 10:12:11 +02:00
Mathieu Choplain
f1452f2caa boards: st: nucleo_wb09ke: replace OpenOCD with pyOCD for debugging
pyOCD is installed along with Zephyr, and can debug apps on STM32WB09 once
the appropriate pack (already publicly available) is installed.

On the other hand, OpenOCD comes with the Zephyr SDK but only on Linux, and
both Zephyr's fork and upstream lack support for STM32WB09, which was added
by commit 89b053b660bcef803e19c89584de933158c59299 in ST's OpenOCD fork[1].
While pre-builts for this OpenOCD fork are provided by ST as part of other
software packages (e.g., STM32CubeIDE), it is less convenient to use and
the exact support script to use varies depending on which tool OpenOCD is
borrowed from.

Remove OpenOCD support for STM32WB09 entirely, replacing it with pyOCD, and
add instructions about pack installation in the board documentation.

While this also applies to flashing, STM32CubeProgrammer is the default
runner for this, and already supports STM32WB09 without any shenanigans
(i.e., a bare "west flash" will work with CubeProg) - as such, place the
notice only in the debugging section, which is the only operation CubeProg
does not support.

[1] https://github.com/STMicroelectronics/OpenOCD

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-04-10 10:11:58 +02:00
Mathieu Choplain
87b8074241 boards: st: nucleo_wb07cc: add pyOCD support
Add pyOCD as supported runner for the Nucleo-WB05KZ board, and a note about
pack installation to the board documentation.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-04-10 10:11:58 +02:00
Mathieu Choplain
909dcb592b boards: st: nucleo_wb07cc: make OpenOCD script compatible with Zephyr
The old OpenOCD script was expecting usage of ST's OpenOCD fork, but
the WB07 is already supported as "bluenrg-lp" in upstream OpenOCD and
the Zephyr fork provided in SDK.

Update the script to work properly with these two versions, instead of
requiring usage of ST's OpenOCD fork and scripts to function properly.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-04-10 10:11:58 +02:00
Mathieu Choplain
bf2acb046e boards: st: nucleo_wb05kz: add pyOCD support
Add pyOCD as supported runner for the Nucleo-WB05KZ board, and a note about
pack installation to the board documentation.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-04-10 10:11:58 +02:00
Mathieu Choplain
fabee4190c boards: st: nucleo_wb05kz: make OpenOCD script compatible with Zephyr
The old OpenOCD script was expecting usage of ST's OpenOCD fork, but
the WB05 is already supported as "bluenrg-lps" in upstream OpenOCD and
the Zephyr fork provided in SDK.

Update the script to work properly with these two versions, instead of
requiring usage of ST's OpenOCD fork and scripts to function properly.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-04-10 10:11:58 +02:00
Luca Burelli
a90870da4c cmake: yaml: improve escaping of strings with backslashes and quotes
Switching the intermediate file format from JSON to YAML has a very
significant benefit: the file is now loaded via yaml_load(), which
internally calls Python to parse the file into the JSON format that
CMake expects. This means that the file contents are now automatically
escaped properly for JSON; it is a huge improvement over the previous
implementation, which was escaping everything given as input to
to_yaml().

With the removal of the now-redundant call in to_yaml(), escaping is
applied exactly once per value or list, when it is passed to yaml_set().
This allows to convert the logic in zephyr_string(ESCAPE ...) to a more
robust "escape everything" approach.

These changes fix the handling of strings with backslashes and different
types of quotes passed either directly or via generator expression. The
existing tests are updated to cover these cases.

Two other small changes are made in this commit:

- a small check in internal_yaml_list_append() is removed, as the same
  issue is already detected by the caller yaml_set() logic.

- the to_yaml() function is modified to initialize the YAML output
  variable at the top level, which is the expected behavior. This
  resulted in genex temp files sometimes having duplicate lines.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2025-04-10 10:11:47 +02:00
Luca Burelli
90aa937e3a cmake: yaml: switch to yaml for intermediate file
The intermediate file used to expand the generator expressions is now in
YAML format. This allows for a more robust handling of the data, as the
single quoted strings are a lot easier to escape: inside them every
character is a literal except for two single quotes (which intuitively
map to a literal single quote).

When saving a simple YAML file without genexes, the single quotes in
strings need to be escaped. However, doing so when saving the
intermediate file would make it harder to properly escape them later,
since it could be possible that the expansion of the generator
expressions would introduce new single quotes. For this reason, when
genexes are enabled, the escaping is now done in a single pass inside
the yaml-filter.cmake script.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2025-04-10 10:11:47 +02:00
Luca Burelli
4a50fbf804 cmake: yaml: properly store strings
Store strings in YAML as single-quoted entries to avoid issues with
special characters. This also fixes a quirk with the current test
suite where the quotes in the expected value are filtered out by the
YAML import.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2025-04-10 10:11:47 +02:00
Luca Burelli
f5b3e0adf4 cmake: extensions: (cosmetic) refactor zephyr_string()
This commit refactors the zephyr_string() function to explicitly
show that ESCAPE and SANITIZE are mutually exclusive options and
that SANITIZE joins multiple arguments into a single string before
processing it.

No functional change introduced by this commit.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2025-04-10 10:11:47 +02:00
Luca Burelli
cab474affe cmake: yaml: (cosmetic) avoid referring to file type in variable names
To move away from the JSON/YAML terminology, rename the variables that
refer to the intermediate files to "expanded" and "output" files.

Also, clean up a few "C-style" function calls and a typo in a variable
name in the same files.

No functional change introduced in this commit.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2025-04-10 10:11:47 +02:00
Ryan McClelland
28a7ad4a57 drivers: i3c: add primary controller da property
Add a way to assign the dynamic address for a primary controller. This
is the address that is broadcasted out with the ccc DEFTGTS, and is the
address that secondary controllers use to communicate with the primary
controller.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2025-04-10 10:11:37 +02:00
Pisit Sawangvonganan
7abda99fe3 shell: mqtt: use ring_buf_reset to flush rx_rb
The `sh_mqtt_rx_rb_flush` function was intended to flush `rx_rb` when
get an error return from `mqtt_read_publish_payload_blocking`.
Instead of retrieving values from `rx_rb` one by one, calling
`ring_buf_reset` achieves the same result more efficiently.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-04-09 22:06:05 +02:00
Pisit Sawangvonganan
24dabdd5fb shell: mqtt: optimize module-scoped sh_mqtt variable access
Introduce a local pointer, `struct shell_mqtt *sh`, to minimize access
to the module-scoped `sh_mqtt` variable.
This allows `sh` to be stored in a CPU register, resulting in more
compact code and improved execution efficiency.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-04-09 22:06:05 +02:00
James Roy
285b8ac933 style: edtlib: Use a more efficient expression
Replaced nested loops with a list comprehension
to improve performance. Execution time improved
from 0.0046203136444s to 0.0040774345397s

Signed-off-by: James Roy <rruuaanng@outlook.com>
2025-04-09 22:05:22 +02:00
Christoph Winklhofer
fc37c02eb1 json: improve parsing and serializing of 'float' and 'double'
Up to now, the handling of type float was offloaded to the users of the
JSON utility, with the token JSON_TOK_FLOAT.

Improve handling of floating point types and support the types 'float'
and 'double' in a built-in way so that they can be directly parsed to
and serialized from variables (of type float or double).

The types are serialized in the shortest representation, either as a
decimal number or in scientific notation:
  * float (with JSON_TOK_FLOAT_FP): encoded with maximal 9 digits
  * double (with JSON_TOK_DOUBLE_FP): encoded with maximal 16 digits
  * NaN, Infinity, -Infinity: encoded and decoded as:
    {"nan_val":NaN,"inf_pos":Infinity,"inf_neg":-Infinity}

Enable the floating point functionality with the Kconfig option:
  JSON_LIBRARY_FP_SUPPORT=y

It requires a libc implementation with support for floating point
functions: strtof(), strtod(), isnan() and isinf().

Fixes: #59412
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
2025-04-09 22:05:14 +02:00
Christoph Winklhofer
c7b7ec2faf json: Support floating point values NaN and Infinity for numbers
Add support to decode the special floating point values NaN, Infinity
and -Infinity. For example:
  {"nan_val":NaN,"inf_pos":Infinity,"inf_neg":-Infinity}

Note that this commit is a preparation for the built-in support of
floating point values and these are only accepted when compiled with
the flag -DCONFIG_JSON_LIBRARY_FP_SUPPORT.

Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
2025-04-09 22:05:14 +02:00
Christoph Winklhofer
f07f2da8dc json: support scientific notation for numbers
Add support to decode floating point numbers in scientific notation,
e.g. 3.40282347e+38. Only the lower-case specifier 'e' is allowed.

Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
2025-04-09 22:05:14 +02:00
Luis Ubieda
6feb1c639b tests: spi_loopback: Extend RTIO fallback messages to 5
Loopback test requires this in order to properly execute half
transactions. Otherwise, testsuite fails.

It was overlooked when fixing #85894.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-04-09 21:10:53 +02:00
Sylvio Alves
0e8a324e9f boards: xiao_esp32c6: add multi-core support
ESP32-C6 now supports both HP and LP core app.
This fixes and updates XIAO board to support that as well.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-04-09 21:10:27 +02:00
Sylvio Alves
b1e169f226 boards: esp32c6_devkitc: remove cpp build tests
LP core is not intended to support CPP due to low
footprint. Ignore it.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-04-09 21:10:27 +02:00
Sylvio Alves
b0bb6e1e9c samples: cpp: hello_world: add cpp target tag
Add missing 'cpp' tag to ensure consistent sample tagging.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2025-04-09 21:10:27 +02:00
Håkon Amundsen
76a825c5fa tests: spi_controller_peripheral: fix CTRLSEL conflict
Both EXMIF and SPIS peripherals are claiming GPIO port 6 pin 0, but
with different CTRLSEL values. This will trigger a build error with
nrf-regtool 9.0.0 as it is not possible to apply this configuration
to hardware.

Fix the issue by disabling the EXMIF node that is enabled by default.

Signed-off-by: Håkon Amundsen <haakon.amundsen@nordicsemi.no>
2025-04-09 21:10:19 +02:00
Declan Snyder
4c6883b7ab include: spi.h: Fix documentation oddities
The recent change to spi.h doc merged a bit too early on accident and
some oddities were left over, fix them, including:

- Weird command causing strange broken topics section in output
- spi_iodev_api should probably be hidden, looks strange in its own
  section on the doc output
- Fix return values of transceive based functions to match transceive
  description

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2025-04-09 21:10:08 +02:00
Adam Openshaw
797e03258b drivers: gicv3: fixed typo
fixed typo

Signed-off-by: Adam Openshaw <quic_adamo@quicinc.com>
2025-04-09 21:09:43 +02:00
Adam Openshaw
1146574b67 drivers: gicv3: Add Support for Extended SPI
Added support to gicv3 driver to utilize the
extended SPI MMIO registers introduced in
GICv3.1 for the extended SPI range.

Documentation for the Extended Shared
Peripheral Interrupts extension can be found
in the ARM General Interrupt Controller
Architecture Specification:

https://developer.arm.com/documentation/ihi0069/latest/

Signed-off-by: Adam Openshaw <quic_adamo@quicinc.com>
2025-04-09 21:09:43 +02:00
Adam Openshaw
b664d3a925 drivers: gicv3: clang-format
Formatting files for compliance

Signed-off-by: Adam Openshaw <quic_adamo@quicinc.com>
2025-04-09 21:09:43 +02:00
Anisetti Avinash Krishna
89623fcae4 boards: acrn: acrn: Add support for ADL-n board
Add support to build zephyr to run on ADL-n board
as a VM on ACRN hypervisor.

Signed-off-by: Anisetti Avinash Krishna <anisetti.avinash.krishna@intel.com>
2025-04-09 19:34:22 +02:00
Anisetti Avinash Krishna
a660bcb6b0 boards: acrn: acrn: Updated soc name for acrn_ehl_crb
Updated soc name for acrn_ehl_crb to atom as
CONFIG_ATOM is selected for ACRN_EHL_CRB in
Konfig.acrn_ehl_crb but given soc elkhart_lake
in board.yml

Added common config ACRN_COMMON to enable common
configs of ACRN.

Signed-off-by: Anisetti Avinash Krishna <anisetti.avinash.krishna@intel.com>
2025-04-09 19:34:22 +02:00