]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
video: s3c-fb: Unify runtime and system PM functions
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 27 Nov 2011 22:51:07 +0000 (22:51 +0000)
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Sat, 3 Dec 2011 22:09:50 +0000 (22:09 +0000)
The s3c-fb driver has separate runtime and system PM functions but the
implementations are identical so far as I can tell so unify them for
simplicity.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
drivers/video/s3c-fb.c

index cf1d11f5bfb86b1dc7171a5462029275272dc28b..e84677e6f5edcfbd35e4c7f833929651e85e8cf7 100644 (file)
@@ -1590,77 +1590,9 @@ static int s3c_fb_resume(struct device *dev)
 
        return 0;
 }
-
-static int s3c_fb_runtime_suspend(struct device *dev)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-       struct s3c_fb *sfb = platform_get_drvdata(pdev);
-       struct s3c_fb_win *win;
-       int win_no;
-
-       for (win_no = S3C_FB_MAX_WIN - 1; win_no >= 0; win_no--) {
-               win = sfb->windows[win_no];
-               if (!win)
-                       continue;
-
-               /* use the blank function to push into power-down */
-               s3c_fb_blank(FB_BLANK_POWERDOWN, win->fbinfo);
-       }
-
-       if (!sfb->variant.has_clksel)
-               clk_disable(sfb->lcd_clk);
-
-       clk_disable(sfb->bus_clk);
-       return 0;
-}
-
-static int s3c_fb_runtime_resume(struct device *dev)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-       struct s3c_fb *sfb = platform_get_drvdata(pdev);
-       struct s3c_fb_platdata *pd = sfb->pdata;
-       struct s3c_fb_win *win;
-       int win_no;
-
-       clk_enable(sfb->bus_clk);
-
-       if (!sfb->variant.has_clksel)
-               clk_enable(sfb->lcd_clk);
-
-       /* setup gpio and output polarity controls */
-       pd->setup_gpio();
-       writel(pd->vidcon1, sfb->regs + VIDCON1);
-
-       /* zero all windows before we do anything */
-       for (win_no = 0; win_no < sfb->variant.nr_windows; win_no++)
-               s3c_fb_clear_win(sfb, win_no);
-
-       for (win_no = 0; win_no < sfb->variant.nr_windows - 1; win_no++) {
-               void __iomem *regs = sfb->regs + sfb->variant.keycon;
-
-               regs += (win_no * 8);
-               writel(0xffffff, regs + WKEYCON0);
-               writel(0xffffff, regs + WKEYCON1);
-       }
-
-       /* restore framebuffers */
-       for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++) {
-               win = sfb->windows[win_no];
-               if (!win)
-                       continue;
-
-               dev_dbg(&pdev->dev, "resuming window %d\n", win_no);
-               s3c_fb_set_par(win->fbinfo);
-       }
-
-       return 0;
-}
-
 #else
 #define s3c_fb_suspend NULL
 #define s3c_fb_resume  NULL
-#define s3c_fb_runtime_suspend NULL
-#define s3c_fb_runtime_resume NULL
 #endif
 
 
@@ -1985,12 +1917,7 @@ static struct platform_device_id s3c_fb_driver_ids[] = {
 };
 MODULE_DEVICE_TABLE(platform, s3c_fb_driver_ids);
 
-static const struct dev_pm_ops s3cfb_pm_ops = {
-       .suspend        = s3c_fb_suspend,
-       .resume         = s3c_fb_resume,
-       .runtime_suspend        = s3c_fb_runtime_suspend,
-       .runtime_resume         = s3c_fb_runtime_resume,
-};
+static UNIVERSAL_DEV_PM_OPS(s3cfb_pm_ops, s3c_fb_suspend, s3c_fb_resume, NULL);
 
 static struct platform_driver s3c_fb_driver = {
        .probe          = s3c_fb_probe,