> -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of > Dave Airlie > Sent: Sunday, September 1, 2019 11:09 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Subject: [PATCH] radeon: add option so DVI always respect HPD over DDC > > From: Dave Airlie <airlied@xxxxxxxxxx> > > Purelink FX-D120 (DVI over fibre extendeders) drive the HPD line low on the > GPU side when the monitor side device is unplugged or loses the connection. > However the GPU side device seems to cache EDID in this case. Per DVI spec > the HPD line must be driven in order for EDID to be done, but we've met > enough broken devices (mainly > VGA->DVI convertors) that do the wrong thing with HPD that we ignore > it if a DDC probe succeeds. > > This patch adds an option to the radeon driver to always respect HPD on DVI > connectors such that if the HPD line isn't driven then EDID isn't probed. Probably cleaner to make this a connector property rather than a global enable, but I'm not too pressed either way. Alex > > Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> > --- > drivers/gpu/drm/radeon/radeon.h | 1 + > drivers/gpu/drm/radeon/radeon_connectors.c | 7 +++++++ > drivers/gpu/drm/radeon/radeon_drv.c | 4 ++++ > 3 files changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon.h > b/drivers/gpu/drm/radeon/radeon.h index 32808e50be12..d572e8ded9b9 > 100644 > --- a/drivers/gpu/drm/radeon/radeon.h > +++ b/drivers/gpu/drm/radeon/radeon.h > @@ -117,6 +117,7 @@ extern int radeon_uvd; extern int radeon_vce; > extern int radeon_si_support; extern int radeon_cik_support; > +extern int radeon_respect_hpd; > > /* > * Copy from radeon_drv.h so we don't have to include both and have > conflicting diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c > b/drivers/gpu/drm/radeon/radeon_connectors.c > index c60d1a44d22a..e9b3924df06e 100644 > --- a/drivers/gpu/drm/radeon/radeon_connectors.c > +++ b/drivers/gpu/drm/radeon/radeon_connectors.c > @@ -1265,6 +1265,13 @@ radeon_dvi_detect(struct drm_connector > *connector, bool force) > goto exit; > } > > + if (radeon_respect_hpd && radeon_connector->hpd.hpd != > RADEON_HPD_NONE) { > + if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) > { > + ret = connector_status_disconnected; > + goto exit; > + } > + } > + > if (radeon_connector->ddc_bus) { > dret = radeon_ddc_probe(radeon_connector, false); > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c > b/drivers/gpu/drm/radeon/radeon_drv.c > index a6cbe11f79c6..556ae381ea86 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -207,6 +207,7 @@ int radeon_auxch = -1; int radeon_mst = 0; int > radeon_uvd = 1; int radeon_vce = 1; > +int radeon_respect_hpd = 0; > > MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch > registers"); module_param_named(no_wb, radeon_no_wb, int, 0444); @@ > -312,6 +313,9 @@ int radeon_cik_support = 1; > MODULE_PARM_DESC(cik_support, "CIK support (1 = enabled (default), 0 = > disabled)"); module_param_named(cik_support, radeon_cik_support, int, > 0444); > > +MODULE_PARM_DESC(respect_hpd, "For DVI always believe HPD"); > +module_param_named(respect_hpd, radeon_respect_hpd, int, 0644); > + > static struct pci_device_id pciidlist[] = { > radeon_PCI_IDS > }; > -- > 2.20.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx