Message ID | 20240503151129.3901815-3-l.stach@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | improve Analogix DP AUX channel handling | expand |
On Fri, May 3, 2024 at 5:12 PM Lucas Stach <l.stach@pengutronix.de> wrote: > > Hook up the runtime PM suspend/resume paths to make the rockchip > glue behave more like the exynos one. The same suspend/resume > functions are used for system sleep via the runtime PM force > suspend/resume. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > --- > drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 13 ++++--------- > 1 file changed, 4 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > index baeb41875a4b..8214265f1497 100644 > --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > @@ -13,6 +13,7 @@ > #include <linux/of.h> > #include <linux/of_graph.h> > #include <linux/platform_device.h> > +#include <linux/pm_runtime.h> > #include <linux/regmap.h> > #include <linux/reset.h> > #include <linux/clk.h> > @@ -430,7 +431,6 @@ static void rockchip_dp_remove(struct platform_device *pdev) > analogix_dp_remove(dp->adp); > } > > -#ifdef CONFIG_PM_SLEEP > static int rockchip_dp_suspend(struct device *dev) > { > struct rockchip_dp_device *dp = dev_get_drvdata(dev); > @@ -450,14 +450,9 @@ static int rockchip_dp_resume(struct device *dev) > > return analogix_dp_resume(dp->adp); > } > -#endif > > -static const struct dev_pm_ops rockchip_dp_pm_ops = { > -#ifdef CONFIG_PM_SLEEP > - .suspend_late = rockchip_dp_suspend, > - .resume_early = rockchip_dp_resume, > -#endif > -}; > +static DEFINE_RUNTIME_DEV_PM_OPS(rockchip_dp_pm_ops, rockchip_dp_suspend, > + rockchip_dp_resume, NULL); > > static const struct rockchip_dp_chip_data rk3399_edp = { > .lcdsel_grf_reg = RK3399_GRF_SOC_CON20, > @@ -485,7 +480,7 @@ struct platform_driver rockchip_dp_driver = { > .remove_new = rockchip_dp_remove, > .driver = { > .name = "rockchip-dp", > - .pm = &rockchip_dp_pm_ops, > + .pm = pm_ptr(&rockchip_dp_pm_ops), > .of_match_table = rockchip_dp_dt_ids, > }, > }; > -- > 2.39.2 > Reviewed-by: Robert Foss <rfoss@kernel.org>
Am Freitag, 3. Mai 2024, 17:11:17 CEST schrieb Lucas Stach: > Hook up the runtime PM suspend/resume paths to make the rockchip > glue behave more like the exynos one. The same suspend/resume > functions are used for system sleep via the runtime PM force > suspend/resume. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Heiko Stuebner <heiko@sntech.de> A rk3399-gru Chromebook was able to suspend and wake up again with working display both before and after. Heiko
diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index baeb41875a4b..8214265f1497 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -13,6 +13,7 @@ #include <linux/of.h> #include <linux/of_graph.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/regmap.h> #include <linux/reset.h> #include <linux/clk.h> @@ -430,7 +431,6 @@ static void rockchip_dp_remove(struct platform_device *pdev) analogix_dp_remove(dp->adp); } -#ifdef CONFIG_PM_SLEEP static int rockchip_dp_suspend(struct device *dev) { struct rockchip_dp_device *dp = dev_get_drvdata(dev); @@ -450,14 +450,9 @@ static int rockchip_dp_resume(struct device *dev) return analogix_dp_resume(dp->adp); } -#endif -static const struct dev_pm_ops rockchip_dp_pm_ops = { -#ifdef CONFIG_PM_SLEEP - .suspend_late = rockchip_dp_suspend, - .resume_early = rockchip_dp_resume, -#endif -}; +static DEFINE_RUNTIME_DEV_PM_OPS(rockchip_dp_pm_ops, rockchip_dp_suspend, + rockchip_dp_resume, NULL); static const struct rockchip_dp_chip_data rk3399_edp = { .lcdsel_grf_reg = RK3399_GRF_SOC_CON20, @@ -485,7 +480,7 @@ struct platform_driver rockchip_dp_driver = { .remove_new = rockchip_dp_remove, .driver = { .name = "rockchip-dp", - .pm = &rockchip_dp_pm_ops, + .pm = pm_ptr(&rockchip_dp_pm_ops), .of_match_table = rockchip_dp_dt_ids, }, };
Hook up the runtime PM suspend/resume paths to make the rockchip glue behave more like the exynos one. The same suspend/resume functions are used for system sleep via the runtime PM force suspend/resume. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)