summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinod Polimera <vpolimer@codeaurora.org>2020-09-21 08:55:16 +0530
committerJulius Werner <jwerner@chromium.org>2020-10-09 22:03:35 +0000
commitb9a7d779b3cb48bb784d0856b6bb5f3fc6b4c1f7 (patch)
tree60e660db73d247be698ad68d94113e2a2ef2e19e
parent3c667a2e7d97bd0acd15a28e762bb793b5fa5d62 (diff)
sc7180: Remove the delay to force hpd detection and always disable HPD
HPD on this bridge chip is a bit useless. This is an eDP bridge so the HPD is an internal signal that's only there to signal that the panel is done powering up. But the bridge chip debounces this signal by between 100 ms and 400 ms (depending on process, voltage, and temperate). One particular panel asserted HPD 84 ms after it was powered on meaning that we saw HPD 284 ms after power on. Assume that the panel driver will have the hardcoded delay in its prepare and always disable HPD. Change-Id: Iea7dd75b57fa55ec182c0bee09b0f35208357892 Signed-off-by: Vinod Polimera <vpolimer@codeaurora.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/45706 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c32
1 files changed, 2 insertions, 30 deletions
diff --git a/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c b/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
index effa841690..5a6eb496ea 100644
--- a/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
+++ b/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
@@ -431,35 +431,6 @@ static void sn65dsi86_bridge_link_training(uint8_t bus, uint8_t chip)
printk(BIOS_ERR, "ERROR: Link training failed 10 times\n");
}
-static enum cb_err sn65dsi86_bridge_get_plug_in_status(uint8_t bus, uint8_t chip)
-{
- int val;
- uint8_t buf;
-
- val = i2c_readb(bus, chip, SN_HPD_DISABLE_REG, &buf);
- if (val == 0 && (buf & HPD_DISABLE))
- return CB_SUCCESS;
-
- return CB_ERR;
-}
-
-/*
- * support bridge HPD function some hardware versions do not support bridge hdp,
- * we use 360ms to try to get the hpd single now, if we can not get bridge hpd single,
- * it will delay 360ms, also meet the bridge power timing request, to be compatible
- * all of the hardware versions
- */
-static void sn65dsi86_bridge_wait_hpd(uint8_t bus, uint8_t chip)
-{
- if (wait_ms(400, sn65dsi86_bridge_get_plug_in_status(bus, chip)))
- return;
-
- printk(BIOS_WARNING, "HPD detection failed, force hpd\n");
-
- /* Force HPD */
- i2c_write_field(bus, chip, SN_HPD_DISABLE_REG, HPD_DISABLE, 1, 0);
-}
-
static void sn65dsi86_bridge_assr_config(uint8_t bus, uint8_t chip, int enable)
{
if (enable)
@@ -481,7 +452,8 @@ static int sn65dsi86_bridge_dp_lane_config(uint8_t bus, uint8_t chip)
void sn65dsi86_bridge_init(uint8_t bus, uint8_t chip, enum dp_pll_clk_src ref_clk)
{
- sn65dsi86_bridge_wait_hpd(bus, chip);
+ /* disable HPD */
+ i2c_write_field(bus, chip, SN_HPD_DISABLE_REG, HPD_DISABLE, 1, 0);
/* set refclk to 19.2 MHZ */
i2c_write_field(bus, chip, SN_DPPLL_SRC_REG, ref_clk, 7, 1);