wifi: wilc1000: Do not operate uninitialized hardware during suspend/resume
[ Upstream commit b0dc701847 ]
In case the hardware is not initialized, do not operate it during
suspend/resume cycle, the hardware is already off so there is no
reason to access it.
In fact, wilc_sdio_enable_interrupt() in the resume callback does
interfere with the same call when initializing the hardware after
resume and makes such initialization after resume fail. Fix this
by not operating uninitialized hardware during suspend/resume.
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Alexis Lothoré <alexis.lothore@bootlin.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20240821183639.163187-1-marex@denx.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
61ded8e4ed
commit
e8a9219e91
@@ -977,6 +977,9 @@ static int wilc_sdio_suspend(struct device *dev)
|
||||
|
||||
dev_info(dev, "sdio suspend\n");
|
||||
|
||||
if (!wilc->initialized)
|
||||
return 0;
|
||||
|
||||
if (!IS_ERR(wilc->rtc_clk))
|
||||
clk_disable_unprepare(wilc->rtc_clk);
|
||||
|
||||
@@ -999,6 +1002,10 @@ static int wilc_sdio_resume(struct device *dev)
|
||||
struct wilc *wilc = sdio_get_drvdata(func);
|
||||
|
||||
dev_info(dev, "sdio resume\n");
|
||||
|
||||
if (!wilc->initialized)
|
||||
return 0;
|
||||
|
||||
wilc_sdio_init(wilc, true);
|
||||
wilc_sdio_enable_interrupt(wilc);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user