diff options
author | Jon Mayo <jmayo@nvidia.com> | 2011-01-06 19:07:55 -0800 |
---|---|---|
committer | Yu-Huan Hsu <yhsu@nvidia.com> | 2011-01-10 11:59:38 -0800 |
commit | 633a7967cad4454327572f85fbdf5cd88eb68b78 (patch) | |
tree | 9f30b5b3adbbc832c55babcc92702461170acc9e | |
parent | 000f1dc44bb0a0c16158fa9de497f4848d99fa12 (diff) |
[ARM] tegra: hdmi hotplug fixed
modified tegra_dc_enable and tegra_dc_detect sequence for working
hotplug detection. HDMI enable pin needs to be enabled before EDID
detect function is used. The enable bails out early if pclk(pixel clock)
is 0, but pclk cannot be configured until modes are loaded by EDID
detect function.
Bug 727054
Change-Id: I2d02b82374c131ccbdb8e4e8f43e46840fbae06b
Reviewed-on: http://git-master/r/15197
Reviewed-by: Jonathan Mayo <jmayo@nvidia.com>
Tested-by: Jonathan Mayo <jmayo@nvidia.com>
Reviewed-by: Peter Zu <pzu@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
-rw-r--r-- | drivers/video/tegra/dc/dc.c | 6 | ||||
-rw-r--r-- | drivers/video/tegra/dc/hdmi.c | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index 3cee56e8b412..1777de0f0215 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -1030,14 +1030,14 @@ static void tegra_dc_init(struct tegra_dc *dc) static bool _tegra_dc_enable(struct tegra_dc *dc) { + if (dc->out && dc->out->enable) + dc->out->enable(); + if (dc->mode.pclk == 0) return false; tegra_dc_io_start(dc); - if (dc->out && dc->out->enable) - dc->out->enable(); - tegra_dc_setup_clk(dc, dc->clk); clk_enable(dc->clk); diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c index 4cd36dc8a858..323c93e553c2 100644 --- a/drivers/video/tegra/dc/hdmi.c +++ b/drivers/video/tegra/dc/hdmi.c @@ -497,6 +497,8 @@ static void tegra_dc_hdmi_detect_worker(struct work_struct *work) container_of(to_delayed_work(work), struct tegra_dc_hdmi_data, work); struct tegra_dc *dc = hdmi->dc; + tegra_dc_enable(dc); + if (!tegra_dc_hdmi_detect(dc)) { tegra_dc_disable(dc); tegra_fb_update_monspecs(dc->fb, NULL, NULL); |