From 0a550210ec0483a4da70bac3e42444d8df770a15 Mon Sep 17 00:00:00 2001
From: Elmar Stellnberger <estellnb@elstel.org>
Date: Mon, 22 Aug 2016 11:18:27 +0200
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 5451a43..3210bf5 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -114,6 +114,7 @@ extern int radeon_backlight;
 extern int radeon_auxch;
 extern int radeon_mst;
 extern int radeon_hdmimhz;
+extern int radeon_duallink;
 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 85cf798..8a3d182 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -203,6 +203,7 @@ int radeon_backlight = -1;
 int radeon_auxch = -1;
 int radeon_mst = 0;
 int radeon_hdmimhz = 0;
+int radeon_duallink = 0;
 int radeon_uvd = 1;
 int radeon_vce = 1;
 
@@ -299,6 +300,9 @@ module_param_named(mst, radeon_mst, 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(uvd, "uvd enable/disable uvd support (1 = enable, 0 = disable)");
 module_param_named(uvd, radeon_uvd, int, 0444);
 
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 0d06e12..1451fa3 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.9.3

