diff mbox series

[1/1] spi-mxs: Fix chipselect glitch

Message ID 20240201131540.3dlqoxlrrbzshz7w@runtux.com (mailing list archive)
State New, archived
Headers show
Series [1/1] spi-mxs: Fix chipselect glitch | expand

Commit Message

Ralf Schlatterbeck Feb. 1, 2024, 1:15 p.m. UTC
There was a change in the mxs-dma engine that uses a new custom flag.
The change was not applied to the mxs spi driver.
This results in chipselect being deasserted too early.
This fixes the chipselect problem by using the new flag in the mxs-spi
driver.

Fixes: ceeeb99cd821 ("dmaengine: mxs: rename custom flag")
Signed-off-by: Ralf Schlatterbeck <rsc@runtux.com>
---
For oscilloscope screenshots and a verbose explanation see my blog post
at https://blog.runtux.com/posts/2024/02/01/

 drivers/spi/spi-mxs.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Marc Kleine-Budde Feb. 1, 2024, 3:38 p.m. UTC | #1
On 01.02.2024 14:15:40, Ralf Schlatterbeck wrote:
> There was a change in the mxs-dma engine that uses a new custom flag.
> The change was not applied to the mxs spi driver.
> This results in chipselect being deasserted too early.
> This fixes the chipselect problem by using the new flag in the mxs-spi
> driver.
> 
> Fixes: ceeeb99cd821 ("dmaengine: mxs: rename custom flag")
> Signed-off-by: Ralf Schlatterbeck <rsc@runtux.com>
> ---
> For oscilloscope screenshots and a verbose explanation see my blog post
> at https://blog.runtux.com/posts/2024/02/01/
> 
>  drivers/spi/spi-mxs.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c
> index 1bf080339b5a..a296050c8bd3 100644
> --- a/drivers/spi/spi-mxs.c
> +++ b/drivers/spi/spi-mxs.c
> @@ -39,6 +39,7 @@
>  #include <linux/spi/spi.h>
>  #include <linux/spi/mxs-spi.h>
>  #include <trace/events/spi.h>
> +#include <linux/dma/mxs-dma.h>
>  
>  #define DRIVER_NAME		"mxs-spi"
>  
> @@ -251,8 +252,9 @@ static int mxs_spi_txrx_dma(struct mxs_spi *spi,
>  
>  		desc = dmaengine_prep_slave_sg(ssp->dmach,
>  				&dma_xfer[sg_count].sg, 1,
> -				(flags & TXRX_WRITE) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM,
> -				DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
> +				(flags & TXRX_WRITE)
> +				? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM,
> +				DMA_PREP_INTERRUPT | MXS_DMA_CTRL_WAIT4END);

nitpick: Please omit the line break change from this patch.

Marc
Ralf Schlatterbeck Feb. 1, 2024, 4:30 p.m. UTC | #2
On Thu, Feb 01, 2024 at 04:38:38PM +0100, Marc Kleine-Budde wrote:
> 
> nitpick: Please omit the line break change from this patch.

Thanks for the quick feedback!
I'll make a v2 when tomorrow there are no further comments.

Thanks
Ralf
Stefan Wahren Feb. 1, 2024, 5:56 p.m. UTC | #3
Am 01.02.24 um 14:15 schrieb Ralf Schlatterbeck:
> There was a change in the mxs-dma engine that uses a new custom flag.
> The change was not applied to the mxs spi driver.
> This results in chipselect being deasserted too early.
> This fixes the chipselect problem by using the new flag in the mxs-spi
> driver.
>
> Fixes: ceeeb99cd821 ("dmaengine: mxs: rename custom flag")
> Signed-off-by: Ralf Schlatterbeck <rsc@runtux.com>
Tested-by: Stefan Wahren <wahrenst@gmx.net>

Thanks
Ralf Schlatterbeck Feb. 2, 2024, 11:54 a.m. UTC | #4
On Thu, Feb 01, 2024 at 04:38:38PM +0100, Marc Kleine-Budde wrote:

> nitpick: Please omit the line break change from this patch.

I've posted version v2 of the patch without the line break.

Thanks
Ralf
diff mbox series

Patch

diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c
index 1bf080339b5a..a296050c8bd3 100644
--- a/drivers/spi/spi-mxs.c
+++ b/drivers/spi/spi-mxs.c
@@ -39,6 +39,7 @@ 
 #include <linux/spi/spi.h>
 #include <linux/spi/mxs-spi.h>
 #include <trace/events/spi.h>
+#include <linux/dma/mxs-dma.h>
 
 #define DRIVER_NAME		"mxs-spi"
 
@@ -251,8 +252,9 @@  static int mxs_spi_txrx_dma(struct mxs_spi *spi,
 
 		desc = dmaengine_prep_slave_sg(ssp->dmach,
 				&dma_xfer[sg_count].sg, 1,
-				(flags & TXRX_WRITE) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM,
-				DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
+				(flags & TXRX_WRITE)
+				? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM,
+				DMA_PREP_INTERRUPT | MXS_DMA_CTRL_WAIT4END);
 
 		if (!desc) {
 			dev_err(ssp->dev,