From 643d6c1d45aa6b9757ba0a2f16011ad41c9f5b5d Mon Sep 17 00:00:00 2001 From: Michael Hennerich Date: Fri, 22 Oct 2010 02:01:48 -0400 Subject: [PATCH] --- yaml --- r: 221530 b: refs/heads/master c: 782a895693a52fd8b288c33bdd7e98357888fc1f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/spi/spi_bfin5xx.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 076296377583..3b2c98328ff2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b9603a0d7e395fb844af90fba71448bc8019077 +refs/heads/master: 782a895693a52fd8b288c33bdd7e98357888fc1f diff --git a/trunk/drivers/spi/spi_bfin5xx.c b/trunk/drivers/spi/spi_bfin5xx.c index ab483a0ec6d0..d3da41d3f92d 100644 --- a/trunk/drivers/spi/spi_bfin5xx.c +++ b/trunk/drivers/spi/spi_bfin5xx.c @@ -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", 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); /*