drm: xlnx: zynqmp_dpsub: Move DP bridge init to zynqmp_dp_probe()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 6 Aug 2021 11:29:52 +0000 (14:29 +0300)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Wed, 19 Oct 2022 13:53:57 +0000 (16:53 +0300)
There's no need to delay bridge initialization, move it to
zynqmp_dp_probe() and drop the zynqmp_dp_drm_init() function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/gpu/drm/xlnx/zynqmp_dp.c
drivers/gpu/drm/xlnx/zynqmp_dp.h
drivers/gpu/drm/xlnx/zynqmp_kms.c

index 544b062..0c7add9 100644 (file)
@@ -1610,27 +1610,10 @@ handled:
  * Initialization & Cleanup
  */
 
-int zynqmp_dp_drm_init(struct zynqmp_dpsub *dpsub)
-{
-       struct zynqmp_dp *dp = dpsub->dp;
-       struct drm_bridge *bridge = &dp->bridge;
-
-       dp->config.misc0 &= ~ZYNQMP_DP_MAIN_STREAM_MISC0_SYNC_LOCK;
-       zynqmp_dp_set_format(dp, NULL, ZYNQMP_DPSUB_FORMAT_RGB, 8);
-
-       /* Initialize the bridge. */
-       bridge->funcs = &zynqmp_dp_bridge_funcs;
-       bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
-                   | DRM_BRIDGE_OP_HPD;
-       bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
-       dpsub->bridge = bridge;
-
-       return 0;
-}
-
 int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
 {
        struct platform_device *pdev = to_platform_device(dpsub->dev);
+       struct drm_bridge *bridge;
        struct zynqmp_dp *dp;
        struct resource *res;
        int ret;
@@ -1673,6 +1656,14 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
        if (ret)
                goto err_reset;
 
+       /* Initialize the bridge. */
+       bridge = &dp->bridge;
+       bridge->funcs = &zynqmp_dp_bridge_funcs;
+       bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
+                   | DRM_BRIDGE_OP_HPD;
+       bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
+       dpsub->bridge = bridge;
+
        /*
         * Acquire the next bridge in the chain. Ignore errors caused by port@5
         * not being connected for backward-compatibility with older DTs.
@@ -1683,6 +1674,9 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
                goto err_reset;
 
        /* Initialize the hardware. */
+       dp->config.misc0 &= ~ZYNQMP_DP_MAIN_STREAM_MISC0_SYNC_LOCK;
+       zynqmp_dp_set_format(dp, NULL, ZYNQMP_DPSUB_FORMAT_RGB, 8);
+
        zynqmp_dp_write(dp, ZYNQMP_DP_TX_PHY_POWER_DOWN,
                        ZYNQMP_DP_TX_PHY_POWER_DOWN_ALL);
        zynqmp_dp_set(dp, ZYNQMP_DP_PHY_RESET, ZYNQMP_DP_PHY_RESET_ALL_RESET);
index 4507740..736d810 100644 (file)
@@ -20,7 +20,6 @@ struct zynqmp_dpsub;
 void zynqmp_dp_enable_vblank(struct zynqmp_dp *dp);
 void zynqmp_dp_disable_vblank(struct zynqmp_dp *dp);
 
-int zynqmp_dp_drm_init(struct zynqmp_dpsub *dpsub);
 int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm);
 void zynqmp_dp_remove(struct zynqmp_dpsub *dpsub);
 
index a2ad4c9..3b89097 100644 (file)
@@ -348,7 +348,7 @@ int zynqmp_dpsub_kms_init(struct zynqmp_dpsub *dpsub)
        struct drm_connector *connector;
        int ret;
 
-       /* Create the planes and the CRTC, and initialize the DP encoder. */
+       /* Create the planes and the CRTC. */
        ret = zynqmp_dpsub_create_planes(dpsub);
        if (ret)
                return ret;
@@ -359,10 +359,6 @@ int zynqmp_dpsub_kms_init(struct zynqmp_dpsub *dpsub)
 
        zynqmp_dpsub_map_crtc_to_plane(dpsub);
 
-       ret = zynqmp_dp_drm_init(dpsub);
-       if (ret)
-               return ret;
-
        /* Create the encoder and attach the bridge. */
        encoder->possible_crtcs |= drm_crtc_mask(&dpsub->crtc);
        drm_simple_encoder_init(&dpsub->drm, encoder, DRM_MODE_ENCODER_NONE);