struct msm_dp_desc {
        phys_addr_t io_start;
+       unsigned int id;
        unsigned int connector_type;
        bool wide_bus_en;
 };
 
-struct msm_dp_config {
-       const struct msm_dp_desc *descs;
-       size_t num_descs;
-};
-
 static const struct msm_dp_desc sc7180_dp_descs[] = {
-       [MSM_DP_CONTROLLER_0] = { .io_start = 0x0ae90000, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
-};
-
-static const struct msm_dp_config sc7180_dp_cfg = {
-       .descs = sc7180_dp_descs,
-       .num_descs = ARRAY_SIZE(sc7180_dp_descs),
+       { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
+       {}
 };
 
 static const struct msm_dp_desc sc7280_dp_descs[] = {
-       [MSM_DP_CONTROLLER_0] = { .io_start = 0x0ae90000, .connector_type = DRM_MODE_CONNECTOR_DisplayPort, .wide_bus_en = true },
-       [MSM_DP_CONTROLLER_1] = { .io_start = 0x0aea0000, .connector_type = DRM_MODE_CONNECTOR_eDP, .wide_bus_en = true },
-};
-
-static const struct msm_dp_config sc7280_dp_cfg = {
-       .descs = sc7280_dp_descs,
-       .num_descs = ARRAY_SIZE(sc7280_dp_descs),
+       { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0, .connector_type = DRM_MODE_CONNECTOR_DisplayPort, .wide_bus_en = true },
+       { .io_start = 0x0aea0000, .id = MSM_DP_CONTROLLER_1, .connector_type = DRM_MODE_CONNECTOR_eDP, .wide_bus_en = true },
+       {}
 };
 
 static const struct msm_dp_desc sc8180x_dp_descs[] = {
-       [MSM_DP_CONTROLLER_0] = { .io_start = 0x0ae90000, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
-       [MSM_DP_CONTROLLER_1] = { .io_start = 0x0ae98000, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
-       [MSM_DP_CONTROLLER_2] = { .io_start = 0x0ae9a000, .connector_type = DRM_MODE_CONNECTOR_eDP },
-};
-
-static const struct msm_dp_config sc8180x_dp_cfg = {
-       .descs = sc8180x_dp_descs,
-       .num_descs = ARRAY_SIZE(sc8180x_dp_descs),
+       { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
+       { .io_start = 0x0ae98000, .id = MSM_DP_CONTROLLER_1, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
+       { .io_start = 0x0ae9a000, .id = MSM_DP_CONTROLLER_2, .connector_type = DRM_MODE_CONNECTOR_eDP },
+       {}
 };
 
 static const struct msm_dp_desc sm8350_dp_descs[] = {
-       [MSM_DP_CONTROLLER_0] = { .io_start = 0x0ae90000, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
-};
-
-static const struct msm_dp_config sm8350_dp_cfg = {
-       .descs = sm8350_dp_descs,
-       .num_descs = ARRAY_SIZE(sm8350_dp_descs),
+       { .io_start = 0x0ae90000, .id = MSM_DP_CONTROLLER_0, .connector_type = DRM_MODE_CONNECTOR_DisplayPort },
+       {}
 };
 
 static const struct of_device_id dp_dt_match[] = {
-       { .compatible = "qcom,sc7180-dp", .data = &sc7180_dp_cfg },
-       { .compatible = "qcom,sc7280-dp", .data = &sc7280_dp_cfg },
-       { .compatible = "qcom,sc7280-edp", .data = &sc7280_dp_cfg },
-       { .compatible = "qcom,sc8180x-dp", .data = &sc8180x_dp_cfg },
-       { .compatible = "qcom,sc8180x-edp", .data = &sc8180x_dp_cfg },
-       { .compatible = "qcom,sm8350-dp", .data = &sm8350_dp_cfg },
+       { .compatible = "qcom,sc7180-dp", .data = &sc7180_dp_descs },
+       { .compatible = "qcom,sc7280-dp", .data = &sc7280_dp_descs },
+       { .compatible = "qcom,sc7280-edp", .data = &sc7280_dp_descs },
+       { .compatible = "qcom,sc8180x-dp", .data = &sc8180x_dp_descs },
+       { .compatible = "qcom,sc8180x-edp", .data = &sc8180x_dp_descs },
+       { .compatible = "qcom,sm8350-dp", .data = &sm8350_dp_descs },
        {}
 };
 
        return 0;
 }
 
-static const struct msm_dp_desc *dp_display_get_desc(struct platform_device *pdev,
-                                                    unsigned int *id)
+static const struct msm_dp_desc *dp_display_get_desc(struct platform_device *pdev)
 {
-       const struct msm_dp_config *cfg = of_device_get_match_data(&pdev->dev);
+       const struct msm_dp_desc *descs = of_device_get_match_data(&pdev->dev);
        struct resource *res;
        int i;
 
        if (!res)
                return NULL;
 
-       for (i = 0; i < cfg->num_descs; i++) {
-               if (cfg->descs[i].io_start == res->start) {
-                       *id = i;
-                       return &cfg->descs[i];
-               }
+       for (i = 0; i < descs[i].io_start; i++) {
+               if (descs[i].io_start == res->start)
+                       return &descs[i];
        }
 
        dev_err(&pdev->dev, "unknown displayport instance\n");
        if (!dp)
                return -ENOMEM;
 
-       desc = dp_display_get_desc(pdev, &dp->id);
+       desc = dp_display_get_desc(pdev);
        if (!desc)
                return -EINVAL;
 
        dp->pdev = pdev;
        dp->name = "drm_dp";
+       dp->id = desc->id;
        dp->dp_display.connector_type = desc->connector_type;
        dp->wide_bus_en = desc->wide_bus_en;
        dp->dp_display.is_edp =