Patrick Georgi (pgeorgi@google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17207
-gerrit
commit 47ba95e3486d50de733b839b84913b802e4b35aa Author: Lin Huang hl@rock-chips.com Date: Sun Oct 23 14:17:25 2016 -0700
soc/rockchip: split edp_enable() function
To avoid garbage display in firmware on warm reset, we need to enable eDP display in depthcharge instead when the framebuffer is cleared. Therefore limit edp_enable() in coreboot to just configure eDP, and leave enabling the display to depthcharge.
CQ-DEPEND=CL:402071 BUG=chrome-os-partner:58675 BRANCH=none TEST=Boot from kevin, and display work
Change-Id: I9d937ead33ebba58e33e02fd73b80d6e11bb69aa Signed-off-by: Patrick Georgi pgeorgi@chromium.org Original-Commit-Id: 38b0d18c3fae37dfccb18fe809f763b98703167c Original-Change-Id: Ibbc283a5892b98f4922f02fd67465fe2e1d01b71 Original-Signed-off-by: Lin Huang hl@rock-chips.com Original-Reviewed-on: https://chromium-review.googlesource.com/402095 Original-Reviewed-by: Julius Werner jwerner@chromium.org --- src/soc/rockchip/common/edp.c | 15 ++++++++++----- src/soc/rockchip/common/include/soc/edp.h | 1 + src/soc/rockchip/rk3288/display.c | 4 ++++ src/soc/rockchip/rk3399/display.c | 5 +++-- 4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/soc/rockchip/common/edp.c b/src/soc/rockchip/common/edp.c index 90bc6e7..5723ccf 100644 --- a/src/soc/rockchip/common/edp.c +++ b/src/soc/rockchip/common/edp.c @@ -921,10 +921,7 @@ static int rk_edp_config_video(struct rk_edp *edp) /* Disable video mute */ clrbits_le32(&edp->regs->video_ctl_1, VIDEO_MUTE);
- /* Enable video at next frame */ - setbits_le32(&edp->regs->video_ctl_1, VIDEO_EN); - - return rk_edp_is_video_stream_on(edp); + return 0; }
static void rockchip_edp_force_hpd(struct rk_edp *edp) @@ -985,7 +982,7 @@ int rk_edp_get_edid(struct edid *edid) return retval; }
-int rk_edp_enable(void) +int rk_edp_prepare(void) { int ret = 0;
@@ -1002,6 +999,14 @@ int rk_edp_enable(void) return ret; }
+int rk_edp_enable(void) +{ + /* Enable video at next frame */ + setbits_le32(&rk_edp.regs->video_ctl_1, VIDEO_EN); + + return rk_edp_is_video_stream_on(&rk_edp); +} + void rk_edp_init(void) { rk_edp.regs = (struct rk_edp_regs *)EDP_BASE; diff --git a/src/soc/rockchip/common/include/soc/edp.h b/src/soc/rockchip/common/include/soc/edp.h index 1721fc0..a9ebbc5 100644 --- a/src/soc/rockchip/common/include/soc/edp.h +++ b/src/soc/rockchip/common/include/soc/edp.h @@ -651,6 +651,7 @@ struct rk_edp { u8 train_set[4]; };
+int rk_edp_prepare(void); int rk_edp_enable(void); void rk_edp_init(void); int rk_edp_get_edid(struct edid *edid); diff --git a/src/soc/rockchip/rk3288/display.c b/src/soc/rockchip/rk3288/display.c index 30c8ca1..2298d8b 100644 --- a/src/soc/rockchip/rk3288/display.c +++ b/src/soc/rockchip/rk3288/display.c @@ -128,6 +128,10 @@ void rk_display_init(device_t dev, u32 lcdbase,
case VOP_MODE_EDP: default: + if (rk_edp_prepare()) { + printk(BIOS_WARNING, "edp prepare err\n"); + return; + } if (rk_edp_enable()) { printk(BIOS_WARNING, "edp enable err\n"); return; diff --git a/src/soc/rockchip/rk3399/display.c b/src/soc/rockchip/rk3399/display.c index 372e115..5b88478 100644 --- a/src/soc/rockchip/rk3399/display.c +++ b/src/soc/rockchip/rk3399/display.c @@ -99,8 +99,9 @@ void rk_display_init(device_t dev) return; case VOP_MODE_EDP: default: - if (rk_edp_enable()) { - printk(BIOS_WARNING, "edp enable error\n"); + /* will enable edp in depthcharge */ + if (rk_edp_prepare()) { + printk(BIOS_WARNING, "edp prepare error\n"); return; } mainboard_power_on_backlight();