So much broken hardware, so few bullets.

Signed-off-by: Adam Jackson <[email protected]>
---
 Documentation/kernel-parameters.txt |    3 +++
 drivers/gpu/drm/drm_edid.c          |   12 ++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 17d50d2..5814331 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -713,6 +713,9 @@ and is between 256 and 4096 characters. It is defined in 
the file
        edd=            [EDD]
                        Format: {"off" | "on" | "skip[mbr]"}
 
+       edid_force_checksum=<bool> [DRM]
+                       Forcibly correct EDID checksum errors. Default is off.
+
        edid_threshold=<int> [DRM]
                        Set the minimum number of bytes of an EDID header
                        that must be valid, out of 8.  The default is 6.
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 6a1b5a3..55b498e 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -66,6 +66,10 @@ static unsigned int edid_threshold = 6;
 MODULE_PARM_DESC(edid_threshold, "EDID header fixup threshold (default: 6)");
 module_param_named(edid_threshold, edid_threshold, int, 0600);
 
+static bool edid_force_checksum = 0;
+MODULE_PARM_DESC(edid_force_checksum, "Forcibly correct EDID checksum");
+module_param_named(edid_force_checksum, edid_force_checksum, int, 0600);
+
 #define LEVEL_DMT      0
 #define LEVEL_GTF      1
 #define LEVEL_GTF2     2
@@ -149,8 +153,12 @@ drm_edid_block_valid(u8 *raw_edid)
        for (i = 0; i < EDID_LENGTH; i++)
                csum += raw_edid[i];
        if (csum) {
-               DRM_ERROR("EDID checksum is invalid, remainder is %d\n", csum);
-               goto bad;
+               if (edid_force_checksum) {
+                       raw_edid[0x7f] -= csum;
+               } else {
+                       DRM_ERROR("EDID checksum is invalid (%d)\n", csum);
+                       goto bad;
+               }
        }
 
        /* per-block-type checks */
-- 
1.7.0.1

_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to