From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de> To: Mark Brown <broonie@kernel.org>, Matthias Brugger <matthias.bgg@gmail.com> Cc: linux-spi@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Subject: [PATCH v2 1/3] spi: mt65xx: Properly handle failures in .remove() Date: Tue, 30 May 2023 10:16:46 +0200 [thread overview] Message-ID: <20230530081648.2199419-2-u.kleine-koenig@pengutronix.de> (raw) In-Reply-To: <20230530081648.2199419-1-u.kleine-koenig@pengutronix.de> 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> --- drivers/spi/spi-mt65xx.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 21c321f43766..9333a0e8204d 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -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); -- 2.39.2
WARNING: multiple messages have this Message-ID (diff)
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de> To: Mark Brown <broonie@kernel.org>, Matthias Brugger <matthias.bgg@gmail.com> Cc: linux-spi@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Subject: [PATCH v2 1/3] spi: mt65xx: Properly handle failures in .remove() Date: Tue, 30 May 2023 10:16:46 +0200 [thread overview] Message-ID: <20230530081648.2199419-2-u.kleine-koenig@pengutronix.de> (raw) In-Reply-To: <20230530081648.2199419-1-u.kleine-koenig@pengutronix.de> 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> --- drivers/spi/spi-mt65xx.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 21c321f43766..9333a0e8204d 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -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); -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-30 8:16 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-30 8:16 [PATCH v2 0/3] spi: mt65xx: Convert to platform remove callback returning void Uwe Kleine-König 2023-05-30 8:16 ` Uwe Kleine-König 2023-05-30 8:16 ` Uwe Kleine-König [this message] 2023-05-30 8:16 ` [PATCH v2 1/3] spi: mt65xx: Properly handle failures in .remove() Uwe Kleine-König 2023-05-30 9:25 ` AngeloGioacchino Del Regno 2023-05-30 9:25 ` AngeloGioacchino Del Regno 2023-05-30 13:36 ` Uwe Kleine-König 2023-05-30 13:36 ` Uwe Kleine-König 2023-05-30 8:16 ` [PATCH v2 2/3] spi: mt65xx: Convert to platform remove callback returning void Uwe Kleine-König 2023-05-30 8:16 ` Uwe Kleine-König 2023-05-30 8:16 ` [PATCH v2 3/3] spi: mt65xx: Don't disguise a "return 0" as "return ret" Uwe Kleine-König 2023-05-30 8:16 ` Uwe Kleine-König 2023-05-30 17:40 ` [PATCH v2 0/3] spi: mt65xx: Convert to platform remove callback returning void Mark Brown 2023-05-30 17:40 ` Mark Brown
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230530081648.2199419-2-u.kleine-koenig@pengutronix.de \ --to=u.kleine-koenig@pengutronix.de \ --cc=angelogioacchino.delregno@collabora.com \ --cc=broonie@kernel.org \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=linux-spi@vger.kernel.org \ --cc=matthias.bgg@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.