summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorErik Gilling <konkers@android.com>2011-02-28 15:28:49 -0800
committerErik Gilling <konkers@android.com>2011-02-28 15:29:00 -0800
commit557c621d8a484da45f9167ae5922641a51afed95 (patch)
treee4d4ecc1c1fb6c7ee6c832037a9dbe60a9125630 /drivers
parent0fcb985c6a9b535c2501eaa041d8ad9289e4ae92 (diff)
parentb8fcb1733b0c5e6ea92c76fdb049e7b2fa2b9290 (diff)
Merge branch linux-tegra-2.6.36 into android-tegra-2.6.36
Change-Id: Ie01fff1ceddfbada480ef2928ac4791853787a49
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/dc.c7
-rw-r--r--drivers/video/tegra/dc/hdmi.c7
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 1768efbc6e13..43d31840fd34 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -1047,6 +1047,9 @@ static bool _tegra_dc_enable(struct tegra_dc *dc)
clk_enable(dc->clk);
clk_enable(dc->emc_clk);
+ tegra_periph_reset_deassert(dc->clk);
+ msleep(10);
+
enable_irq(dc->irq);
tegra_dc_init(dc);
@@ -1118,10 +1121,10 @@ static void tegra_dc_reset_worker(struct work_struct *work)
msleep(100);
tegra_periph_reset_assert(dc->clk);
- msleep(100);
- tegra_periph_reset_deassert(dc->clk);
+ /* _tegra_dc_enable deasserts reset */
_tegra_dc_enable(dc);
+
mutex_unlock(&dc->lock);
}
diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c
index 92a12ee448c4..46c599d14b75 100644
--- a/drivers/video/tegra/dc/hdmi.c
+++ b/drivers/video/tegra/dc/hdmi.c
@@ -514,8 +514,8 @@ static void tegra_dc_hdmi_suspend(struct tegra_dc *dc)
struct tegra_dc_hdmi_data *hdmi = tegra_dc_get_outdata(dc);
unsigned long flags;
- spin_lock_irqsave(&hdmi->suspend_lock, flags);
tegra_nvhdcp_suspend(hdmi->nvhdcp);
+ spin_lock_irqsave(&hdmi->suspend_lock, flags);
hdmi->suspended = true;
spin_unlock_irqrestore(&hdmi->suspend_lock, flags);
}
@@ -603,6 +603,7 @@ static int tegra_dc_hdmi_init(struct tegra_dc *dc)
err = -EBUSY;
goto err_put_clock;
}
+ enable_irq_wake(gpio_to_irq(dc->out->hotplug_gpio));
hdmi->edid = tegra_edid_create(dc->out->dcc_bus);
if (IS_ERR_OR_NULL(hdmi->edid)) {
@@ -651,6 +652,7 @@ static int tegra_dc_hdmi_init(struct tegra_dc *dc)
err_edid_destroy:
tegra_edid_destroy(hdmi->edid);
err_free_irq:
+ disable_irq_wake(gpio_to_irq(dc->out->hotplug_gpio));
free_irq(gpio_to_irq(dc->out->hotplug_gpio), dc);
err_put_clock:
if (!IS_ERR_OR_NULL(disp2_clk))
@@ -672,6 +674,7 @@ static void tegra_dc_hdmi_destroy(struct tegra_dc *dc)
{
struct tegra_dc_hdmi_data *hdmi = tegra_dc_get_outdata(dc);
+ disable_irq_wake(gpio_to_irq(dc->out->hotplug_gpio));
free_irq(gpio_to_irq(dc->out->hotplug_gpio), dc);
cancel_delayed_work_sync(&hdmi->work);
switch_dev_unregister(&hdmi->hpd_switch);
@@ -853,7 +856,7 @@ static void tegra_dc_hdmi_setup_avi_infoframe(struct tegra_dc *dc, bool dvi)
avi.vic = 4; /* 60 Hz */
else
avi.vic = 19; /* 50 Hz */
- } else if (dc->mode.v_active == 720) {
+ } else if (dc->mode.v_active == 1080) {
avi.m = HDMI_AVI_M_16_9;
if (dc->mode.h_front_porch == 88)
avi.vic = 16; /* 60 Hz */