Re: [U-Boot] [PATCH 1/2] sunxi: video: Add a hpd_delay parameter to configure hpd delay

2014-12-29 Thread Ian Campbell
On Sun, 2014-12-28 at 17:08 +0100, Hans de Goede wrote:
 In some extreme cases it may be necessary to wait 1.5 seconds or more for a 
 hpd
 signal to show up (and be able to read edid info), but we do not want to
 penalize all headless boots with an extra second boot delay, so add a 
 hpd_delay
 parameter which can be set through the video-mode env. variable.
 
 While at it raise the default from 300ms to 500ms as 300 may very well be too
 low in many cases.
 
 Signed-off-by: Hans de Goede hdego...@redhat.com

Acked-by: Ian Campbell i...@hellion.org.uk


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 1/2] sunxi: video: Add a hpd_delay parameter to configure hpd delay

2014-12-28 Thread Hans de Goede
In some extreme cases it may be necessary to wait 1.5 seconds or more for a hpd
signal to show up (and be able to read edid info), but we do not want to
penalize all headless boots with an extra second boot delay, so add a hpd_delay
parameter which can be set through the video-mode env. variable.

While at it raise the default from 300ms to 500ms as 300 may very well be too
low in many cases.

Signed-off-by: Hans de Goede hdego...@redhat.com
---
 doc/README.video  | 8 +++-
 drivers/video/sunxi_display.c | 9 +
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/doc/README.video b/doc/README.video
index 2c55d6a..d0a3ad6 100644
--- a/doc/README.video
+++ b/doc/README.video
@@ -53,6 +53,12 @@ The sunxi u-boot driver supports the following video-mode 
options:
  1: Enabled.  Fallback to the lcd / vga / none in that order (if available)
  Defaults to hpd=1.
 
+- hpd_delay=int - How long to wait for the hdmi HPD signal in milliseconds
+ When the monitor and the board power up at the same time, it may take some
+ time for the monitor to assert the HPD signal. This configures how long to
+ wait for the HPD signal before assuming no cable is connected.
+ Defaults to hpd_delay=500.
+
 - edid=[0|1] - Enable use of DDC + EDID to get monitor info
  0: Disabled.
  1: Enabled. If valid EDID info was read from the monitor the EDID info will
@@ -61,4 +67,4 @@ The sunxi u-boot driver supports the following video-mode 
options:
 
 For example to always use the hdmi connector, even if no cable is inserted,
 using edid info when available and otherwise initalizing it at 1024x768@60Hz,
-use: video-mode=sunxi:1024x768-24@60,monitor=dvi,hpd=0,edid=1 .
+use: setenv video-mode sunxi:1024x768-24@60,monitor=dvi,hpd=0,edid=1.
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index 2eafcab..9d17522 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -56,13 +56,13 @@ static int await_completion(u32 *reg, u32 mask, u32 val)
return 0;
 }
 
-static int sunxi_hdmi_hpd_detect(void)
+static int sunxi_hdmi_hpd_detect(int hpd_delay)
 {
struct sunxi_ccm_reg * const ccm =
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
struct sunxi_hdmi_reg * const hdmi =
(struct sunxi_hdmi_reg *)SUNXI_HDMI_BASE;
-   unsigned long tmo = timer_get_us() + 30;
+   unsigned long tmo = timer_get_us() + hpd_delay * 1000;
 
/* Set pll3 to 300MHz */
clock_set_pll3(3);
@@ -854,7 +854,7 @@ void *video_hw_init(void)
struct ctfb_res_modes custom;
const char *options;
 #ifdef CONFIG_VIDEO_HDMI
-   int ret, hpd, edid;
+   int ret, hpd, hpd_delay, edid;
 #endif
char mon[16];
char *lcd_mode = CONFIG_VIDEO_LCD_MODE;
@@ -870,6 +870,7 @@ void *video_hw_init(void)
 sunxi_display.depth, options);
 #ifdef CONFIG_VIDEO_HDMI
hpd = video_get_option_int(options, hpd, 1);
+   hpd_delay = video_get_option_int(options, hpd_delay, 500);
edid = video_get_option_int(options, edid, 1);
sunxi_display.monitor = sunxi_monitor_dvi;
 #elif defined CONFIG_VIDEO_VGA_VIA_LCD
@@ -894,7 +895,7 @@ void *video_hw_init(void)
if (sunxi_display.monitor == sunxi_monitor_dvi ||
sunxi_display.monitor == sunxi_monitor_hdmi) {
/* Always call hdp_detect, as it also enables clocks, etc. */
-   ret = sunxi_hdmi_hpd_detect();
+   ret = sunxi_hdmi_hpd_detect(hpd_delay);
if (ret) {
printf(HDMI connected: );
if (edid  sunxi_hdmi_edid_get_mode(custom) == 0)
-- 
2.1.0

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot