sunxi: video: Give hotplug-detect (hpd) signal some time to show up
When using a hdmi powered hdmi to vga dongle, and cold booting a sunxi device, the hpd detect code would not see the dongle (until a warm reboot), because the dongle needs some time to boot. Testing has shown that this dongle needs 213ms to respond on a cold boot, so wait up to 300ms for a hpd signal to show up before giving up. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk> Acked-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
parent
f300068ddd
commit
40f1b87ce7
|
|
@ -48,6 +48,7 @@ static int sunxi_hdmi_hpd_detect(void)
|
||||||
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
|
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
|
||||||
struct sunxi_hdmi_reg * const hdmi =
|
struct sunxi_hdmi_reg * const hdmi =
|
||||||
(struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
|
(struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
|
||||||
|
unsigned long tmo = timer_get_us() + 300000;
|
||||||
|
|
||||||
/* Set pll3 to 300MHz */
|
/* Set pll3 to 300MHz */
|
||||||
clock_set_pll3(300000000);
|
clock_set_pll3(300000000);
|
||||||
|
|
@ -68,9 +69,12 @@ static int sunxi_hdmi_hpd_detect(void)
|
||||||
writel(SUNXI_HDMI_CTRL_ENABLE, &hdmi->ctrl);
|
writel(SUNXI_HDMI_CTRL_ENABLE, &hdmi->ctrl);
|
||||||
writel(SUNXI_HDMI_PAD_CTRL0_HDP, &hdmi->pad_ctrl0);
|
writel(SUNXI_HDMI_PAD_CTRL0_HDP, &hdmi->pad_ctrl0);
|
||||||
|
|
||||||
udelay(1000);
|
while (timer_get_us() < tmo) {
|
||||||
|
if (readl(&hdmi->hpd) & SUNXI_HDMI_HPD_DETECT)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return (readl(&hdmi->hpd) & SUNXI_HDMI_HPD_DETECT) ? 1 : 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sunxi_hdmi_shutdown(void)
|
static void sunxi_hdmi_shutdown(void)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue