aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap/dispc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap/dispc.c')
-rw-r--r--drivers/video/omap/dispc.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index f1308aa04feb..a85694900e44 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -858,8 +858,11 @@ EXPORT_SYMBOL(omap_dispc_free_irq);
858 858
859static irqreturn_t omap_dispc_irq_handler(int irq, void *dev) 859static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
860{ 860{
861 u32 stat = dispc_read_reg(DISPC_IRQSTATUS); 861 u32 stat;
862 862
863 enable_lcd_clocks(1);
864
865 stat = dispc_read_reg(DISPC_IRQSTATUS);
863 if (stat & DISPC_IRQ_FRAMEMASK) 866 if (stat & DISPC_IRQ_FRAMEMASK)
864 complete(&dispc.frame_done); 867 complete(&dispc.frame_done);
865 868
@@ -875,6 +878,8 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
875 878
876 dispc_write_reg(DISPC_IRQSTATUS, stat); 879 dispc_write_reg(DISPC_IRQSTATUS, stat);
877 880
881 enable_lcd_clocks(0);
882
878 return IRQ_HANDLED; 883 return IRQ_HANDLED;
879} 884}
880 885
@@ -913,18 +918,13 @@ static void put_dss_clocks(void)
913 918
914static void enable_lcd_clocks(int enable) 919static void enable_lcd_clocks(int enable)
915{ 920{
916 if (enable) 921 if (enable) {
922 clk_enable(dispc.dss_ick);
917 clk_enable(dispc.dss1_fck); 923 clk_enable(dispc.dss1_fck);
918 else 924 } else {
919 clk_disable(dispc.dss1_fck); 925 clk_disable(dispc.dss1_fck);
920}
921
922static void enable_interface_clocks(int enable)
923{
924 if (enable)
925 clk_enable(dispc.dss_ick);
926 else
927 clk_disable(dispc.dss_ick); 926 clk_disable(dispc.dss_ick);
927 }
928} 928}
929 929
930static void enable_digit_clocks(int enable) 930static void enable_digit_clocks(int enable)
@@ -1365,7 +1365,6 @@ static int omap_dispc_init(struct omapfb_device *fbdev, int ext_mode,
1365 if ((r = get_dss_clocks()) < 0) 1365 if ((r = get_dss_clocks()) < 0)
1366 goto fail0; 1366 goto fail0;
1367 1367
1368 enable_interface_clocks(1);
1369 enable_lcd_clocks(1); 1368 enable_lcd_clocks(1);
1370 1369
1371#ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT 1370#ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT
@@ -1469,7 +1468,6 @@ fail2:
1469 free_irq(INT_24XX_DSS_IRQ, fbdev); 1468 free_irq(INT_24XX_DSS_IRQ, fbdev);
1470fail1: 1469fail1:
1471 enable_lcd_clocks(0); 1470 enable_lcd_clocks(0);
1472 enable_interface_clocks(0);
1473 put_dss_clocks(); 1471 put_dss_clocks();
1474fail0: 1472fail0:
1475 iounmap(dispc.base); 1473 iounmap(dispc.base);
@@ -1487,7 +1485,6 @@ static void omap_dispc_cleanup(void)
1487 cleanup_fbmem(); 1485 cleanup_fbmem();
1488 free_palette_ram(); 1486 free_palette_ram();
1489 free_irq(INT_24XX_DSS_IRQ, dispc.fbdev); 1487 free_irq(INT_24XX_DSS_IRQ, dispc.fbdev);
1490 enable_interface_clocks(0);
1491 put_dss_clocks(); 1488 put_dss_clocks();
1492 iounmap(dispc.base); 1489 iounmap(dispc.base);
1493} 1490}