From a76c9eb8cde6725ba8db6c1f78df4bf6582082fb Mon Sep 17 00:00:00 2001
From: Elws. Starnight <elws@elstel.org>
From: Elws. Starnight <elws@elstel.org>
Date: Tue, 27 Nov 2018 18:03:33 +0100
Subject: [PATCH] radeon.duallink parameter introduced * has only effect when
 radeon.hdmimhz != 0;   it allows for duallink if the driver decides so * may
 be useful when connecting over a dual-link-DVI * as expected it was
 detremential with the R5 230 card   for 3840x2160@30 over HDMI 1.4

---
 drivers/gpu/drm/radeon/radeon.h          | 1 +
 drivers/gpu/drm/radeon/radeon_drv.c      | 4 ++++
 drivers/gpu/drm/radeon/radeon_encoders.c | 2 +-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 843e051e526d..120bc523e370 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -113,6 +113,7 @@ extern int radeon_bapm;
 extern int radeon_backlight;
 extern int radeon_auxch;
 extern int radeon_hdmimhz;
+extern int radeon_duallink;
 extern int radeon_mst;
 extern int radeon_uvd;
 extern int radeon_vce;
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index b62ac35c7eb4..b394736031c2 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -199,6 +199,7 @@ int radeon_bapm = -1;
 int radeon_backlight = -1;
 int radeon_auxch = -1;
 int radeon_hdmimhz = 0;
+int radeon_duallink = 0;
 int radeon_mst = 0;
 int radeon_uvd = 1;
 int radeon_vce = 1;
@@ -293,6 +294,9 @@ module_param_named(auxch, radeon_auxch, int, 0444);
 MODULE_PARM_DESC(hdmimhz, "Force a maximum HDMI pixel clock (in MHz); try 165/225/297/330 to overclock your TMDS for gaining a higher resolution.");
 module_param_named(hdmimhz, radeon_hdmimhz, int, 0444);
 
+MODULE_PARM_DESC(duallink, "Allow for the dual link feature when overclocking with radeon.hdmimhz.");
+module_param_named(duallink, radeon_duallink, int, 0444);
+
 MODULE_PARM_DESC(mst, "DisplayPort MST experimental support (1 = enable, 0 = disable)");
 module_param_named(mst, radeon_mst, int, 0444);
 
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 219b2dc038bc..a034d5080a54 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -372,7 +372,7 @@ bool radeon_dig_monitor_is_duallink(struct drm_encoder *encoder,
 	struct radeon_connector *radeon_connector;
 	struct radeon_connector_atom_dig *dig_connector;
 
-	if(radeon_hdmimhz > 0)
+	if( radeon_hdmimhz > 0 && !radeon_duallink )
 	  return false;
 
 	connector = radeon_get_connector_for_encoder(encoder);
-- 
2.11.0

