[PATCH] radeon: add option so DVI always respect HPD over DDC
Deucher, Alexander
Alexander.Deucher at amd.com
Sun Sep 8 22:52:33 UTC 2019
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Dave Airlie
> Sent: Sunday, September 1, 2019 11:09 PM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH] radeon: add option so DVI always respect HPD over DDC
>
> From: Dave Airlie <airlied at redhat.com>
>
> 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 at redhat.com>
> ---
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list