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>
Reviewed-on: https://review.coreboot.org/17642
Tested-by: build bot (Jenkins)
Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
fd5fa2ad1f
commit
e4b9af15d8
|
@ -36,6 +36,17 @@
|
||||||
|
|
||||||
#include "chip.h"
|
#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)
|
void rk_display_init(device_t dev)
|
||||||
{
|
{
|
||||||
struct edid edid;
|
struct edid edid;
|
||||||
|
@ -65,14 +76,20 @@ void rk_display_init(device_t dev)
|
||||||
write32(&rk3399_grf->soc_con25, RK_SETBITS(1 << 11));
|
write32(&rk3399_grf->soc_con25, RK_SETBITS(1 << 11));
|
||||||
|
|
||||||
retry_edp:
|
retry_edp:
|
||||||
rk_edp_init();
|
while (retry_count++ < 3) {
|
||||||
if (rk_edp_get_edid(&edid) == 0) {
|
rk_edp_init();
|
||||||
detected_mode = VOP_MODE_EDP;
|
if (rk_edp_get_edid(&edid) == 0) {
|
||||||
break;
|
detected_mode = VOP_MODE_EDP;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (retry_count == 3) {
|
||||||
|
printk(BIOS_WARNING, "Warning: epd initialization failed.\n");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
reset_edp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
goto edp_error;
|
break;
|
||||||
|
|
||||||
/* fall thru */
|
|
||||||
case VOP_MODE_HDMI:
|
case VOP_MODE_HDMI:
|
||||||
printk(BIOS_WARNING, "HDMI display is NOT supported yet.\n");
|
printk(BIOS_WARNING, "HDMI display is NOT supported yet.\n");
|
||||||
return;
|
return;
|
||||||
|
@ -100,24 +117,14 @@ retry_edp:
|
||||||
case VOP_MODE_EDP:
|
case VOP_MODE_EDP:
|
||||||
default:
|
default:
|
||||||
/* will enable edp in depthcharge */
|
/* will enable edp in depthcharge */
|
||||||
if (rk_edp_prepare())
|
if (rk_edp_prepare()) {
|
||||||
goto edp_error;
|
reset_edp();
|
||||||
|
goto retry_edp; /* Rerun entire init sequence */
|
||||||
|
}
|
||||||
mainboard_power_on_backlight();
|
mainboard_power_on_backlight();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_vbe_mode_info_valid(&edid, (uintptr_t)0);
|
set_vbe_mode_info_valid(&edid, (uintptr_t)0);
|
||||||
return;
|
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");
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue