rpms/kernel/F-12 drm-edid-header-fixup.patch, NONE, 1.1 kernel.spec, 1.1916, 1.1917

Adam Jackson ajax at fedoraproject.org
Thu Nov 12 19:11:48 UTC 2009


Author: ajax

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv2654

Modified Files:
	kernel.spec 
Added Files:
	drm-edid-header-fixup.patch 
Log Message:
* Thu Nov 12 2009 Adam Jackson <ajax at redhat.com>
- Actually apply the EDID retry patch
- drm-edid-header-fixup.patch: Fix up some broken EDID headers (#534120)


drm-edid-header-fixup.patch:
 drm_edid.c |   22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

--- NEW FILE drm-edid-header-fixup.patch ---
diff -up linux-2.6.31.noarch/drivers/gpu/drm/drm_edid.c.jx linux-2.6.31.noarch/drivers/gpu/drm/drm_edid.c
--- linux-2.6.31.noarch/drivers/gpu/drm/drm_edid.c.jx	2009-11-12 13:52:01.000000000 -0500
+++ linux-2.6.31.noarch/drivers/gpu/drm/drm_edid.c	2009-11-12 14:00:26.000000000 -0500
@@ -123,16 +123,21 @@ static const u8 edid_header[] = {
  */
 static bool edid_is_valid(struct edid *edid)
 {
-	int i;
+	int i, score = 0;
 	u8 csum = 0;
 	u8 *raw_edid = (u8 *)edid;
 
-	if (memcmp(edid->header, edid_header, sizeof(edid_header)))
-		goto bad;
-	if (edid->version != 1) {
-		DRM_ERROR("EDID has major version %d, instead of 1\n", edid->version);
+	for (i = 0; i < sizeof(edid_header); i++)
+		if (raw_edid[i] == edid_header[i])
+			score++;
+
+	if (score == 8) ;
+	else if (score >= 6) {
+		DRM_DEBUG("Fixing EDID header, your hardware may be failing\n");
+		memcpy(raw_edid, edid_header, sizeof(edid_header));
+	} else
 		goto bad;
-	}
+
 	for (i = 0; i < EDID_LENGTH; i++)
 		csum += raw_edid[i];
 	if (csum) {
@@ -140,6 +145,11 @@ static bool edid_is_valid(struct edid *e
 		goto bad;
 	}
 
+	if (edid->version != 1) {
+		DRM_ERROR("EDID has major version %d, instead of 1\n", edid->version);
+		goto bad;
+	}
+
 	if (edid->revision > 4)
 		DRM_DEBUG("EDID minor > 4, assuming backward compatibility\n");
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.1916
retrieving revision 1.1917
diff -u -p -r1.1916 -r1.1917
--- kernel.spec	12 Nov 2009 16:50:22 -0000	1.1916
+++ kernel.spec	12 Nov 2009 19:11:48 -0000	1.1917
@@ -718,6 +718,7 @@ Patch1830: drm-r600-lenovo-w500-fix.patc
 Patch1831: drm-conservative-fallback-modes.patch
 Patch1832: drm-edid-retry.patch
 Patch1833: drm-radeon-fix-agp-resume.patch
+Patch1834: drm-edid-header-fixup.patch
 
 # vga arb
 Patch1900: linux-2.6-vga-arb.patch
@@ -1397,6 +1398,8 @@ ApplyPatch drm-radeon-fix-ring-rmw-issue
 ApplyPatch drm-r600-lenovo-w500-fix.patch
 ApplyPatch drm-conservative-fallback-modes.patch
 ApplyPatch drm-radeon-fix-agp-resume.patch
+ApplyPatch drm-edid-retry.patch
+ApplyPatch drm-edid-header-fixup.patch
 
 ApplyPatch drm-nouveau.patch
 # pm broken on my thinkpad t60p - airlied
@@ -2108,6 +2111,10 @@ fi
 # and build.
 
 %changelog
+* Thu Nov 12 2009 Adam Jackson <ajax at redhat.com>
+- Actually apply the EDID retry patch
+- drm-edid-header-fixup.patch: Fix up some broken EDID headers (#534120)
+
 * Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-130
 - Use ApplyOptionalPatch for v4l and firewire updates.
 - Drop unused v4l ABI fix.




More information about the scm-commits mailing list