From fba18bc7970256df9003551bf2218e991fce82ca Mon Sep 17 00:00:00 2001 From: huang lin Date: Wed, 14 Jan 2015 13:56:40 +0800 Subject: [PATCH] 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: I8cd8e09025520322461fe940b01e4af3995b5ecd Signed-off-by: huang lin Reviewed-on: https://chromium-review.googlesource.com/240643 Reviewed-by: Daniel Kurtz Reviewed-on: https://chromium-review.googlesource.com/242159 Tested-by: Julius Werner Reviewed-by: Julius Werner Commit-Queue: Julius Werner --- 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 ce25c1b1fb..7b69ce8d2d 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;