Hi Thank you Benjamin for the patch. I have tested the patch and is works fine. Best regards Stefan Bigler Am 2023-11-26T14:19:56.000+01:00 hat Benjamin Bigler <benjamin@xxxxxxxxxx> geschrieben: > Hi > > I did some debugging and I think the problem is that in this case bits_per_word is 8. So in > spi_imx_dma_configure the buswidth is set to DMA_SLAVE_BUSWIDTH_1_BYTE. But in > mx51_ecspi_prepare_transfer the BURST_LENGTH is now set to (spi_imx->count * spi_imx->bits_per_word > - 1) > before 15a6af94a2779d5dfb42ee4bfac858ea8e964a3f it was (spi_imx->bits_per_word - 1). Now the spi > transmits 4 byte per byte except for the first word. I added the following patch and it worked again > > diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c > index 498e35c8db2c..f514966e2ada 100644 > --- a/drivers/spi/spi-imx.c > +++ b/drivers/spi/spi-imx.c > @@ -659,11 +659,22 @@ static int mx51_ecspi_prepare_transfer(struct spi_imx_data *spi_imx, > ctrl |= (spi_imx->target_burst * 8 - 1) > << MX51_ECSPI_CTRL_BL_OFFSET; > else { > - if (spi_imx->count >= 512) > - ctrl |= 0xFFF << MX51_ECSPI_CTRL_BL_OFFSET; > - else > - ctrl |= (spi_imx->count * spi_imx->bits_per_word - 1) > + if (spi_imx->usedma) > + ctrl |= (spi_imx->bits_per_word * > + spi_imx_bytes_per_word( > + spi_imx->bits_per_word) - > + 1) > << MX51_ECSPI_CTRL_BL_OFFSET; > + else { > + if (spi_imx->count >= MX51_ECSPI_CTRL_MAX_BURST) > + ctrl |= (MX51_ECSPI_CTRL_MAX_BURST - 1) > + << MX51_ECSPI_CTRL_BL_OFFSET; > + else > + ctrl |= (spi_imx->count * > + spi_imx->bits_per_word - > + 1) > + << MX51_ECSPI_CTRL_BL_OFFSET; > + } > } > > /* set clock speed */ > > Best regards, Benjamin Bigler