Skip to content

Conversation

@nordic-krch
Copy link
Contributor

PR adds support for SPIS120 instance in dts and spi driver.

zephyrproject-rtos/zephyr#86968

@nordic-krch nordic-krch force-pushed the ncs/add_spis120_zephyrupstream branch from 4f3a749 to b6a6770 Compare March 12, 2025 08:22
@nordic-krch nordic-krch force-pushed the ncs/add_spis120_zephyrupstream branch 3 times, most recently from 5264db4 to bbf2e51 Compare March 25, 2025 12:54
bjarki-andreasen and others added 7 commits March 26, 2025 07:43
Implement PM device runtime in nrx spis device driver.

Signed-off-by: Bjarki Arge Andreasen <[email protected]>
(cherry picked from commit 7e93016)
Add a new function to check if a nodelabel exists in devicetree.

Signed-off-by: Gerard Marull-Paretas <[email protected]>
(cherry picked from commit b99ae6c)
As of today, nrfx components are selectable depending if devicetree has
a certain compatible or not, and in case of IP that can operate in
multiple modes, nodelabel+compatible. An example of the later is:

```
config NRFX_SPI0
    bool "SPI0 driver instance"
    depends on $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPI))
    select NRFX_SPI

config NRFX_SPIM0
    bool "SPIM0 driver instance"
    depends on $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPIM))
    select NRFX_SPIM

config NRFX_SPIS0
    bool "SPIS0 driver instance"
    depends on $(dt_nodelabel_has_compat,spi0,$(DT_COMPAT_NORDIC_NRF_SPIS))
    select NRFX_SPIS
```

These symbols are later selected by e.g. SPI driver if `spi0` node is
enabled. While this works in the Zephyr context, it can be a problem in
applications using nrfx directly in the application layer, unless they
tweak devicetree. For example, if devicetree `spi0` node defaults to
`compatible = "nordic,nrf-spim"`, NRFX_SPI0 or NRFX_SPIS0 won't be
selectable, but an application using nrfx directly doesn't really care
about what is defined in devicetree as it is effectively bypassing it.
It just wants to select e.g. `CONFIG_NRFX_SPI0=y` and forget about the
rest.

This patch fixes this problem by just checking for the existence of
certain nodelabels.

Signed-off-by: Gerard Marull-Paretas <[email protected]>
(cherry picked from commit f23b4fd)
It is defined as spis120 rather than spi120,
because spi120 is already used for SPIM120 hardware instance,
but their base address is different.

Signed-off-by: Nikodem Kastelik <[email protected]>
(cherry picked from commit d8506af)
…time PM

Extend runtime PM to support fast instance (spis120) which requires
additional action in suspend/resume phase.

Signed-off-by: Krzysztof Chruściński <[email protected]>
(cherry picked from commit 125e5d8)
SPIS120 is a SPI slave device with >8 MHz SCK compatibility.

Signed-off-by: Nikodem Kastelik <[email protected]>
(cherry picked from commit f13c8a5)
New test case is for building an application simultaneously
utilizing SPIM120, SPIM120, SPIS120 and SPIS13x.

Signed-off-by: Nikodem Kastelik <[email protected]>
(cherry picked from commit 8b77098)
@nordic-krch nordic-krch force-pushed the ncs/add_spis120_zephyrupstream branch from bbf2e51 to 15a2ac1 Compare March 26, 2025 06:43
@sonarqubecloud
Copy link

@nordicjm nordicjm merged commit f4a7530 into nrfconnect:main Mar 27, 2025
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants