Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 782a8956 authored by Michael Hennerich's avatar Michael Hennerich Committed by Grant Likely
Browse files

spi/bfin_spi: handle error/status changes after data interrupts



The error interrupt on the BF537 SIC cannot be enabled on a
per-peripheral basis.  Once the error interrupt is enabled
for one peripheral, it is automatically enabled for all.

So in the Blackfin on-chip SPI driver, we need to clear out
these known errors in the data interrupt once we've successfully
finished processing all of the pending data.

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 2b9603a0
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -504,6 +504,15 @@ static irqreturn_t bfin_spi_dma_irq_handler(int irq, void *dev_id)
		"in dma_irq_handler dmastat:0x%x spistat:0x%x\n",
		"in dma_irq_handler dmastat:0x%x spistat:0x%x\n",
		dmastat, spistat);
		dmastat, spistat);


	if (drv_data->rx != NULL) {
		u16 cr = read_CTRL(drv_data);
		/* discard old RX data and clear RXS */
		bfin_spi_dummy_read(drv_data);
		write_CTRL(drv_data, cr & ~BIT_CTL_ENABLE); /* Disable SPI */
		write_CTRL(drv_data, cr & ~BIT_CTL_TIMOD); /* Restore State */
		write_STAT(drv_data, BIT_STAT_CLR); /* Clear Status */
	}

	clear_dma_irqstat(drv_data->dma_channel);
	clear_dma_irqstat(drv_data->dma_channel);


	/*
	/*