From d2e91c6b8f46b2cccc692d3363fd18d75263e46a Mon Sep 17 00:00:00 2001 From: Siyuan Cheng Date: Wed, 24 May 2023 15:04:56 +0800 Subject: [PATCH] drivers: spi: fix spi_dw interrupt mask Found EMSDP board SPI-FLASH sample broke after adding DFSS into spi_dw. Found wrong interrput mask resulting in false interrupt enabled. Now fixed it to fit both DFSS and DW. Signed-off-by: Siyuan Cheng --- drivers/spi/spi_dw.c | 2 +- drivers/spi/spi_dw.h | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/spi/spi_dw.c b/drivers/spi/spi_dw.c index cce10817cad..e5700863932 100644 --- a/drivers/spi/spi_dw.c +++ b/drivers/spi/spi_dw.c @@ -436,7 +436,7 @@ static int transceive(const struct device *dev, /* Enable interrupts */ reg_data = !rx_bufs ? DW_SPI_IMR_UNMASK & DW_SPI_IMR_MASK_RX : - DW_SPI_IMR_UNMASK & DW_SPI_IMR_MASK_TX; + DW_SPI_IMR_UNMASK; write_imr(info, reg_data); spi_context_cs_control(&spi->ctx, true); diff --git a/drivers/spi/spi_dw.h b/drivers/spi/spi_dw.h index e0bdd661533..dd518c9b853 100644 --- a/drivers/spi/spi_dw.h +++ b/drivers/spi/spi_dw.h @@ -258,17 +258,12 @@ static int reg_test_bit(uint8_t bit, uint32_t addr, uint32_t off) DW_SPI_IMR_TXOIM | \ DW_SPI_IMR_RXUIM | \ DW_SPI_IMR_RXOIM | \ - DW_SPI_IMR_RXFIM | \ - DW_SPI_IMR_MSTIM) -#define DW_SPI_IMR_MASK_TX (~(DW_SPI_IMR_RXUIM | \ - DW_SPI_IMR_TXOIM | \ + DW_SPI_IMR_RXFIM) +#define DW_SPI_IMR_MASK_TX (~(DW_SPI_IMR_TXEIM | \ + DW_SPI_IMR_TXOIM)) +#define DW_SPI_IMR_MASK_RX (~(DW_SPI_IMR_RXUIM | \ DW_SPI_IMR_RXOIM | \ - DW_SPI_IMR_MSTIM)) -#define DW_SPI_IMR_MASK_RX (~(DW_SPI_IMR_TXEIM |\ - DW_SPI_IMR_RXUIM | \ - DW_SPI_IMR_TXOIM | \ - DW_SPI_IMR_RXOIM | \ - DW_SPI_IMR_MSTIM)) + DW_SPI_IMR_RXFIM)) /* * Including the right register definition file