Martin Roth (martinroth@google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17642
-gerrit
commit 4b58a76950ae81ef4f6450747d409e9a74ef6d93 Author: Martin Roth martinroth@google.com Date: Tue Nov 29 10:50:52 2016 -0700
rockchip/rk3399: display: Update edp initialization retry
Follow on patch to clean up the previous retry code. Previous patches: coreboot commit 079b5c65 (rockchip/rk3399: display: Retry edp initialization if it fails) cros commit 28c57a6e (rockchip/rk3399: display: retry edp initialization if edp initial fail)
- Reduce the jumping around via goto statements - Break the retry code out into a separate function that also prints the error messages.
BRANCH=gru BUG=chrome-os-partner:60150 TEST=Rebuild Kevin and Gru
Change-Id: I3b6cf572073e4dcac83da09621bafde179af2613 Signed-off-by: Martin Roth martinroth@google.com --- src/soc/rockchip/rk3399/display.c | 44 +++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/src/soc/rockchip/rk3399/display.c b/src/soc/rockchip/rk3399/display.c index 4261b26..0e4f2be 100644 --- a/src/soc/rockchip/rk3399/display.c +++ b/src/soc/rockchip/rk3399/display.c @@ -36,6 +36,17 @@
#include "chip.h"
+static void reset_edp(void) +{ + /* rst edp */ + write32(&cru_ptr->softrst_con[17], + RK_SETBITS(1 << 12 | 1 << 13)); + udelay(1); + write32(&cru_ptr->softrst_con[17], + RK_CLRBITS(1 << 12 | 1 << 13)); + printk(BIOS_WARNING, "Retrying epd initialization.\n"); +} + void rk_display_init(device_t dev) { struct edid edid; @@ -65,14 +76,17 @@ void rk_display_init(device_t dev) write32(&rk3399_grf->soc_con25, RK_SETBITS(1 << 11));
retry_edp: - rk_edp_init(); - if (rk_edp_get_edid(&edid) == 0) { - detected_mode = VOP_MODE_EDP; - break; + while (retry_count++ < 3) { + rk_edp_init(); + if (rk_edp_get_edid(&edid) == 0) { + detected_mode = VOP_MODE_EDP; + break; + } + reset_edp(); } - goto edp_error; + printk(BIOS_WARNING, "Warning: epd initialization failed.\n"); + return;
- /* fall thru */ case VOP_MODE_HDMI: printk(BIOS_WARNING, "HDMI display is NOT supported yet.\n"); return; @@ -100,24 +114,14 @@ retry_edp: case VOP_MODE_EDP: default: /* will enable edp in depthcharge */ - if (rk_edp_prepare()) - goto edp_error; + if (rk_edp_prepare()) { + reset_edp(); + goto retry_edp; /* Rerun entire init sequence */ + } mainboard_power_on_backlight(); break; }
set_vbe_mode_info_valid(&edid, (uintptr_t)0); return; - -edp_error: - if (retry_count++ < 3) { - /* rst edp */ - write32(&cru_ptr->softrst_con[17], - RK_SETBITS(1 << 12 | 1 << 13)); - udelay(1); - write32(&cru_ptr->softrst_con[17], - RK_CLRBITS(1 << 12 | 1 << 13)); - goto retry_edp; - } - printk(BIOS_WARNING, "epd initial error\n"); }