[coreboot-gerrit] Patch set updated for coreboot: soc/rockchip: split edp_enable() function
Patrick Georgi (pgeorgi@google.com)
gerrit at coreboot.org
Fri Nov 11 12:50:19 CET 2016
Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17207
-gerrit
commit 1b2acc7e00bf4a609fb70795189a497c20642d8d
Author: Lin Huang <hl at 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 at chromium.org>
Original-Commit-Id: 38b0d18c3fae37dfccb18fe809f763b98703167c
Original-Change-Id: Ibbc283a5892b98f4922f02fd67465fe2e1d01b71
Original-Signed-off-by: Lin Huang <hl at rock-chips.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/402095
Original-Reviewed-by: Julius Werner <jwerner at 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();
More information about the coreboot-gerrit
mailing list