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],