Re: [PATCH 4/6] spi: spi-fsl-dspi: Add support for LS1028A

From: Vladimir Oltean
Date: Mon Mar 09 2020 - 14:51:25 EST


On Mon, 9 Mar 2020 at 20:38, Michael Walle <michael@xxxxxxxx> wrote:
>
> Am 2020-03-09 15:56, schrieb Vladimir Oltean:
> > From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> >
> > This is similar to the DSPI instantiation on LS1028A, except that:
> > - The A-011218 erratum has been fixed, so DMA works
> > - The endianness is different, which has implications on XSPI mode
> >
> > Some benchmarking with the following command:
> >
> > spidev_test --device /dev/spidev2.0 --bpw 8 --size 256 --cpha --iter
> > 10000000 --speed 20000000
> >
> > shows that in DMA mode, it can achieve around 2400 kbps, and in XSPI
> > mode, the same command goes up to 4700 kbps. This is somewhat to be
> > expected, since the DMA buffer size is extremely small at 8 bytes, the
> > winner becomes whomever can prepare the buffers for transmission
> > quicker, and DMA mode has higher overhead there. So XSPI FIFO mode has
> > been chosen as the operating mode for this chip.
> >
> > Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> > ---
> > drivers/spi/spi-fsl-dspi.c | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
> > index 5624b9ee77db..264d184e7296 100644
> > --- a/drivers/spi/spi-fsl-dspi.c
> > +++ b/drivers/spi/spi-fsl-dspi.c
> > @@ -131,6 +131,7 @@ struct fsl_dspi_devtype_data {
> > enum {
> > LS1021A,
> > LS1012A,
> > + LS1028A,
> > LS1043A,
> > LS1046A,
> > LS2080A,
> > @@ -163,6 +164,14 @@ static const struct fsl_dspi_devtype_data
> > devtype_data[] = {
> > .pushr_cmd = 0,
> > .pushr_tx = 2,
> > },
> > + [LS1028A] = {
> > + .trans_mode = DSPI_DMA_MODE,
>
> shouldn't this be DSPI_XSPI_MODE according to your cover letter?
>
> -michael
>

Yes, sorry, I forgot to change it back after testing it both ways.

> > + .dma_bufsize = 8,
> > + .max_clock_factor = 8,
> > + .fifo_size = 4,
> > + .pushr_cmd = 2,
> > + .pushr_tx = 0,
> > + },
> > [LS1043A] = {
> > /* Has A-011218 DMA erratum */
> > .trans_mode = DSPI_XSPI_MODE,
> > @@ -1113,6 +1122,9 @@ static const struct of_device_id
> > fsl_dspi_dt_ids[] = {
> > }, {
> > .compatible = "fsl,ls1012a-dspi",
> > .data = &devtype_data[LS1012A],
> > + }, {
> > + .compatible = "fsl,ls1028a-dspi",
> > + .data = &devtype_data[LS1028A],
> > }, {
> > .compatible = "fsl,ls1043a-dspi",
> > .data = &devtype_data[LS1043A],