# HG changeset patch # User vae # Date 1373403008 0 # Node ID b44dec9cc8b9bcf8e3d260e176973aafa898c19f # Parent b3010a200e62d42a2d1cc332f499de81edfd6d65 Fix: Kinetis DSPI infinite polling [ Bugzilla 10011879 ], reported by Mike Jones diff --git a/packages/devs/spi/freescale/dspi/current/ChangeLog b/packages/devs/spi/freescale/dspi/current/ChangeLog --- a/packages/devs/spi/freescale/dspi/current/ChangeLog +++ b/packages/devs/spi/freescale/dspi/current/ChangeLog @@ -1,3 +1,8 @@ +2013-07-09 Mike Jones + + * src/spi_freescale_dspi.c: Fix: Kinetis DSPI infinite polling + [ Bugzilla 10011879 ] + 2013-05-08 Ilija Kocho * src/spi_freescale_dspi.cdl: Add CYGINT_DEVS_SPI_DMA_USE diff --git a/packages/devs/spi/freescale/dspi/current/src/spi_freescale_dspi.c b/packages/devs/spi/freescale/dspi/current/src/spi_freescale_dspi.c --- a/packages/devs/spi/freescale/dspi/current/src/spi_freescale_dspi.c +++ b/packages/devs/spi/freescale/dspi/current/src/spi_freescale_dspi.c @@ -1038,8 +1038,8 @@ static void dspi_transaction_end(cyg_spi // Clear peripheral CS by executing a dummy 4 bit transfer. dspi_p->pushr = PUSHR_NULL | FREESCALE_DSPI_PUSHR_EOQ_M | FREESCALE_DSPI_PUSHR_CTAS(1); + while(!(dspi_p->sr & FREESCALE_DSPI_SR_EOQF_M)); DSPI_EOQ_CLEAR(dspi_p); - while(!(dspi_p->sr & FREESCALE_DSPI_SR_EOQF_M)); dspi_fifo_drain(dspi_p); dspi_device->chip_sel = 0; }