Skip to content

Commit a7e1298

Browse files
committed
softperipheral: rev 7262e00b5f72fd04b8e0c9b92b743d907b9a106b
Using new naming convention: nrfx_qspi2 -> nrf_sqspi Using sQSPI 0.2.0 firmware (which now uses PIC) Deleting old driver files Signed-off-by: Luis David Lopez <[email protected]>
1 parent 77d5d5e commit a7e1298

24 files changed

+3664
-2905
lines changed

softperipheral/CHANGELOG.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,15 @@ See the following list of changes:
2020

2121
* The first implementation of Soft Peripheral sQSPI for the nRF54L15 and nRF54H20 SoCs.
2222
For details, see the :ref:`sqspi_changelog` page.
23+
24+
nRF Connect SDK v3.1.0
25+
**********************
26+
27+
This is a release that focuses on improving existing soft peripherals.
28+
See the following list of changes:
29+
30+
31+
* Bug fixes:
32+
33+
* Fixed higher frequency transfers for Soft Peripheral sQSPI for the nRF54L15 and nRF54H20 SoCs.
34+
For details, see the :ref:`sqspi_changelog` page.

softperipheral/doc/introduction.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,20 @@ The following table shows which soft peripherals and their versions are supporte
4040
* - soft peripheral
4141
- Hardware platform
4242
- Versions
43+
- NCS version
4344
* - sQSPI
4445
- nRF54L15 SoC
4546
- v0.1.0
47+
- v3.0.0
48+
* -
49+
-
50+
- v0.2.0
51+
- v3.1.0
4652
* - sQSPI
4753
- nRF54H20 SoC
4854
- v0.1.0
55+
- v3.0.0
56+
* -
57+
-
58+
- v0.2.0
59+
- v3.1.0 (experimental)

softperipheral/doc/sQSPI/CHANGELOG.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,15 @@ This is an initial release.
2020
* Configurable :ref:`clock phase and polarity<sqspi_features_clock_phase>`.
2121
* :ref:`Delayed read sampling <sqspi_features_read_sampling>`.
2222
* Support for :ref:`various packet formats <sqspi_features_packet_formats>`.
23+
24+
v0.2.0
25+
******
26+
27+
This is an improvement release.
28+
29+
* Added the following for nRF54L15 devices:
30+
31+
* Support for preparing (holding) transfers.
32+
* Higher speed transfers are now supported (>=33 MHz) by using GPIOHSPADCTL.
33+
* Position Independent Code for more flexibility when placing the firmware.
34+
* Initial support to use with displays.

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_v0_2_0.rst
65+
nrf54H20_porting_v0_2_0.rst
6666
timing.rst
6767
CHANGELOG.rst
6868
limitations.rst
69-
api_reference_v0_1_0.rst
69+
api_reference_v0_2_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+
v0.2.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_v0_2_0.rst

Lines changed: 26 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_v0.2.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,27 @@ RAM configuration
226227
*****************
227228

228229
The sQSPI Soft Peripheral operates from RAM.
230+
231+
.. note::
232+
Starting from sQSPI 0.2.0, PIC (Position Idependent Code is supported), which means that an application will decide where to load the SP firmware.
233+
This is start address is defined in :file:`nrf_config_sqspi.h` and set in :file:`nrfx_config.h`
234+
229235
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.
230236
This table details the memory region, it should be non-cacheable:
231237

232238
.. list-table:: RAM Configuration Table
233239
:widths: auto
234240
:header-rows: 1
235241

236-
* - Start Address
242+
* -
243+
- Address offset
237244
- Size
238-
* - 0x2f890000
245+
* - sQSPI Firmware
246+
- `NRF_SQSPI_SP_FIRMWARE_ADDR`
239247
- 0x4000
248+
* - Context Saving
249+
- 0x2f890000
250+
- 0x200 (but the entire block should be retained)
240251

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

0 commit comments

Comments
 (0)