Skip to content

Commit

Permalink
spi: bcm2835: Tear down DMA before turning off SPI controller
Browse files Browse the repository at this point in the history
On unbind of the BCM2835 SPI driver, the SPI controller is disabled
first and the DMA channels are terminated and torn down afterwards.

This seems backwards:  In the theoretical case that DMA is active,
it might try to fill the SPI FIFOs even after the controller has
been disabled.

Reverse the order, thereby mirroring what's done on ->probe().

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Link: https://lore.kernel.org/r/ac79f1e3d6fd9a1f5e0cb4008c43b98ea70be3c2.1589557526.git.lukas@wunner.de
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Lukas Wunner authored and Mark Brown committed May 20, 2020
1 parent c38a490 commit 05897c7
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/spi/spi-bcm2835.c
Original file line number Diff line number Diff line change
Expand Up @@ -1380,14 +1380,14 @@ static int bcm2835_spi_remove(struct platform_device *pdev)

spi_unregister_controller(ctlr);

bcm2835_dma_release(ctlr, bs);

/* Clear FIFOs, and disable the HW block */
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);

clk_disable_unprepare(bs->clk);

bcm2835_dma_release(ctlr, bs);

return 0;
}

Expand Down

0 comments on commit 05897c7

Please sign in to comment.