Unverified Commit 8b814335 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!12004 spi: rockchip: Resolve unbalanced runtime PM / system PM handling

parents be53b040 f7393289
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -974,14 +974,16 @@ static int rockchip_spi_suspend(struct device *dev)
{
	int ret;
	struct spi_controller *ctlr = dev_get_drvdata(dev);
	struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);

	ret = spi_controller_suspend(ctlr);
	if (ret < 0)
		return ret;

	clk_disable_unprepare(rs->spiclk);
	clk_disable_unprepare(rs->apb_pclk);
	ret = pm_runtime_force_suspend(dev);
	if (ret < 0) {
		spi_controller_resume(ctlr);
		return ret;
	}

	pinctrl_pm_select_sleep_state(dev);

@@ -992,25 +994,14 @@ static int rockchip_spi_resume(struct device *dev)
{
	int ret;
	struct spi_controller *ctlr = dev_get_drvdata(dev);
	struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);

	pinctrl_pm_select_default_state(dev);

	ret = clk_prepare_enable(rs->apb_pclk);
	ret = pm_runtime_force_resume(dev);
	if (ret < 0)
		return ret;

	ret = clk_prepare_enable(rs->spiclk);
	if (ret < 0)
		clk_disable_unprepare(rs->apb_pclk);

	ret = spi_controller_resume(ctlr);
	if (ret < 0) {
		clk_disable_unprepare(rs->spiclk);
		clk_disable_unprepare(rs->apb_pclk);
	}

	return 0;
	return spi_controller_resume(ctlr);
}
#endif /* CONFIG_PM_SLEEP */