[PATCH 01/20] drm/amd/display: Determine DRM connector type more accurately

Timur Kristóf timur.kristof at gmail.com
Wed Jul 30 18:19:13 UTC 2025


On Wed, 2025-07-30 at 13:29 -0400, Harry Wentland wrote:
> 
> 
> On 2025-07-30 13:03, Timur Kristóf wrote:
> > On Wed, 2025-07-30 at 10:30 -0400, Harry Wentland wrote:
> > > 
> > > 
> > > On 2025-07-30 03:40, Timur Kristóf wrote:
> > > > On Tue, 2025-07-29 at 14:03 -0400, Harry Wentland wrote:
> > > > > 
> > > > > 
> > > > > On 2025-07-23 11:57, Timur Kristóf wrote:
> > > > > > 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.kristof at 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:
> > > > > 
> > > > > This seems unrelated and would do better in a separate patch.
> > > > > 
> > > > > Harry
> > > > 
> > > > Keep in mind that currently DC recognizes DVI-I as DVI-D, but
> > > > after
> > > > this patch they will be recognized correctly as DVI-I. So
> > > > without
> > > > this
> > > > part, the patch will regress the hotplug capability of those
> > > > ports.
> > > > 
> > > 
> > > How will it regress when your patch series introduces analog
> > > support?
> > > Without that there shouldn't be DVII or VGA connectors.
> > > 
> > > Harry
> > 
> > DVI-I can carry either an analog or a digital signal.
> > 
> > Before this patch, the DVI-I ports were recognized by DRM as
> > DRM_MODE_CONNECTOR_DVID and their digital part was already working.
> > That means you can plug in a digital DVI cable in a DVI-I port and
> > it
> > will work today.
> > 
> > After this patch they will be recognized as DRM_MODE_CONNECTOR_DVII
> > instead, so in order to keep the same behaviour as before and avoid
> > regressing the digital part, we need to set DRM_CONNECTOR_POLL_HPD,
> > and
> > in order to do that we need to add DRM_MODE_CONNECTOR_DVII to this
> > switch statement.
> > 
> 
> Thanks for the explanation. In that case the changes are all related
> and it's probably easier to keep them together.
> 
> Reviewed-by: Harry Wentland <harry.wentland at amd.com>
> 
> Harry

Thank you.

In the next version of the series I'll edit the commit message to make
it clearer why this is necessary.

> 
> > That being said, I can move this hunk to a separate patch before
> > this
> > one. That way there is going to be no regression and this patch
> > stays
> > simpler.
> > 
> > Does that sound ok to you?
> > 
> > Timur
> > 
> > > 
> > > > That said, sure, I can move this part to a separate commit
> > > > before
> > > > this
> > > > one, if you prefer.
> > > > 
> > > > Timur
> > > > 
> > > > > 
> > > > > >  		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,


More information about the amd-gfx mailing list