All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] radeon: add option so DVI always respect HPD over DDC
@ 2019-08-18  0:14 Dave Airlie
  0 siblings, 0 replies; 4+ messages in thread
From: Dave Airlie @ 2019-08-18  0:14 UTC (permalink / raw)
  To: dri-devel

From: Dave Airlie <airlied@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.

Signed-off-by: Dave Airlie <airlied@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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] radeon: add option so DVI always respect HPD over DDC
       [not found]     ` <BN6PR12MB1809BC6D87E3E4C564CB0CB8F7B40-/b2+HYfkarSEx6ez0IUAagdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2019-09-18  9:59       ` Dave Airlie
  0 siblings, 0 replies; 4+ messages in thread
From: Dave Airlie @ 2019-09-18  9:59 UTC (permalink / raw)
  To: Deucher, Alexander; +Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

On Mon, 9 Sep 2019 at 08:52, Deucher, Alexander
<Alexander.Deucher@amd.com> wrote:
>
> > -----Original Message-----
> > From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of
> > Dave Airlie
> > Sent: Sunday, September 1, 2019 11:09 PM
> > To: amd-gfx@lists.freedesktop.org
> > Subject: [PATCH] radeon: add option so DVI always respect HPD over DDC
> >
> > From: Dave Airlie <airlied@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.

Just wanted a way to let them set it on the command line, rather than
run a script at bootup, but maybe it's cleaner, will look into it a
bit more.

Dave.
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH] radeon: add option so DVI always respect HPD over DDC
       [not found] ` <20190902030915.20116-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2019-09-08 22:52   ` Deucher, Alexander
       [not found]     ` <BN6PR12MB1809BC6D87E3E4C564CB0CB8F7B40-/b2+HYfkarSEx6ez0IUAagdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Deucher, Alexander @ 2019-09-08 22:52 UTC (permalink / raw)
  To: Dave Airlie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Dave Airlie
> Sent: Sunday, September 1, 2019 11:09 PM
> To: amd-gfx@lists.freedesktop.org
> Subject: [PATCH] radeon: add option so DVI always respect HPD over DDC
> 
> From: Dave Airlie <airlied@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@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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] radeon: add option so DVI always respect HPD over DDC
@ 2019-09-02  3:09 Dave Airlie
       [not found] ` <20190902030915.20116-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Dave Airlie @ 2019-09-02  3:09 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Dave Airlie <airlied@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.

Signed-off-by: Dave Airlie <airlied@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-09-18  9:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-18  0:14 [PATCH] radeon: add option so DVI always respect HPD over DDC Dave Airlie
2019-09-02  3:09 Dave Airlie
     [not found] ` <20190902030915.20116-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-09-08 22:52   ` Deucher, Alexander
     [not found]     ` <BN6PR12MB1809BC6D87E3E4C564CB0CB8F7B40-/b2+HYfkarSEx6ez0IUAagdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-09-18  9:59       ` Dave Airlie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.