diff --git a/drivers/spi/Kconfig.nrfx b/drivers/spi/Kconfig.nrfx index eacdfcc89d7..ac0df652ba3 100644 --- a/drivers/spi/Kconfig.nrfx +++ b/drivers/spi/Kconfig.nrfx @@ -52,15 +52,6 @@ config SPI_0_NRF_SPIS Due to hardware limitations the implementation supports only simple buffers (consisting of one part) located in RAM. -config SPI_0_NRF_ORC - hex "SPI Port 0 over-read character" - depends on SPI_0_NRF_SPI || SPI_0_NRF_SPIM || SPI_0_NRF_SPIS - range 0x00 0xff - default 0xff - help - Over-read character. Character clocked out after an over-read - of the transmit buffer. - config SPI_1_NRF_SPI def_bool HAS_HW_NRF_SPI1 select NRFX_SPI1 @@ -86,15 +77,6 @@ config SPI_1_NRF_SPIS Due to hardware limitations the implementation supports only simple buffers (consisting of one part) located in RAM. -config SPI_1_NRF_ORC - hex "SPI Port 1 over-read character" - depends on SPI_1_NRF_SPI || SPI_1_NRF_SPIM || SPI_1_NRF_SPIS - range 0x00 0xff - default 0xff - help - Over-read character. Character clocked out after an over-read - of the transmit buffer. - config SPI_2_NRF_SPI def_bool HAS_HW_NRF_SPI2 select NRFX_SPI2 @@ -120,15 +102,6 @@ config SPI_2_NRF_SPIS Due to hardware limitations the implementation supports only simple buffers (consisting of one part) located in RAM. -config SPI_2_NRF_ORC - hex "SPI Port 2 over-read character" - depends on SPI_2_NRF_SPI || SPI_2_NRF_SPIM || SPI_2_NRF_SPIS - range 0x00 0xff - default 0xff - help - Over-read character. Character clocked out after an over-read - of the transmit buffer. - config SPI_3_NRF_SPIM def_bool HAS_HW_NRF_SPIM3 select NRFX_SPIM3 @@ -144,15 +117,6 @@ config SPI_3_NRF_SPIS Due to hardware limitations the implementation supports only simple buffers (consisting of one part) located in RAM. -config SPI_3_NRF_ORC - hex "SPI Port 3 over-read character" - depends on SPI_3_NRF_SPIM || SPI_3_NRF_SPIS - range 0x00 0xff - default 0xff - help - Over-read character. Character clocked out after an over-read - of the transmit buffer. - config SPI_3_NRF_RX_DELAY int "SPIM3 MISO sampling delay" depends on SPI_3_NRF_SPIM && (SOC_NRF52833 || SOC_NRF52840) @@ -169,15 +133,6 @@ config SPI_4_NRF_SPIM help Enable nRF SPI Master with EasyDMA on port 4. -config SPI_4_NRF_ORC - hex "SPI Port 4 over-read character" - depends on SPI_4_NRF_SPIM - range 0x00 0xff - default 0xff - help - Over-read character. Character clocked out after an over-read - of the transmit buffer. - config SPI_4_NRF_RX_DELAY int "SPIM4 MISO sampling delay" depends on SPI_4_NRF_SPIM && SOC_NRF5340_CPUAPP diff --git a/drivers/spi/spi_nrfx_spi.c b/drivers/spi/spi_nrfx_spi.c index c7d11b771b8..d8cf39da88f 100644 --- a/drivers/spi/spi_nrfx_spi.c +++ b/drivers/spi/spi_nrfx_spi.c @@ -321,7 +321,6 @@ static int spi_nrfx_pm_action(const struct device *dev, * * - NRFX_SPI_INSTANCE() requires an SoC instance number * - soc-instance-numbered kconfig enables - * - ORC is a SoC-instance-numbered kconfig option instead of a DT property */ #define SPI(idx) DT_NODELABEL(spi##idx) @@ -389,7 +388,7 @@ static int spi_nrfx_pm_action(const struct device *dev, .def_config = { \ SPI_NRFX_SPI_PIN_CFG(idx) \ .ss_pin = NRFX_SPI_PIN_NOT_USED, \ - .orc = CONFIG_SPI_##idx##_NRF_ORC, \ + .orc = SPI_PROP(idx, overrun_character), \ }, \ IF_ENABLED(CONFIG_PINCTRL, \ (.pcfg = PINCTRL_DT_DEV_CONFIG_GET(SPI(idx)),)) \ diff --git a/drivers/spi/spi_nrfx_spim.c b/drivers/spi/spi_nrfx_spim.c index 9962dc9d706..517ff5f1480 100644 --- a/drivers/spi/spi_nrfx_spim.c +++ b/drivers/spi/spi_nrfx_spim.c @@ -572,7 +572,7 @@ static int spim_nrfx_pm_action(const struct device *dev, .def_config = { \ SPI_NRFX_SPIM_PIN_CFG(idx) \ .ss_pin = NRFX_SPIM_PIN_NOT_USED, \ - .orc = CONFIG_SPI_##idx##_NRF_ORC, \ + .orc = SPIM_PROP(idx, overrun_character), \ SPI_NRFX_SPIM_EXTENDED_CONFIG(idx) \ }, \ COND_CODE_1(CONFIG_SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58, \ diff --git a/drivers/spi/spi_nrfx_spis.c b/drivers/spi/spi_nrfx_spis.c index 92f958965ac..f4704d4c0ae 100644 --- a/drivers/spi/spi_nrfx_spis.c +++ b/drivers/spi/spi_nrfx_spis.c @@ -249,7 +249,6 @@ static int init_spis(const struct device *dev, * * - NRFX_SPIS_INSTANCE() requires an SoC instance number * - soc-instance-numbered kconfig enables - * - ORC is a SoC-instance-numbered kconfig option instead of a DT property */ #define SPIS(idx) DT_NODELABEL(spi##idx) @@ -279,7 +278,7 @@ static int init_spis(const struct device *dev, SPI_NRFX_SPIS_PIN_CFG(idx) \ .mode = NRF_SPIS_MODE_0, \ .bit_order = NRF_SPIS_BIT_ORDER_MSB_FIRST, \ - .orc = CONFIG_SPI_##idx##_NRF_ORC, \ + .orc = SPIS_PROP(idx, overrun_character), \ .def = SPIS_PROP(idx, def_char), \ }; \ IF_ENABLED(CONFIG_PINCTRL, ( \ diff --git a/dts/bindings/spi/nordic,nrf-spi-common.yaml b/dts/bindings/spi/nordic,nrf-spi-common.yaml index 651c196a746..5d364e9e191 100644 --- a/dts/bindings/spi/nordic,nrf-spi-common.yaml +++ b/dts/bindings/spi/nordic,nrf-spi-common.yaml @@ -19,6 +19,14 @@ properties: Maximum data rate the SPI peripheral can be driven at, in Hz. This property must be set at SoC level DTS files. + overrun-character: + type: int + default: 0xff + description: | + The overrun character (ORC) is used when all bytes from the TX buffer + are sent, but the transfer continues due to RX. Defaults to 0xff + (line high), the most common value used in SPI transfers. + sck-pin: type: int deprecated: true diff --git a/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.conf b/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.conf index b26e2408748..8d7a6802b0e 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.conf +++ b/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.conf @@ -1,5 +1,3 @@ -CONFIG_SPI_1_NRF_ORC=0x00 - CONFIG_SPI_LOOPBACK_DRV_NAME="SPI_1" CONFIG_SPI_LOOPBACK_CS_GPIO=y CONFIG_SPI_LOOPBACK_CS_CTRL_GPIO_DRV_NAME="GPIO_0" diff --git a/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.overlay b/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.overlay new file mode 100644 index 00000000000..49e1e9ac2de --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nrf51dk_nrf51422.overlay @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2022 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi1 { + overrun-character = <0x00>; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.conf b/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.conf index 10b6dafdb8b..9ba0c218690 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.conf +++ b/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.conf @@ -1,4 +1,3 @@ -CONFIG_SPI_3_NRF_ORC=0x00 CONFIG_SPI_3_NRF_RX_DELAY=1 CONFIG_SPI_LOOPBACK_DRV_NAME="SPI_3" diff --git a/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.overlay b/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000..9201308c1ce --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2022 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi3 { + overrun-character = <0x00>; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.conf b/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.conf index b26e2408748..8d7a6802b0e 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.conf +++ b/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.conf @@ -1,5 +1,3 @@ -CONFIG_SPI_1_NRF_ORC=0x00 - CONFIG_SPI_LOOPBACK_DRV_NAME="SPI_1" CONFIG_SPI_LOOPBACK_CS_GPIO=y CONFIG_SPI_LOOPBACK_CS_CTRL_GPIO_DRV_NAME="GPIO_0" diff --git a/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.overlay b/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.overlay new file mode 100644 index 00000000000..49e1e9ac2de --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nrf52dk_nrf52832.overlay @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2022 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi1 { + overrun-character = <0x00>; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.conf b/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.conf index 9aa6706c4c4..f118357c19d 100644 --- a/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.conf +++ b/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.conf @@ -1,5 +1,3 @@ -CONFIG_SPI_3_NRF_ORC=0x00 - CONFIG_SPI_LOOPBACK_DRV_NAME="SPI_3" CONFIG_SPI_LOOPBACK_CS_GPIO=y CONFIG_SPI_LOOPBACK_CS_CTRL_GPIO_DRV_NAME="GPIO_0" diff --git a/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.overlay b/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.overlay new file mode 100644 index 00000000000..9201308c1ce --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/nrf9160dk_nrf9160.overlay @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2022 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi3 { + overrun-character = <0x00>; +};