From patchwork Thu Nov 22 10:22:55 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Egbert Eich X-Patchwork-Id: 1783261 Return-Path: X-Original-To: patchwork-dri-devel@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 D05693FC64 for ; Thu, 22 Nov 2012 10:53:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BC577436ED for ; Thu, 22 Nov 2012 02:53:49 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.17.8]) by gabe.freedesktop.org (Postfix) with ESMTP id 853FFE5CCE for ; Thu, 22 Nov 2012 02:51:05 -0800 (PST) Received: from debian (p5DCF0728.dip0.t-ipconnect.de [93.207.7.40]) by mrelayeu.kundenserver.de (node=mrbap1) with ESMTP (Nemesis) id 0LqWAb-1T77Qf0wqH-00dytD; Thu, 22 Nov 2012 11:51:04 +0100 Received: from sles11.fritz.box (sles11.fritz.box [192.168.178.22]) by debian (Postfix) with ESMTP id B40173F35F; Thu, 22 Nov 2012 11:50:59 +0100 (CET) From: Egbert Eich To: dri-devel@lists.freedesktop.org Subject: [PATCH v2 05/18] DRM/KMS/EDID: Test EDDC if EDID announces more than one Extension Block (v2) Date: Thu, 22 Nov 2012 05:22:55 -0500 Message-Id: <1353579788-30637-6-git-send-email-eich@suse.com> X-Mailer: git-send-email 1.7.7 In-Reply-To: <1353579788-30637-1-git-send-email-eich@suse.com> References: <1353356598-10634-1-git-send-email-eich@suse.de> <1353579788-30637-1-git-send-email-eich@suse.com> X-Provags-ID: V02:K0:VrhJRNetsRvGARebiwvnCHBbz18ZeON5Rc/J7Z6u1am HISO2hYtgOthTu3EkoopL8JzbODI4MSG6qLnE4SnqIDdhyD+Ws f7MO/U870bpKT90BchGn4rC0FlqO02yYAPi1SCU2HfGD69QU5j 9pnCR+YkuTyK9e2lqCN34ZUdzQLiUtUzkkSy5taAwMTaWJUl3C DV2T5jWnfHqWJCKQb6gDZqMMU5iY6M2jQX4b3cyTyjzvRowJ2l prRKI3FvVOkPE00NmM+f3f6SP8oxhx/Tdmhz1ZTqU83r7dk0PJ hraOjJe5mcgM7Bz7ZVGQVCSvXqR39/llJCgid4ShUcan8QaSQH tNV2gAymOVw643PD+ZSs= Cc: Egbert Eich , tiwai@suse.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org There are displays which announce EDID extension blocks in the Extension Flag of the EDID base block although they are not EDDC capable (ie. take a segment address at I2C slave address 0x30). We test this by looking for an EDID header which is only possible in the base block. If the segment address is not taken into account, this block will be identical to the base block in which case we stop reading further EEDID blocks, correct the extension flag and just return the base block. v2: Split up EDID fixup code into separate commit. Signed-off-by: Egbert Eich --- drivers/gpu/drm/drm_edid.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index a952cfe..5a0e331 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -364,6 +364,19 @@ drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) } if (drm_edid_block_valid(block + (valid_extensions + 1) * EDID_LENGTH, j, print_bad_edid)) { valid_extensions++; + /* Test if base block announced extension blocks although + * display is not EDDC capable. + */ + if (j == 2) { + int k; + for (k = 0; k < sizeof(edid_header); k++) + if (block[(EDID_LENGTH * 2) + k] != edid_header[k]) + break; + if (k == sizeof(edid_header)) { + valid_extensions = 0; + goto done_fix_extension_count; + } + } break; } }