[PATCH v2 2/2] drm/nouveau: increase max pixel clock to 225 MHZ for HDMI

Hauke Mehrtens hauke at hauke-m.de
Sat Oct 10 07:10:01 PDT 2015


The Nvidia blob allows a pixel clock up to 225 MHz in version 346.59,
but only allowed 165MHz in version 295 for HDMI connections. This was
tested with a GF114 (Nvidia GTX 560 TI) and a HDMI monitor which used
225 MHz pixel clock and a signal link DVI monitor with a pixel clock of
less than 165 MHz. This should also be tested with some other device,
but I only have this one graphics card.

The HDMI standard <= 1.2 allowed a maximal pixel clock of 165 MHz and
the HDMI standard >= 1.3 allows a maximal pixel clock of 340 MHz. One
DVI link only allows a maximum clock of 165 MHz, so this should only be
changed for HDMI.

My assumption is that all Nvidia cards with HDMI support a Pixel clock
of 225 MHz, but I haven't tested this.

Without this patch the maximal screen resolution which was also
automatically chosen by nouveau is 2048x1152 at 60, but no BIOS messages
are shown on this monitor at all, it only gets activated when nouveau
is active. Without forcing, X still uses 2048x1152 at 60 by default, but
I can force it to something better with this patch.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 drivers/gpu/drm/nouveau/nouveau_connector.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 2e7cbe9..af813e7 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -815,8 +815,10 @@ get_tmds_link_bandwidth(struct drm_connector *connector)
 	struct nouveau_drm *drm = nouveau_drm(connector->dev);
 	struct dcb_output *dcb = nv_connector->detected_encoder->dcb;
 
-	if (dcb->location != DCB_LOC_ON_CHIP ||
-	    drm->device.info.chipset >= 0x46)
+	if (drm_detect_hdmi_monitor(nv_connector->edid))
+		return 225000;
+	else if (dcb->location != DCB_LOC_ON_CHIP ||
+		 drm->device.info.chipset >= 0x46)
 		return 165000;
 	else if (drm->device.info.chipset >= 0x40)
 		return 155000;
-- 
2.1.4



More information about the dri-devel mailing list