From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christian Schmidt Subject: [PATCH] drm_edid_to_eld: check for CEA data blocks only from structure revision 3 on Date: Sun, 13 Nov 2011 02:13:25 +0100 Message-ID: <4EBF19B5.50106@digadd.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060506060804080100070505" Return-path: Received: from mx1.digadd.de (mx2.digadd.de [195.47.195.236]) by gabe.freedesktop.org (Postfix) with ESMTP id 387E09E82F for ; Sat, 12 Nov 2011 17:13:59 -0800 (PST) Received: from [192.168.5.128] by mx1.digadd.de with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from ) id 1RPOdy-00022V-71 for dri-devel@lists.freedesktop.org; Sun, 13 Nov 2011 02:13:58 +0100 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 List-Id: dri-devel@lists.freedesktop.org This is a multi-part message in MIME format. --------------060506060804080100070505 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit CEA datablocks are only defined from revision 3 onwards. Only check for them if the revision says so. Signed-of-by: Christian Schmidt --------------060506060804080100070505 Content-Type: text/x-patch; name="fix_drm_edid_to_eld.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="fix_drm_edid_to_eld.patch" diff -ur linux-3.2-rc1.orig/drivers/gpu/drm/drm_edid.c linux-3.2-rc1/drivers/gpu/drm/drm_edid.c --- linux-3.2-rc1.orig/drivers/gpu/drm/drm_edid.c 2011-11-13 02:05:32.897801011 +0100 +++ linux-3.2-rc1/drivers/gpu/drm/drm_edid.c 2011-11-13 02:08:45.466393573 +0100 @@ -1459,26 +1459,29 @@ eld[18] = edid->prod_code[0]; eld[19] = edid->prod_code[1]; - for (db = cea + 4; db < cea + cea[2]; db += dbl + 1) { - dbl = db[0] & 0x1f; - - switch ((db[0] & 0xe0) >> 5) { - case AUDIO_BLOCK: /* Audio Data Block, contains SADs */ - sad_count = dbl / 3; - memcpy(eld + 20 + mnl, &db[1], dbl); - break; - case SPEAKER_BLOCK: /* Speaker Allocation Data Block */ - eld[7] = db[1]; - break; - case VENDOR_BLOCK: - /* HDMI Vendor-Specific Data Block */ - if (db[1] == 0x03 && db[2] == 0x0c && db[3] == 0) - parse_hdmi_vsdb(connector, db); - break; - default: - break; + if (cea[1] >= 3) + for (db = cea + 4; db < cea + cea[2]; db += dbl + 1) { + dbl = db[0] & 0x1f; + + switch ((db[0] & 0xe0) >> 5) { + case AUDIO_BLOCK: + /* Audio Data Block, contains SADs */ + sad_count = dbl / 3; + memcpy(eld + 20 + mnl, &db[1], dbl); + break; + case SPEAKER_BLOCK: + /* Speaker Allocation Data Block */ + eld[7] = db[1]; + break; + case VENDOR_BLOCK: + /* HDMI Vendor-Specific Data Block */ + if (db[1] == 0x03 && db[2] == 0x0c && db[3] == 0) + parse_hdmi_vsdb(connector, db); + break; + default: + break; + } } - } eld[5] |= sad_count << 4; eld[2] = (20 + mnl + sad_count * 3 + 3) / 4; --------------060506060804080100070505 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel --------------060506060804080100070505--