diff options
author | Erik Gilling <konkers@android.com> | 2011-02-28 15:28:49 -0800 |
---|---|---|
committer | Erik Gilling <konkers@android.com> | 2011-02-28 15:29:00 -0800 |
commit | 557c621d8a484da45f9167ae5922641a51afed95 (patch) | |
tree | e4d4ecc1c1fb6c7ee6c832037a9dbe60a9125630 /drivers | |
parent | 0fcb985c6a9b535c2501eaa041d8ad9289e4ae92 (diff) | |
parent | b8fcb1733b0c5e6ea92c76fdb049e7b2fa2b9290 (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.c | 7 | ||||
-rw-r--r-- | drivers/video/tegra/dc/hdmi.c | 7 |
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 */ |