From mboxrd@z Thu Jan 1 00:00:00 1970 From: Egbert Eich Subject: [PATCH 03/17] DRM/KMS/EDID: Return Base EDID block if reading EEDID Blocks fails. Date: Mon, 19 Nov 2012 15:23:04 -0500 Message-ID: <1353356598-10634-4-git-send-email-eich@suse.de> References: <1353356598-10634-1-git-send-email-eich@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E349E6251 for ; Mon, 19 Nov 2012 12:41:28 -0800 (PST) In-Reply-To: <1353356598-10634-1-git-send-email-eich@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Egbert Eich , Takashi Iwai List-Id: dri-devel@lists.freedesktop.org If I2C readout fails for an extension block but we have read a valid base block, don't fail completely but at least return the base block. Signed-off-by: Egbert Eich --- drivers/gpu/drm/drm_edid.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index f90d968..b258646 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -355,8 +355,10 @@ drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) for (i = 0; i < 4; i++) { if (drm_do_probe_ddc_edid(adapter, block + (valid_extensions + 1) * EDID_LENGTH, - j, EDID_LENGTH)) - goto out; + j, EDID_LENGTH)) { + valid_extensions = 0; + goto no_more; + } if (drm_edid_block_valid(block + (valid_extensions + 1) * EDID_LENGTH, j, print_bad_edid)) { valid_extensions++; break; @@ -368,6 +370,7 @@ drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) drm_get_connector_name(connector), j); } + no_more: if (valid_extensions != block[EDID_EXTENSION_FLAG_OFFSET]) { block[EDID_CHECKSUM_OFFSET] += block[EDID_EXTENSION_FLAG_OFFSET] - valid_extensions; block[EDID_EXTENSION_FLAG_OFFSET] = valid_extensions; -- 1.7.7