Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932767AbbFQXOW (ORCPT ); Wed, 17 Jun 2015 19:14:22 -0400 Received: from mail-ig0-f181.google.com ([209.85.213.181]:35237 "EHLO mail-ig0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932709AbbFQXOT (ORCPT ); Wed, 17 Jun 2015 19:14:19 -0400 From: Doug Anderson To: Philipp Zabel , Russell King , Thierry Reding Cc: Heiko Stuebner , Doug Anderson , David Airlie , Andy Yan , Yakir Yang , Fabio Estevam , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm: bridge/dw_hdmi: Filter modes > 165MHz for DVI Date: Wed, 17 Jun 2015 16:14:07 -0700 Message-Id: <1434582847-713-1-git-send-email-dianders@chromium.org> X-Mailer: git-send-email 2.4.3.573.g4eafbef Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1608 Lines: 42 If you plug in a DVI monitor to your HDMI port, you need to filter out clocks > 165MHz. That's because 165MHz is the maximum clock rate that we can run single-link DVI at. If you want to run high resolutions to DVI, you'd need some type of an active adapter that pretended that it was HDMI, interpreted the signal, and produced a new dual link DVI signal at a lower clock rate. Signed-off-by: Doug Anderson --- Note: this patch was tested against a 3.14 kernel with backports. It was only compile tested against linuxnext, but the code is sufficiently similar that I'm convinced it will work there. drivers/gpu/drm/bridge/dw_hdmi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c index 816d104..48b8532 100644 --- a/drivers/gpu/drm/bridge/dw_hdmi.c +++ b/drivers/gpu/drm/bridge/dw_hdmi.c @@ -1421,8 +1421,12 @@ dw_hdmi_connector_mode_valid(struct drm_connector *connector, { struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, connector); + struct hdmi_vmode *vmode = &hdmi->hdmi_data.video_mode; enum drm_mode_status mode_status = MODE_OK; + if (mode->clock > 165000 && vmode->mdvi) + return MODE_BAD; + if (hdmi->plat_data->mode_valid) mode_status = hdmi->plat_data->mode_valid(connector, mode); -- 2.4.3.573.g4eafbef -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/