Skip to content

Commit 44ed23d

Browse files
committed
softperipheral: rev 0fbb381d9c50ae88c6f08cc2569334f74bc204f0
Using new naming convention: nrfx_qspi2 -> nrf_sqspi Using sQSPI 1.0.0 firmware (which now uses PIC) Deleting old driver files See CHANGELOG for more details Signed-off-by: Luis David Lopez <[email protected]>
1 parent 77d5d5e commit 44ed23d

24 files changed

+3712
-2934
lines changed

softperipheral/CHANGELOG.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ Changelog
99

1010
All the notable changes to this project are documented on this page.
1111

12+
nRF Connect SDK v3.1.0
13+
**********************
14+
15+
This is a release that focuses on improving existing soft peripherals.
16+
See the following list of changes:
17+
18+
19+
* Bug fixes:
20+
21+
* Fixed higher frequency transfers for Soft Peripheral sQSPI for the nRF54L15 and nRF54H20 SoCs.
22+
For details, see the :ref:`sqspi_changelog` page.
23+
1224
nRF Connect SDK v3.0.0
1325
**********************
1426

softperipheral/doc/introduction.rst

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ The following table shows which soft peripherals and their versions are supporte
3737
:widths: auto
3838
:header-rows: 1
3939

40-
* - soft peripheral
40+
* - Soft peripheral
4141
- Hardware platform
42-
- Versions
42+
- Version
4343
* - sQSPI
44-
- nRF54L15 SoC
45-
- v0.1.0
46-
* - sQSPI
47-
- nRF54H20 SoC
48-
- v0.1.0
44+
- - nRF54L15 SoC
45+
- nRF54H20 SoC
46+
- - nRF54L15 SoC:
47+
- v0.1.0 with NCS v3.0.0
48+
- v1.0.0 with NCS v3.1.0
49+
- nRF54H20 SoC:
50+
- v0.1.0 with NCS v3.0.0
51+
- v1.0.0 with NCS v3.1.0 (experimental)

softperipheral/doc/sQSPI/CHANGELOG.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,23 @@ sQSPI changelog
99

1010
All the notable changes to sQSPI are documented on this page.
1111

12+
v1.0.0
13+
******
14+
15+
See the list of changes for the current release.
16+
17+
.. note::
18+
This release introduces a change in the API, updating the naming convention from ``nrfx_qspi2`` to ``nrf_sqspi`` prefix, which breaks backward compatibility.
19+
20+
* Added:
21+
22+
* The following for nRF54L15 devices:
23+
24+
* Support for preparing (holding) transfers.
25+
* Higher speed transfers are now supported (>=33 MHz) by using GPIOHSPADCTL.
26+
* Position Independent Code for more flexibility when placing the firmware.
27+
* Initial support to use with displays.
28+
1229
v0.1.0
1330
******
1431

@@ -20,3 +37,4 @@ This is an initial release.
2037
* Configurable :ref:`clock phase and polarity<sqspi_features_clock_phase>`.
2138
* :ref:`Delayed read sampling <sqspi_features_read_sampling>`.
2239
* Support for :ref:`various packet formats <sqspi_features_packet_formats>`.
40+

softperipheral/doc/sQSPI/README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ To better understand the capabilities and limitations of sQSPI, see its comparis
6161
:caption: Subpages:
6262

6363
features.rst
64-
nrf54L15_porting_v0_1_0.rst
65-
nrf54H20_porting_v0_1_0.rst
64+
nrf54L15_porting_v1_0_0.rst
65+
nrf54H20_porting_v1_0_0.rst
6666
timing.rst
6767
CHANGELOG.rst
6868
limitations.rst
69-
api_reference_v0_1_0.rst
69+
api_reference_v1_0_0.rst
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
API Reference
22
#############
33

4-
.. doxygengroup:: nrfx_qspi2
4+
.. doxygengroup:: nrf_sqspi

softperipheral/doc/sQSPI/features.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ The following features are supported:
9999
* Number of SCLK cycles for dummy data
100100
* Number of bytes for data
101101

102-
For details on how to adjust these values, see the :c:struct:`nrfx_qspi2_xfer_t` struct.
102+
For details on how to adjust these values, see the :c:struct:`nrf_sqspi_xfer_t` struct.
103103

