summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamon Ding <damon.ding@rock-chips.com>2025-03-10 13:41:07 +0300
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>2025-04-21 01:27:10 +0300
commite5e9fa9f7aad4ad7eedb6359baea9193531bf4ac (patch)
treee4c8c998d2e33d6d24e637ed6c1db651871fe110
parentfd073dffef041d6a2d11f00cd6cbd8ff46083396 (diff)
downloadlinux-e5e9fa9f7aad4ad7eedb6359baea9193531bf4ac.tar.xz
drm/bridge: analogix_dp: Add support to get panel from the DP AUX bus
The main modification is moving the DP AUX initialization from function analogix_dp_bind() to analogix_dp_probe(). In order to get the EDID of eDP panel during probing, it is also needed to advance PM operations to ensure that eDP controller and phy are prepared for AUX transmission. Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/20250310104114.2608063-7-damon.ding@rock-chips.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
-rw-r--r--drivers/gpu/drm/bridge/analogix/analogix_dp_core.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index 8fdd03656934..84ad34f71244 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1646,6 +1646,17 @@ analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_data)
goto err_disable_clk;
}
+ dp->aux.name = "DP-AUX";
+ dp->aux.transfer = analogix_dpaux_transfer;
+ dp->aux.dev = dp->dev;
+ drm_dp_aux_init(&dp->aux);
+
+ pm_runtime_use_autosuspend(dp->dev);
+ pm_runtime_set_autosuspend_delay(dp->dev, 100);
+ ret = devm_pm_runtime_enable(dp->dev);
+ if (ret)
+ goto err_disable_clk;
+
return dp;
err_disable_clk:
@@ -1696,15 +1707,6 @@ int analogix_dp_bind(struct analogix_dp_device *dp, struct drm_device *drm_dev)
dp->drm_dev = drm_dev;
dp->encoder = dp->plat_data->encoder;
- pm_runtime_use_autosuspend(dp->dev);
- pm_runtime_set_autosuspend_delay(dp->dev, 100);
- ret = devm_pm_runtime_enable(dp->dev);
- if (ret)
- return ret;
-
- dp->aux.name = "DP-AUX";
- dp->aux.transfer = analogix_dpaux_transfer;
- dp->aux.dev = dp->dev;
dp->aux.drm_dev = drm_dev;
ret = drm_dp_aux_register(&dp->aux);