Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: at91-usart: fix controller deregistration

Make sure to deregister the controller before disabling and releasing
underlying resources like clocks and DMA during driver unbind.

Fixes: e1892546ff66 ("spi: at91-usart: Add driver for at91-usart as SPI")
Cc: stable@vger.kernel.org # 4.20
Cc: Radu Pirea <radu.pirea@microchip.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260409120419.388546-4-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Johan Hovold and committed by
Mark Brown
9acecc9b 1044e5a4

+7 -1
+7 -1
drivers/spi/spi-at91-usart.c
··· 556 556 spin_lock_init(&aus->lock); 557 557 init_completion(&aus->xfer_completion); 558 558 559 - ret = devm_spi_register_controller(&pdev->dev, controller); 559 + ret = spi_register_controller(controller); 560 560 if (ret) 561 561 goto at91_usart_fail_register_controller; 562 562 ··· 634 634 struct spi_controller *ctlr = platform_get_drvdata(pdev); 635 635 struct at91_usart_spi *aus = spi_controller_get_devdata(ctlr); 636 636 637 + spi_controller_get(ctlr); 638 + 639 + spi_unregister_controller(ctlr); 640 + 637 641 at91_usart_spi_release_dma(ctlr); 638 642 clk_disable_unprepare(aus->clk); 643 + 644 + spi_controller_put(ctlr); 639 645 } 640 646 641 647 static const struct dev_pm_ops at91_usart_spi_pm_ops = {