From cd78028e15308a80a730b4e634710f2aeb473949 Mon Sep 17 00:00:00 2001 From: Manuel Arguelles Date: Thu, 6 Jul 2023 17:28:20 -0300 Subject: [PATCH] drivers: spi: mcux_lpspi: allow to configure data pins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add binding properties to allow configuring the direction of data pins SDI and SDO. Signed-off-by: Manuel Argüelles --- drivers/spi/spi_mcux_lpspi.c | 4 ++++ dts/bindings/spi/nxp,imx-lpspi.yaml | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi_mcux_lpspi.c b/drivers/spi/spi_mcux_lpspi.c index 7cca7947cb9..2ddee4a2b09 100644 --- a/drivers/spi/spi_mcux_lpspi.c +++ b/drivers/spi/spi_mcux_lpspi.c @@ -33,6 +33,7 @@ struct spi_mcux_config { uint32_t sck_pcs_delay; uint32_t transfer_delay; const struct pinctrl_dev_config *pincfg; + lpspi_pin_config_t data_pin_config; }; #ifdef CONFIG_SPI_MCUX_LPSPI_DMA @@ -212,6 +213,8 @@ static int spi_mcux_configure(const struct device *dev, master_config.lastSckToPcsDelayInNanoSec = config->sck_pcs_delay; master_config.betweenTransferDelayInNanoSec = config->transfer_delay; + master_config.pinCfg = config->data_pin_config; + if (!device_is_ready(config->clock_dev)) { LOG_ERR("clock control device not ready"); return -ENODEV; @@ -638,6 +641,7 @@ static const struct spi_driver_api spi_mcux_driver_api = { DT_INST_NODE_HAS_PROP(n, transfer_delay), \ DT_INST_PROP(n, transfer_delay)), \ .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ + .data_pin_config = DT_INST_ENUM_IDX(n, data_pin_config),\ }; \ \ static struct spi_mcux_data spi_mcux_data_##n = { \ diff --git a/dts/bindings/spi/nxp,imx-lpspi.yaml b/dts/bindings/spi/nxp,imx-lpspi.yaml index 1a830d17bf1..16b309a0812 100644 --- a/dts/bindings/spi/nxp,imx-lpspi.yaml +++ b/dts/bindings/spi/nxp,imx-lpspi.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018, NXP +# Copyright (c) 2018,2023 NXP # SPDX-License-Identifier: Apache-2.0 description: NXP i.MX LPSPI controller @@ -34,3 +34,15 @@ properties: description: | Delay in nanoseconds from the chip select deassert to the next chip select assert. If not set, the minimum supported delay is used. + + data-pin-config: + type: string + enum: + - "sdi-in,sdo-out" + - "sdi-in,sdi-out" + - "sdo-in,sdo-out" + - "sdo-in,sdi-out" + default: "sdi-in,sdo-out" + description: | + Configures which pins (SDO and SDI) are used for input and output data + during single bit transfers.