Commit c91b5bd7 authored by Lucas Stach's avatar Lucas Stach Committed by Robert Foss

drm/rockchip: analogix_dp: add runtime PM handling

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: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarRobert Foss <rfoss@kernel.org>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240619182200.3752465-2-l.stach@pengutronix.de
parent 6d4618ad
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_graph.h> #include <linux/of_graph.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h> #include <linux/regmap.h>
#include <linux/reset.h> #include <linux/reset.h>
#include <linux/clk.h> #include <linux/clk.h>
...@@ -430,7 +431,6 @@ static void rockchip_dp_remove(struct platform_device *pdev) ...@@ -430,7 +431,6 @@ static void rockchip_dp_remove(struct platform_device *pdev)
analogix_dp_remove(dp->adp); analogix_dp_remove(dp->adp);
} }
#ifdef CONFIG_PM_SLEEP
static int rockchip_dp_suspend(struct device *dev) static int rockchip_dp_suspend(struct device *dev)
{ {
struct rockchip_dp_device *dp = dev_get_drvdata(dev); struct rockchip_dp_device *dp = dev_get_drvdata(dev);
...@@ -450,14 +450,9 @@ static int rockchip_dp_resume(struct device *dev) ...@@ -450,14 +450,9 @@ static int rockchip_dp_resume(struct device *dev)
return analogix_dp_resume(dp->adp); return analogix_dp_resume(dp->adp);
} }
#endif
static const struct dev_pm_ops rockchip_dp_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(rockchip_dp_pm_ops, rockchip_dp_suspend,
#ifdef CONFIG_PM_SLEEP rockchip_dp_resume, NULL);
.suspend_late = rockchip_dp_suspend,
.resume_early = rockchip_dp_resume,
#endif
};
static const struct rockchip_dp_chip_data rk3399_edp = { static const struct rockchip_dp_chip_data rk3399_edp = {
.lcdsel_grf_reg = RK3399_GRF_SOC_CON20, .lcdsel_grf_reg = RK3399_GRF_SOC_CON20,
...@@ -485,7 +480,7 @@ struct platform_driver rockchip_dp_driver = { ...@@ -485,7 +480,7 @@ struct platform_driver rockchip_dp_driver = {
.remove_new = rockchip_dp_remove, .remove_new = rockchip_dp_remove,
.driver = { .driver = {
.name = "rockchip-dp", .name = "rockchip-dp",
.pm = &rockchip_dp_pm_ops, .pm = pm_ptr(&rockchip_dp_pm_ops),
.of_match_table = rockchip_dp_dt_ids, .of_match_table = rockchip_dp_dt_ids,
}, },
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment