> -----Original Message----- > From: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > Subject: [PATCH 1/2] video: s3c-fb: Unify runtime and system PM functions > > 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@xxxxxxxxxxxxxxxxxxxxxxxxxxx> Acked-by: Jingoo Han <jg1.han@xxxxxxxxxxx> Thank you. > --- > drivers/video/s3c-fb.c | 75 +------------------------------------------- > ---- > 1 files changed, 1 insertions(+), 74 deletions(-) > > diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c > index cf1d11f..e84677e 100644 > --- a/drivers/video/s3c-fb.c > +++ b/drivers/video/s3c-fb.c > @@ -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, > -- > 1.7.1 ÿ淸º{.nÇ+돴윯돪†+%듚ÿ깁負¥Šwÿº{.nÇ+돴¥Š{깰鍼zÿâ왲^n‡r⊆¦zË곷h솳鈺Ú&{àz요z받쀺+€Ê+zf"·hš닱~넮녬iÿÿï곴ÿ묎çz_溫æj:+v돣þ)山øm