104104
* Dual lane distribution
105105

softperipheral/doc/sQSPI/limitations.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ When working with sQSPI, you should be aware of the following limitations.
99
:local:
1010
:depth: 2
1111

12-
v0.1.0
12+
v1.0.0
1313
******
1414

1515
Refer to the following detailed descriptions of current limitations:
1616

1717
* sQSPI does not support slave mode operations; it can only operate as a controller (master).
1818
* The sQSPI support for SPI half-duplex setup is implemented but not tested.
19-
* sQSPI SPI modes 1,2, and 3 (see the :c:var:`nrfx_qspi2_dev_cfg_t.spi_cpolpha` configuration structure) may present artifacts (delays and clock stretching) on the last SCLK cycle during a transfer.
19+
* sQSPI SPI modes 1,2, and 3 (see the :c:var:`nrf_sqspi_dev_cfg_t.spi_cpolpha` configuration structure) may present artifacts (delays and clock stretching) on the last SCLK cycle during a transfer.
2020
* The nrfx API for sQSPI does not support configuring the use of the positive or negative edge of SCLK delayed read sampling.
21-
* sQSPI employs the :c:var:`nrfx_qspi2_dev_cfg_t.sample_delay_cyc` parameter as an offset to FLPR's base clock counter , not SLCK clock cycles (see the :c:struct:`nrfx_qspi2_dev_cfg_t` struct).
22-
* sQSPI :c:var:`nrfx_qspi2_dev_cfg_t.sample_delay_cyc` has a limit:
21+
* sQSPI employs the :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc` parameter as an offset to FLPR's base clock counter , not SLCK clock cycles (see the :c:struct:`nrf_sqspi_dev_cfg_t` struct).
22+
* sQSPI :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc` has a limit:
2323

2424
.. math::
25-
nrfx\_qspi2\_dev\_cfg\_t.sample\_delay\_cyc <= \frac{FLPR_base_freq}{2*nrfx\_qspi2\_dev\_cfg\_t.sck\_freq\_khz} - 1
25+
nrf\_sqspi\_dev\_cfg\_t.sample\_delay\_cyc <= \frac{FLPR_{base\_freq}}{2*nrf\_sqspi\_dev\_cfg\_t.sck\_freq\_khz} - 1
2626
2727
* Implementation of sQSPI quad or dual lane for command transmission (for example, ``2_2_2`` and ``4_4_4`` modes) is implemented but has not been tested.
28-
* sQSPI does not support a configurable pin for the CSN line; only **PIN 5** is supported (see :c:var:`nrfx_qspi2_dev_cfg_t.csn_pin`).
28+
* sQSPI does not support a configurable pin for the CSN line; only **PIN 5** is supported (see :c:var:`nrf_sqspi_dev_cfg_t.csn_pin`).

softperipheral/doc/sQSPI/nrf54H20_porting_v0_1_0.rst renamed to softperipheral/doc/sQSPI/nrf54H20_porting_v1_0_0.rst

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@ This structure shows the relevant files and directories in the `sdk-nrfxlib`_ re
3131
│ │ └── nrf_qspi2.h
3232
│ ├── nrf54h20
3333
│ │ ├── sqspi_firmware.h
34-
│ │ ├── sqspi_firmware_v0.1.0.h
34+
│ │ ├── sqspi_firmware_v1.0.0.h
3535
│ │ └── ...
36+
│ ├── nrf_config_sqspi.h
3637
│ ├── nrf_sp_qspi.h
37-
│ ├── nrfx_config_qspi2.h
38-
│ ├── nrfx_qspi2.h
38+
│ ├── nrf_sqspi.h
3939
└── src
4040
└── nrfx_qspi2.c
4141
4242
.. note::
43-
The main interface for sQSPI is the :file:`nrfx_qspi2.h` file.
43+
The main interface for sQSPI is the :file:`nrf_sqspi.h` file.
4444

