mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-02 17:52:36 -05:00
spi: mt65xx: Properly handle failures in .remove()
Returning an error code in a platform driver's remove function is wrong most of the time and there is an effort to make the callback return void. To prepare this rework the function not to exit early. There wasn't a real problem because if pm runtime resume failed the only step missing was pm_runtime_disable() which isn't an issue. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20230530081648.2199419-2-u.kleine-koenig@pengutronix.de Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
ac9a78681b
commit
22f407278e
@@ -1275,15 +1275,21 @@ static int mtk_spi_remove(struct platform_device *pdev)
|
||||
struct mtk_spi *mdata = spi_master_get_devdata(master);
|
||||
int ret;
|
||||
|
||||
ret = pm_runtime_resume_and_get(&pdev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = pm_runtime_get_sync(&pdev->dev);
|
||||
if (ret < 0) {
|
||||
dev_warn(&pdev->dev, "Failed to resume hardware (%pe)\n", ERR_PTR(ret));
|
||||
} else {
|
||||
/*
|
||||
* If pm runtime resume failed, clks are disabled and
|
||||
* unprepared. So don't access the hardware and skip clk
|
||||
* unpreparing.
|
||||
*/
|
||||
mtk_spi_reset(mdata);
|
||||
|
||||
mtk_spi_reset(mdata);
|
||||
|
||||
if (mdata->dev_comp->no_need_unprepare) {
|
||||
clk_unprepare(mdata->spi_clk);
|
||||
clk_unprepare(mdata->spi_hclk);
|
||||
if (mdata->dev_comp->no_need_unprepare) {
|
||||
clk_unprepare(mdata->spi_clk);
|
||||
clk_unprepare(mdata->spi_hclk);
|
||||
}
|
||||
}
|
||||
|
||||
pm_runtime_put_noidle(&pdev->dev);
|
||||
|
||||
Reference in New Issue
Block a user