msm_fb: hdmi: Fix for EDID parser error.
For an older TV, which doesn't contain Data Block Collection,
the EDID parser was parsing wrong supported video resolutions.
As per EDID standard, if EDID block 1 byte 2 is 0x04, it means
there is no DBC available in EDID so the supported video resolutions
should be read from DTDs of block0 and block1 instead of SVD of
DBC. Reading DTDs for supported video resolutions instead of DBC for
byte 2 being 0x04 case, fixed the issue.
CRs-fixed: 332148
Change-Id: I637b91059952b63029cf4f05f750c340bdfa37a6
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
diff --git a/drivers/video/msm/external_common.c b/drivers/video/msm/external_common.c
index 07a075c..9fdd801 100644
--- a/drivers/video/msm/external_common.c
+++ b/drivers/video/msm/external_common.c
@@ -911,8 +911,13 @@
uint32 offset = 4;
*len = 0;
- if ((in_buf[2] == 4) && (type != 2)) { /* no non-DTD data present */
- DEV_WARN("EDID: no non-DTD data present\n");
+
+ /*edid buffer 1, byte 2 being 4 means no non-DTD/Data block collection
+ present.
+ edid buffer 1, byte 2 being 0 menas no non-DTD/DATA block collection
+ present and no DTD data present.*/
+ if ((in_buf[2] == 0) || (in_buf[2] == 4)) {
+ DEV_WARN("EDID: no DTD or non-DTD data present\n");
return NULL;
}
while (offset < 0x80) {