Previously, DC determined the DRM connector type based on the
signal type, which becomes problematic when a connector may
support different signal types, such as DVI-I.

With this patch, it is now determined according to the actual
connector type in DC, meaning it can now distinguish between
DVI-D and DVI-I connectors.

A subsequent commit will enable polling for these connectors.

Signed-off-by: Timur Kristóf <timur.kris...@gmail.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 28 +++++++++++--------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 096b23ad4845..c347b232ae06 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8038,24 +8038,26 @@ static int dm_update_mst_vcpi_slots_for_dsc(struct 
drm_atomic_state *state,
        return 0;
 }
 
-static int to_drm_connector_type(enum signal_type st)
+static int to_drm_connector_type(uint32_t connector_id)
 {
-       switch (st) {
-       case SIGNAL_TYPE_HDMI_TYPE_A:
+       switch (connector_id) {
+       case CONNECTOR_ID_HDMI_TYPE_A:
                return DRM_MODE_CONNECTOR_HDMIA;
-       case SIGNAL_TYPE_EDP:
+       case CONNECTOR_ID_EDP:
                return DRM_MODE_CONNECTOR_eDP;
-       case SIGNAL_TYPE_LVDS:
+       case CONNECTOR_ID_LVDS:
                return DRM_MODE_CONNECTOR_LVDS;
-       case SIGNAL_TYPE_RGB:
+       case CONNECTOR_ID_VGA:
                return DRM_MODE_CONNECTOR_VGA;
-       case SIGNAL_TYPE_DISPLAY_PORT:
-       case SIGNAL_TYPE_DISPLAY_PORT_MST:
+       case CONNECTOR_ID_DISPLAY_PORT:
                return DRM_MODE_CONNECTOR_DisplayPort;
-       case SIGNAL_TYPE_DVI_DUAL_LINK:
-       case SIGNAL_TYPE_DVI_SINGLE_LINK:
+       case CONNECTOR_ID_SINGLE_LINK_DVID:
+       case CONNECTOR_ID_DUAL_LINK_DVID:
                return DRM_MODE_CONNECTOR_DVID;
-       case SIGNAL_TYPE_VIRTUAL:
+       case CONNECTOR_ID_SINGLE_LINK_DVII:
+       case CONNECTOR_ID_DUAL_LINK_DVII:
+               return DRM_MODE_CONNECTOR_DVII;
+       case CONNECTOR_ID_VIRTUAL:
                return DRM_MODE_CONNECTOR_VIRTUAL;
 
        default:
@@ -8440,6 +8442,8 @@ void amdgpu_dm_connector_init_helper(struct 
amdgpu_display_manager *dm,
                        link->link_enc->features.dp_ycbcr420_supported ? true : 
false;
                break;
        case DRM_MODE_CONNECTOR_DVID:
+       case DRM_MODE_CONNECTOR_DVII:
+       case DRM_MODE_CONNECTOR_VGA:
                aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
                break;
        default:
@@ -8631,7 +8635,7 @@ static int amdgpu_dm_connector_init(struct 
amdgpu_display_manager *dm,
                goto out_free;
        }
 
-       connector_type = to_drm_connector_type(link->connector_signal);
+       connector_type = to_drm_connector_type(link->link_id.id);
 
        res = drm_connector_init_with_ddc(
                        dm->ddev,
-- 
2.50.1

Reply via email to