Apply analogix_dp_finish_probe() in order to move the panel/bridge parsing from Rockchip side to the Analogix side. Signed-off-by: Damon Ding <damon.ding@xxxxxxxxxxxxxx> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx> --- Changes in v4: - Rename analogix_dp_find_panel_or_bridge() to analogix_dp_finish_probe(). Changes in v5: - Remove DRM_DISPLAY_DP_AUX_BUS for ROCKCHIP_ANALOGIX_DP --- drivers/gpu/drm/rockchip/Kconfig | 1 - .../gpu/drm/rockchip/analogix_dp-rockchip.c | 38 +------------------ 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig index ab525668939a..99af5927c0f8 100644 --- a/drivers/gpu/drm/rockchip/Kconfig +++ b/drivers/gpu/drm/rockchip/Kconfig @@ -9,7 +9,6 @@ config DRM_ROCKCHIP select DRM_PANEL select VIDEOMODE_HELPERS select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP - select DRM_DISPLAY_DP_AUX_BUS if ROCKCHIP_ANALOGIX_DP select DRM_DW_HDMI if ROCKCHIP_DW_HDMI select DRM_DW_HDMI_QP if ROCKCHIP_DW_HDMI_QP select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 3b6b2d3ca5d1..0784f19a2ed9 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -21,14 +21,12 @@ #include <video/of_videomode.h> #include <video/videomode.h> -#include <drm/display/drm_dp_aux_bus.h> #include <drm/display/drm_dp_helper.h> #include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_bridge_connector.h> #include <drm/bridge/analogix_dp.h> #include <drm/drm_of.h> -#include <drm/drm_panel.h> #include <drm/drm_probe_helper.h> #include <drm/drm_simple_kms_helper.h> @@ -416,24 +414,6 @@ static const struct component_ops rockchip_dp_component_ops = { .unbind = rockchip_dp_unbind, }; -static int rockchip_dp_link_panel(struct drm_dp_aux *aux) -{ - struct analogix_dp_plat_data *plat_data = analogix_dp_aux_to_plat_data(aux); - struct rockchip_dp_device *dp = pdata_encoder_to_dp(plat_data); - int ret; - - /* - * If drm_of_find_panel_or_bridge() returns -ENODEV, there may be no valid panel - * or bridge nodes. The driver should go on for the driver-free bridge or the DP - * mode applications. - */ - ret = drm_of_find_panel_or_bridge(dp->dev->of_node, 1, 0, &plat_data->panel, NULL); - if (ret && ret != -ENODEV) - return ret; - - return component_add(dp->dev, &rockchip_dp_component_ops); -} - static int rockchip_dp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -472,6 +452,7 @@ static int rockchip_dp_probe(struct platform_device *pdev) dp->plat_data.dev_type = dp->data->chip_type; dp->plat_data.power_on = rockchip_dp_poweron; dp->plat_data.power_off = rockchip_dp_powerdown; + dp->plat_data.ops = &rockchip_dp_component_ops; ret = rockchip_dp_of_probe(dp); if (ret < 0) @@ -483,22 +464,7 @@ static int rockchip_dp_probe(struct platform_device *pdev) if (IS_ERR(dp->adp)) return PTR_ERR(dp->adp); - ret = devm_of_dp_aux_populate_bus(analogix_dp_get_aux(dp->adp), rockchip_dp_link_panel); - if (ret) { - /* - * If devm_of_dp_aux_populate_bus() returns -ENODEV, the done_probing() will not - * be called because there are no EP devices. Then the rockchip_dp_link_panel() - * will be called directly in order to support the other valid DT configurations. - * - * NOTE: The devm_of_dp_aux_populate_bus() is allowed to return -EPROBE_DEFER. - */ - if (ret != -ENODEV) - return dev_err_probe(dp->dev, ret, "failed to populate aux bus\n"); - - return rockchip_dp_link_panel(analogix_dp_get_aux(dp->adp)); - } - - return 0; + return analogix_dp_finish_probe(dp->adp); } static void rockchip_dp_remove(struct platform_device *pdev) -- 2.34.1