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: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

authored by Michael Hennerich and committed by Grant Likely 782a8956 2b9603a0

+9
+9
drivers/spi/spi_bfin5xx.c
··· 504 504 "in dma_irq_handler dmastat:0x%x spistat:0x%x\n", 505 505 dmastat, spistat); 506 506 507 + if (drv_data->rx != NULL) { 508 + u16 cr = read_CTRL(drv_data); 509 + /* discard old RX data and clear RXS */ 510 + bfin_spi_dummy_read(drv_data); 511 + write_CTRL(drv_data, cr & ~BIT_CTL_ENABLE); /* Disable SPI */ 512 + write_CTRL(drv_data, cr & ~BIT_CTL_TIMOD); /* Restore State */ 513 + write_STAT(drv_data, BIT_STAT_CLR); /* Clear Status */ 514 + } 515 + 507 516 clear_dma_irqstat(drv_data->dma_channel); 508 517 509 518 /*