[coreboot-gerrit] Patch set updated for coreboot: 57eb48f rk3288: send correct edid buffer size

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Apr 14 13:34:18 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9645

-gerrit

commit 57eb48fa15e96fb6bb54249ff1ba8fa9a2b105c0
Author: huang lin <hl at rock-chips.com>
Date:   Wed Jan 14 13:56:40 2015 +0800

    rk3288: send correct edid buffer size
    
    decode_edid() parses the whole edid buffer, regardless of whether there
    is an extension buffer, so we pass the size of the EDID actually read to
    prevent edid parser getting the wrong data.
    
    BUG=chrome-os-partner:35053
    TEST=Boot from jerry
    BRANCH=veyron
    
    Change-Id: I5951b670f129cf4765a5199cb58ac6abff5478a6
    Signed-off-by: Stefan Reinauer <reinauer at chromium.org>
    Original-Commit-Id: 4d508647efc0a9d48b2a4b23c12a54b63af2813e
    Original-Change-Id: I8cd8e09025520322461fe940b01e4af3995b5ecd
    Original-Signed-off-by: huang lin <hl at rock-chips.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/240643
    Original-Reviewed-by: Daniel Kurtz <djkurtz at chromium.org>
---
 src/soc/rockchip/rk3288/edp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/soc/rockchip/rk3288/edp.c b/src/soc/rockchip/rk3288/edp.c
index ce25c1b..7b69ce8 100644
--- a/src/soc/rockchip/rk3288/edp.c
+++ b/src/soc/rockchip/rk3288/edp.c
@@ -765,6 +765,7 @@ static int rk_edp_read_bytes_from_i2c(struct rk_edp *edp,
 static int rk_edp_read_edid(struct rk_edp *edp, struct edid *edid)
 {
 	u8 buf[EDID_LENGTH * 2];
+	u32 edid_size = EDID_LENGTH;
 	int retval;
 
 	/* Read EDID data */
@@ -778,6 +779,7 @@ static int rk_edp_read_edid(struct rk_edp *edp, struct edid *edid)
 
 	/* check if edid have extension flag, and read additional EDID data */
 	if (buf[EDID_EXTENSION_FLAG]) {
+		edid_size += EDID_LENGTH;
 		retval = rk_edp_read_bytes_from_i2c(edp, EDID_ADDR,
 					EDID_LENGTH, EDID_LENGTH,
 					&buf[EDID_LENGTH]);
@@ -787,7 +789,7 @@ static int rk_edp_read_edid(struct rk_edp *edp, struct edid *edid)
 		}
 	}
 
-	if (decode_edid(buf, sizeof(buf), edid)) {
+	if (decode_edid(buf, edid_size, edid)) {
 		printk(BIOS_ERR, "%s: Failed to decode EDID.\n",
 		       __func__);
 		return -1;



More information about the coreboot-gerrit mailing list