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: sh-hspi: fix controller deregistration

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

Fixes: 49e599b8595f ("spi: sh-hspi: control spi clock more correctly")
Cc: stable@vger.kernel.org # 3.4
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260410081757.503099-13-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Johan Hovold and committed by
Mark Brown
e63982e6 c1446b61

+8 -2
+8 -2
drivers/spi/spi-sh-hspi.c
··· 257 257 ctlr->transfer_one_message = hspi_transfer_one_message; 258 258 ctlr->bits_per_word_mask = SPI_BPW_MASK(8); 259 259 260 - ret = devm_spi_register_controller(&pdev->dev, ctlr); 260 + ret = spi_register_controller(ctlr); 261 261 if (ret < 0) { 262 - dev_err(&pdev->dev, "devm_spi_register_controller error.\n"); 262 + dev_err(&pdev->dev, "failed to register controller\n"); 263 263 goto error2; 264 264 } 265 265 ··· 279 279 { 280 280 struct hspi_priv *hspi = platform_get_drvdata(pdev); 281 281 282 + spi_controller_get(hspi->ctlr); 283 + 284 + spi_unregister_controller(hspi->ctlr); 285 + 282 286 pm_runtime_disable(&pdev->dev); 283 287 284 288 clk_put(hspi->clk); 289 + 290 + spi_controller_put(hspi->ctlr); 285 291 } 286 292 287 293 static const struct of_device_id hspi_of_match[] = {