4545
Header files
4646
============
@@ -69,18 +69,19 @@ The following list is a detailed breakdown of the necessary paths:
6969
#ifndef NRFX_CONFIG_H__
7070
#define NRFX_CONFIG_H__
7171
72-
#include "softperipheral_regif.h" // To Resolve correct VPR IRQn for the SoC.
73-
#define nrfx_qspi2_irq_handler SP_VPR_IRQHandler
74-
75-
#define NRFX_QSPI2_ENABLED (1)
76-
#define NRFX_QSPI2_MAX_NUM_DATA_LINES (4)
72+
#define nrf_sqspi_irq_handler SP_VPR_IRQHandler
73+
74+
#define NRF_SQSPI_ENABLED (1)
75+
#define NRF_SQSPI_MAX_NUM_DATA_LINES (4)
76+
#define NRF_SQSPI_SP_FIRMWARE_ADDR 0x2f890200
77+
//^ This address is user defined, the location for the sQSPI firmware
7778
7879
#endif // NRFX_CONFIG_H__
7980
8081
Compiling source files
8182
======================
8283

83-
For an sQSPI application to function properly, you must compile the driver implementation from the source file :file:`nrfx_qspi2.c`.
84+
For an sQSPI application to function properly, you must compile the driver implementation from the source file :file:`nrf_sqspi.c`.
8485

8586
Application core and FLPR configuration
8687
***************************************
@@ -202,7 +203,7 @@ The following options are available, assuming that the FLPR core has access to t
202203

203204
.. note::
204205
sQSPI driver provides a default GPIO configuration and multiplexing.
205-
You can apply this setup by setting :c:var:`nrfx_qspi2_cfg_t.skip_gpio_cfg` and :c:var:`nrfx_qspi2_cfg_t.skip_pmux_cfg` to ``false``.
206+
You can apply this setup by setting :c:var:`nrf_sqspi_cfg_t.skip_gpio_cfg` and :c:var:`nrf_sqspi_cfg_t.skip_pmux_cfg` to ``false``.
206207

207208
Configuring pins
208209
================
@@ -211,9 +212,9 @@ In some cases you might have to modify the sQSPI driver configuration.
211212
For example, when changing pin drive strength to guarantee signal integrity for a new PCB design.
212213
You must address these cases on the sQSPI application code:
213214

214-
* If you set the :c:var:`nrfx_qspi2_cfg_t.skip_gpio_cfg` variable to ``true``, the GPIO configuration is not managed by the sQSPI driver and it must be manually handled by the application.
215+
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_gpio_cfg` variable to ``true``, the GPIO configuration is not managed by the sQSPI driver and it must be manually handled by the application.
215216
This is a requirement for the nRF54H20 device.
216-
* If you set the :c:var:`nrfx_qspi2_cfg_t.skip_pmux_cfg` variable to ``true``, the GPIO multiplexing is not managed by the sQSPI driver and it must be manually handled by the application.
217+
* If you set the :c:var:`nrf_sqspi_cfg_t.skip_pmux_cfg` variable to ``true``, the GPIO multiplexing is not managed by the sQSPI driver and it must be manually handled by the application.
217218
This is a requirement for the nRF54H20 device.
218219

219220
GPIO multiplexing must be handled by setting the correct ``CTRLSEL`` value in UICR.
@@ -226,17 +227,28 @@ RAM configuration
226227
*****************
227228

228229
The sQSPI Soft Peripheral operates from RAM.
230+
231+
.. note::
232+
Starting from sQSPI 1.0.0, Position Independent Code (PIC) is supported.
233+
This allows an application to determine where to load the Soft Peripheral firmware.
234+
The start address default value is defined in the :file:`nrf_config_sqspi.h` file but you can override it, for example, in :file:`nrfx_config.h`.
235+
229236
Your build environment must reserve the required RAM and ensure that it is readable and writable by both the application core and the FLPR core.
230237
This table details the memory region, it should be non-cacheable:
231238

232239
.. list-table:: RAM Configuration Table
233240
:widths: auto
234241
:header-rows: 1
235242

236-
* - Start Address
243+
* - Component
244+
- Address offset
237245
- Size
238-
* - 0x2f890000
246+
* - sQSPI firmware
247+
- `NRF_SQSPI_SP_FIRMWARE_ADDR`
239248
- 0x4000
249+
* - Context saving
250+
- 0x2f890000
251+
- 0x200 (but the entire block should be retained)
240252

241253
The build environment described in the :ref:`nrf54h20_porting_guide_code` section must comply with these requirements.
242254
This includes proper settings in linker scripts, device tree specifications (DTS), and resource allocation.

0 commit comments

Comments
 (0)