DisplayPort connectors can expose the subconnector property, describing
the attached dongle. While i915 and amdgpu drivers already provide this
property, bridge-based DisplayPort connectors don't expose it.

Attach the DP subconnector property from drm_bridge_connector_init()
whenever the resolved connector type is DisplayPort, and drop the
open-coded attachment from the msm code, pushing other DP drivers
towards adding support for the property.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/display/drm_bridge_connector.c | 4 ++++
 drivers/gpu/drm/msm/msm_kms.c                  | 5 -----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c 
b/drivers/gpu/drm/display/drm_bridge_connector.c
index 8b54069fa53a..f83d5f52ab14 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -1089,6 +1089,10 @@ struct drm_connector *drm_bridge_connector_init(struct 
drm_device *drm,
            IS_ENABLED(CONFIG_DRM_DISPLAY_HDCP_HELPER))
                drm_connector_attach_content_protection_property(connector, 
true);
 
+       /* The DP subconnector property applies to DisplayPort only. */
+       if (connector_type == DRM_MODE_CONNECTOR_DisplayPort)
+               drm_connector_attach_dp_subconnector_property(connector);
+
        ret = drm_connector_attach_encoder(connector, encoder);
        if (ret)
                return ERR_PTR(ret);
diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c
index 71af3780b7b1..cf602be09ff8 100644
--- a/drivers/gpu/drm/msm/msm_kms.c
+++ b/drivers/gpu/drm/msm/msm_kms.c
@@ -320,7 +320,6 @@ static int msm_kms_init_connectors(struct drm_device *ddev)
 
        drm_for_each_encoder(encoder, ddev) {
                struct drm_connector *connector;
-               int ret;
 
                /* the virtual writeback encoder brings its own connector */
                if (encoder->encoder_type == DRM_MODE_ENCODER_VIRTUAL)
@@ -333,10 +332,6 @@ static int msm_kms_init_connectors(struct drm_device *ddev)
                                      encoder->name, PTR_ERR(connector));
                        return PTR_ERR(connector);
                }
-
-               /* The DP subconnector property applies to DisplayPort only. */
-               if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort)
-                       
drm_connector_attach_dp_subconnector_property(connector);
        }
 
        return 0;

-- 
2.47.3

Reply via email to