From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mugunthan V N Date: Sun, 6 Dec 2015 11:33:23 +0530 Subject: [U-Boot] [PATCH v3 05/16] spi: Add support for dual and quad mode In-Reply-To: References: <1447916745-1233-1-git-send-email-mugunthanvnm@ti.com> <1447916745-1233-6-git-send-email-mugunthanvnm@ti.com> Message-ID: <5663CFAB.3070207@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thursday 03 December 2015 09:37 PM, Jagan Teki wrote: > On 19 November 2015 at 12:35, Mugunthan V N wrote: >> spi bus can support dual and quad wire data transfers for tx and >> rx. So defining dual and quad modes for both tx and rx. Also add >> support to parse bus width used for spi tx and rx transfers. >> >> Signed-off-by: Mugunthan V N >> Reviewed-by: Simon Glass >> Reviewed-by: Tom Rini >> --- >> drivers/spi/spi-uclass.c | 33 +++++++++++++++++++++++++++++++++ >> include/spi.h | 4 ++++ >> 2 files changed, 37 insertions(+) >> >> diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c >> index 58388ef..62d8da7 100644 >> --- a/drivers/spi/spi-uclass.c >> +++ b/drivers/spi/spi-uclass.c >> @@ -349,6 +349,7 @@ int spi_slave_ofdata_to_platdata(const void *blob, int node, >> struct dm_spi_slave_platdata *plat) >> { >> int mode = 0; >> + int value; >> >> plat->cs = fdtdec_get_int(blob, node, "reg", -1); >> plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency", 0); >> @@ -360,6 +361,38 @@ int spi_slave_ofdata_to_platdata(const void *blob, int node, >> mode |= SPI_CS_HIGH; >> if (fdtdec_get_bool(blob, node, "spi-half-duplex")) >> mode |= SPI_PREAMBLE; >> + >> + /* Device DUAL/QUAD mode */ >> + value = fdtdec_get_uint(blob, node, "spi-tx-bus-width", 1); >> + switch (value) { >> + case 1: >> + break; >> + case 2: >> + mode |= SPI_TX_DUAL; >> + break; >> + case 4: >> + mode |= SPI_TX_QUAD; >> + break; >> + default: >> + error("spi-tx-bus-width %d not supported\n", value); >> + break; >> + } >> + >> + value = fdtdec_get_uint(blob, node, "spi-rx-bus-width", 1); >> + switch (value) { >> + case 1: >> + break; >> + case 2: >> + mode |= SPI_RX_DUAL; >> + break; >> + case 4: >> + mode |= SPI_RX_QUAD; >> + break; >> + default: >> + error("spi-rx-bus-width %d not supported\n", value); >> + break; >> + } >> + > > I think these are similar to SPI TX/RX operation modes in spi.h and I > understand this is similar approach as with Linux but before this we > need to do many changes on u-boot as well. I agree that op_mode_rx/op_mode_tx can be used. I just tried to follow Linux way of implementation to have consistency between Linux and U-Boot. If you feel that using op_mode_(rx/tx) will be the best approach, I can repost the series with the changes. Regards Mugunthan V N