From patchwork Wed Jul 11 09:47:51 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 1181171 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id 890A53FC8E for ; Wed, 11 Jul 2012 09:48:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E1A7A0E0C for ; Wed, 11 Jul 2012 02:48:30 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 562AC9E782 for ; Wed, 11 Jul 2012 02:47:54 -0700 (PDT) Received: by wgbdr1 with SMTP id dr1so701812wgb.12 for ; Wed, 11 Jul 2012 02:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:x-mailer; bh=vifba90ToDs8a3ALXdi0IcFKGfSZKEjcvE8mKG/hnUU=; b=HnFwwc6Y8rQwLykCbDAYMf67h9xqn2Uzu7/govd6jkBJY7lDEWQ60CrAUNjoQpI+IC kK2v6YQ5wK6/Qa8/FtTLKHxVWIfYw916qKjkgMO+oRDc7X6D22iHMiLgGBMVRoKUYJf4 DaKV2tScVGoB2MArazWBq5kwTsQMNVxyuRgbo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=vifba90ToDs8a3ALXdi0IcFKGfSZKEjcvE8mKG/hnUU=; b=H8T2L1NrAsALhSpfrEbeuTc/DIgTF+WgAaVLspRPpZFFgEISFYuTiFUOZThVJhTRVB 0MAMna/gXAk7rDS3X2qt2JV//vupunmVpMVOkp6fbAPTIXPdbNcrg4v9BrjK/8ukiig3 IIcn8p2FIeP+Gza6U0rIJIkK0yxDmWz5WKH776F/d3o9/6/HyxYYCVo6XvsM+LCbj0z7 P1fq6Iy4ITH4KV4Bd3UrGg9mt3Lcd6ejJSD3/WHSh/4cVxnz2doDkcyJxnpoudPS/BcP F9n5CWZdrGXWOnRxHGF84+stIk+eK+9YFUNxJWeAlv/JQOOqEx42DAl2ffE+IvJlr3gj u52Q== Received: by 10.216.131.170 with SMTP id m42mr17646003wei.82.1342000073384; Wed, 11 Jul 2012 02:47:53 -0700 (PDT) Received: from phenom.ffwll.local (178-83-130-250.dynamic.hispeed.ch. [178.83.130.250]) by mx.google.com with ESMTPS id y5sm32891067wiw.9.2012.07.11.02.47.51 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 11 Jul 2012 02:47:52 -0700 (PDT) From: Daniel Vetter To: Intel Graphics Development Date: Wed, 11 Jul 2012 11:47:51 +0200 Message-Id: <1342000071-25057-1-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 1.7.10 X-Gm-Message-State: ALoCoQm4Semy5gsvE5+GbL+0rqOKxjsJv26gURegoCoMNRwi+lSYwirjfRNhKdX6itt+QyIvJE2R Cc: Daniel Vetter Subject: [Intel-gfx] [PATCH] drm/i915: check whether we actually received an edid in detect_ddc X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Somehow detect_ddc manages to fall through all checks when we think that something responds on the ddc i2c address, but the edid read failed. Fix this up by explicitly checking for this case. This fixes a regression on newer chips because since commit aaa377302b2994fcc2c66741b47da33feb489dca Author: Daniel Vetter Date: Sat Jun 16 15:30:32 2012 +0200 drm/i915/crt: Do not rely upon the HPD presence pin we use ddc detection also on hotplug capable platforms. And one of these reads all 0s for any i2c transaction if nothing is connected to the vga port. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51900 Tested-by: Yang Guang Signed-Off-by: Daniel Vetter --- drivers/gpu/drm/i915/intel_crt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 61d55d3..540561c 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -353,6 +353,9 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; connector->display_info.raw_edid = NULL; kfree(edid); + } else { + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n"); + return false; } if (!is_digital) {