On 19 November 2015 at 12:35, Mugunthan V N <mugunthan...@ti.com> 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 <mugunthan...@ti.com> > Reviewed-by: Simon Glass <s...@chromium.org> > Reviewed-by: Tom Rini <tr...@konsulko.com> > --- > 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. > plat->mode = mode; > > return 0; > diff --git a/include/spi.h b/include/spi.h > index b4d2723..40dbb4d 100644 > --- a/include/spi.h > +++ b/include/spi.h > @@ -23,6 +23,10 @@ > #define SPI_LOOP 0x20 /* loopback mode */ > #define SPI_SLAVE 0x40 /* slave mode */ > #define SPI_PREAMBLE 0x80 /* Skip preamble > bytes */ > +#define SPI_TX_DUAL 0x100 /* transmit with 2 > wires */ > +#define SPI_TX_QUAD 0x200 /* transmit with 4 > wires */ > +#define SPI_RX_DUAL 0x400 /* receive with 2 > wires */ > +#define SPI_RX_QUAD 0x800 /* receive with 4 > wires */ > > /* SPI transfer flags */ > #define SPI_XFER_BEGIN 0x01 /* Assert CS before transfer */ > -- > 2.6.2.280.g74301d6 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot -- Jagan | openedev. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot