aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/sh_mobile_hdmi.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-05-25 11:42:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-05-25 11:42:37 -0400
commit0f1493a60167cf6333626456d3fc8aff4e6fa237 (patch)
tree3b46a263bbab4fd396f01f35f0ceca7f3b063163 /drivers/video/sh_mobile_hdmi.c
parent023bc8e75f8cf9e4da8411154be22a4f809d3314 (diff)
parent087faf77a57b06f9a8ce37781c68e3f02468322b (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6: (126 commits) sh_mobile_meram: Safely disable MERAM operation when not initialized video: mb862xxfb: add support for L1 displaying video: mb862xx: add support for controller's I2C bus adapter video: mb862xxfb: relocate register space to get contiguous vram video: mb862xxfb: use pre-initialized configuration for PCI GDCs video: mb862xxfb: correct fix.smem_len field initialization video: s3c-fb: correct transparency checking in 32bpp video: s3c-fb: add gpio setup function to resume function fbdev/amifb: Remove superfluous alignment of frame buffer memory fbdev/amifb: Do not call panic() if there's not enough Chip RAM fbdev/amifb: Correct check for video memory size video: mb862xxfb: Require either FB_MB862XX_PCI_GDC or FB_MB862XX_LIME video: s3c-fb: add window variant information for S5P video: s3c-fb: add additional validate bpps video: s3c-fb: correct window osd size offset values udlfb: include prefetch.h explicitly drivers/video/s3c2410fb.c: Convert release_resource to release_mem_region drivers/video/sm501fb.c: Convert release_resource to release_mem_region drivers/video: Convert release_resource to release_mem_region video, udlfb: Fix two build warnings about 'ignoring return value' ...
Diffstat (limited to 'drivers/video/sh_mobile_hdmi.c')
-rw-r--r--drivers/video/sh_mobile_hdmi.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 2b9e56a6bde4..6ae40b630dc9 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -1131,15 +1131,19 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
1131 pm_runtime_get_sync(hdmi->dev); 1131 pm_runtime_get_sync(hdmi->dev);
1132 1132
1133 ret = sh_hdmi_read_edid(hdmi, &hdmi_rate, &parent_rate); 1133 ret = sh_hdmi_read_edid(hdmi, &hdmi_rate, &parent_rate);
1134 if (ret < 0) 1134 if (ret < 0) {
1135 pm_runtime_put(hdmi->dev);
1135 goto out; 1136 goto out;
1137 }
1136 1138
1137 hdmi->hp_state = HDMI_HOTPLUG_EDID_DONE; 1139 hdmi->hp_state = HDMI_HOTPLUG_EDID_DONE;
1138 1140
1139 /* Reconfigure the clock */ 1141 /* Reconfigure the clock */
1140 ret = sh_hdmi_clk_configure(hdmi, hdmi_rate, parent_rate); 1142 ret = sh_hdmi_clk_configure(hdmi, hdmi_rate, parent_rate);
1141 if (ret < 0) 1143 if (ret < 0) {
1144 pm_runtime_put(hdmi->dev);
1142 goto out; 1145 goto out;
1146 }
1143 1147
1144 msleep(10); 1148 msleep(10);
1145 sh_hdmi_configure(hdmi); 1149 sh_hdmi_configure(hdmi);
@@ -1336,6 +1340,7 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
1336ecodec: 1340ecodec:
1337 free_irq(irq, hdmi); 1341 free_irq(irq, hdmi);
1338ereqirq: 1342ereqirq:
1343 pm_runtime_suspend(&pdev->dev);
1339 pm_runtime_disable(&pdev->dev); 1344 pm_runtime_disable(&pdev->dev);
1340 iounmap(hdmi->base); 1345 iounmap(hdmi->base);
1341emap: 1346emap:
@@ -1372,6 +1377,7 @@ static int __exit sh_hdmi_remove(struct platform_device *pdev)
1372 free_irq(irq, hdmi); 1377 free_irq(irq, hdmi);
1373 /* Wait for already scheduled work */ 1378 /* Wait for already scheduled work */
1374 cancel_delayed_work_sync(&hdmi->edid_work); 1379 cancel_delayed_work_sync(&hdmi->edid_work);
1380 pm_runtime_suspend(&pdev->dev);
1375 pm_runtime_disable(&pdev->dev); 1381 pm_runtime_disable(&pdev->dev);
1376 clk_disable(hdmi->hdmi_clk); 1382 clk_disable(hdmi->hdmi_clk);
1377 clk_put(hdmi->hdmi_clk); 1383 clk_put(hdmi->hdmi_clk);