[PATCH 2/4] drm/dp_mst: Don't cache EDIDs for physical ports

Imre Deak imre.deak at intel.com
Tue Feb 2 11:22:07 UTC 2021


On Tue, Feb 02, 2021 at 03:38:16AM +0000, Lin, Wayne wrote:
> [AMD Public Use]
> 
> > -----Original Message-----
> > From: Imre Deak <imre.deak at intel.com>
> > Sent: Monday, February 1, 2021 8:02 PM
> > To: dri-devel at lists.freedesktop.org
> > Cc: Lin, Wayne <Wayne.Lin at amd.com>; Lyude Paul <lyude at redhat.com>
> > Subject: [PATCH 2/4] drm/dp_mst: Don't cache EDIDs for physical ports
> >
> > Caching EDIDs for physical ports prevents updating the EDID if a port gets reconnected via a Connection Status Notification message,
> > fix this.
> >
> > Fixes: db1a07956968 ("drm/dp_mst: Handle SST-only branch device case")
> > Cc: Wayne Lin <Wayne.Lin at amd.com>
> > Cc: Lyude Paul <lyude at redhat.com>
> > Signed-off-by: Imre Deak <imre.deak at intel.com>
> > ---
> >  drivers/gpu/drm/drm_dp_mst_topology.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> > index deb7995f42fa..309afe61afdd 100644
> > --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> > @@ -2302,7 +2302,8 @@ drm_dp_mst_port_add_connector(struct drm_dp_mst_branch *mstb,
> >  }
> >
> >  if (port->pdt != DP_PEER_DEVICE_NONE &&
> > -    drm_dp_mst_is_end_device(port->pdt, port->mcs)) {
> > +    drm_dp_mst_is_end_device(port->pdt, port->mcs) &&
> > +    port->port_num >= DP_MST_LOGICAL_PORT_0) {
> Hi Imre Deak,
> 
> Thanks for the patch!
> Just curious that you mean we don't want to fetch the EDID of the sst
> monitor like below case?
>
>     Src->MST device ->SST monitor

The intention of the mst cached_edid logic is to cache the EDID for
logical ports where the EDID cannot change anyway. The EDID on physical
ports is fetched during connector probing just as for any other
connector.

> I thought we still need to get the EDID even the monitor is connected
> to the physical output port of mst device.

For sinks attached to phyisical ports we get the EDID whenever probing
the corresponding connector.

> Maybe what we should fix here is why the EDID is not get updated once
> reconnected via CSN message?

This patch fixes the problem that we stopped updating the EDID for
physical connectors. After this change it will get updated when probing
such connectors.

> Thanks!
> >  port->cached_edid = drm_get_edid(port->connector,
> >   &port->aux.ddc);
> >  drm_connector_set_tile_property(port->connector);
> > --
> > 2.25.1
> Regards,
> Wayne Lin


More information about the dri-devel mailing list