Beispiel #1
0
void s3cfb_late_resume(struct early_suspend *h)
{
    struct s3cfb_global *fbdev =
        container_of(h, struct s3cfb_global, early_suspend);
    struct s3c_platform_fb *pdata = to_fb_plat(fbdev->dev);
    struct platform_device *pdev = to_platform_device(fbdev->dev);
    struct fb_info *fb;
    struct s3cfb_window *win;
    int i, j, ret;

    pr_info("s3cfb_late_resume is called\n");

    ret = regulator_enable(fbdev->regulator);
    if (ret < 0)
        dev_err(fbdev->dev, "failed to enable regulator\n");

    ret = regulator_enable(fbdev->vcc_lcd);
    if (ret < 0)
        dev_err(fbdev->dev, "failed to enable vcc_lcd\n");

    ret = regulator_enable(fbdev->vlcd);
    if (ret < 0)
        dev_err(fbdev->dev, "failed to enable vlcd\n");

#if defined(CONFIG_FB_S3C_TL2796)
    lcd_cfg_gpio_late_resume();
#endif
    dev_dbg(fbdev->dev, "wake up from suspend\n");
    if (pdata->cfg_gpio)
        pdata->cfg_gpio(pdev);

    clk_enable(fbdev->clock);
    s3cfb_init_global(fbdev);
    s3cfb_set_clock(fbdev);

    s3cfb_display_on(fbdev);

    for (i = pdata->default_win;
            i < pdata->nr_wins + pdata->default_win; i++) {
        j = i % pdata->nr_wins;
        fb = fbdev->fb[j];
        win = fb->par;
        if ((win->path == DATA_PATH_DMA) && (win->enabled)) {
            s3cfb_set_par(fb);
            s3cfb_set_window(fbdev, win->id, 1);
        }
    }

    s3cfb_set_vsync_interrupt(fbdev, 1);
    s3cfb_set_global_interrupt(fbdev, 1);

    if (pdata->backlight_on)
        pdata->backlight_on(pdev);

    if (pdata->reset_lcd)
        pdata->reset_lcd(pdev);

    pr_info("s3cfb_late_resume is complete\n");
    return ;
}
Beispiel #2
0
void s3cfb_late_resume(struct early_suspend *h)
{
	struct s3cfb_global *fbdev =
		container_of(h, struct s3cfb_global, early_suspend);
	struct s3c_platform_fb *pdata = to_fb_plat(fbdev->dev);
	struct platform_device *pdev = to_platform_device(fbdev->dev);
	struct fb_info *fb;
	struct s3cfb_window *win;
	int i, j, ret;

	pr_info("s3cfb_late_resume is called\n");

	ret = regulator_enable(fbdev->regulator);
	if (ret < 0)
		dev_err(fbdev->dev, "failed to enable regulator\n");

#ifdef CONFIG_MACH_ARIES
	ret = regulator_enable(fbdev->vcc_lcd);
	if (ret < 0)
		dev_err(fbdev->dev, "failed to enable vcc_lcd\n");

	ret = regulator_enable(fbdev->vlcd);
	if (ret < 0)
		dev_err(fbdev->dev, "failed to enable vlcd\n");
#endif

#if defined(CONFIG_FB_S3C_TL2796)
	lcd_cfg_gpio_late_resume();
#endif
	dev_dbg(fbdev->dev, "wake up from suspend\n");
	if (pdata->cfg_gpio)
		pdata->cfg_gpio(pdev);

	clk_enable(fbdev->clock);
#ifdef CONFIG_FB_S3C_MDNIE
	writel(0x1, S5P_MDNIE_SEL);
	writel(3,fbdev->regs + 0x27c);
#endif
	s3cfb_init_global(fbdev);
	s3cfb_set_clock(fbdev);
#ifdef CONFIG_FB_S3C_MDNIE
	s3c_mdnie_init_global(fbdev);
	s3c_mdnie_start(fbdev);
#endif

#ifdef CONFIG_FB_S3C_CMC623
	tune_cmc623_pre_resume();
#endif
	s3cfb_set_alpha_value_width(fbdev, pdata->default_win);

	s3cfb_display_on(fbdev);

#ifdef CONFIG_FB_S3C_CMC623
	tune_cmc623_resume();
#endif

#if defined (CONFIG_FB_S3C_LVDS)
	lms700_powerup();
#endif

	for (i = pdata->default_win;
		i < pdata->nr_wins + pdata->default_win; i++) {
			j = i % pdata->nr_wins;
			fb = fbdev->fb[j];
			win = fb->par;
			if ((win->path == DATA_PATH_DMA) && (win->enabled)) {
				s3cfb_set_par(fb);
				s3cfb_set_window(fbdev, win->id, 1);
			}
	}

	s3cfb_set_vsync_interrupt(fbdev, 1);
	s3cfb_set_global_interrupt(fbdev, 1);

	if (pdata->backlight_on)
		pdata->backlight_on(pdev);

	if (pdata->reset_lcd)
		pdata->reset_lcd(pdev);

	pr_info("s3cfb_late_resume is complete\n");
	return ;
}