aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/s3c-fb.c55
1 files changed, 28 insertions, 27 deletions
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
index b1a75a024a2c..be4c218bb931 100644
--- a/drivers/video/s3c-fb.c
+++ b/drivers/video/s3c-fb.c
@@ -441,6 +441,32 @@ static void shadow_protect_win(struct s3c_fb_win *win, bool protect)
441} 441}
442 442
443/** 443/**
444 * s3c_fb_enable() - Set the state of the main LCD output
445 * @sfb: The main framebuffer state.
446 * @enable: The state to set.
447 */
448static void s3c_fb_enable(struct s3c_fb *sfb, int enable)
449{
450 u32 vidcon0 = readl(sfb->regs + VIDCON0);
451
452 if (enable)
453 vidcon0 |= VIDCON0_ENVID | VIDCON0_ENVID_F;
454 else {
455 /* see the note in the framebuffer datasheet about
456 * why you cannot take both of these bits down at the
457 * same time. */
458
459 if (!(vidcon0 & VIDCON0_ENVID))
460 return;
461
462 vidcon0 |= VIDCON0_ENVID;
463 vidcon0 &= ~VIDCON0_ENVID_F;
464 }
465
466 writel(vidcon0, sfb->regs + VIDCON0);
467}
468
469/**
444 * s3c_fb_set_par() - framebuffer request to set new framebuffer state. 470 * s3c_fb_set_par() - framebuffer request to set new framebuffer state.
445 * @info: The framebuffer to change. 471 * @info: The framebuffer to change.
446 * 472 *
@@ -510,9 +536,10 @@ static int s3c_fb_set_par(struct fb_info *info)
510 if (sfb->variant.is_2443) 536 if (sfb->variant.is_2443)
511 data |= (1 << 5); 537 data |= (1 << 5);
512 538
513 data |= VIDCON0_ENVID | VIDCON0_ENVID_F;
514 writel(data, regs + VIDCON0); 539 writel(data, regs + VIDCON0);
515 540
541 s3c_fb_enable(sfb, 1);
542
516 data = VIDTCON0_VBPD(var->upper_margin - 1) | 543 data = VIDTCON0_VBPD(var->upper_margin - 1) |
517 VIDTCON0_VFPD(var->lower_margin - 1) | 544 VIDTCON0_VFPD(var->lower_margin - 1) |
518 VIDTCON0_VSPW(var->vsync_len - 1); 545 VIDTCON0_VSPW(var->vsync_len - 1);
@@ -761,32 +788,6 @@ static int s3c_fb_setcolreg(unsigned regno,
761} 788}
762 789
763/** 790/**
764 * s3c_fb_enable() - Set the state of the main LCD output
765 * @sfb: The main framebuffer state.
766 * @enable: The state to set.
767 */
768static void s3c_fb_enable(struct s3c_fb *sfb, int enable)
769{
770 u32 vidcon0 = readl(sfb->regs + VIDCON0);
771
772 if (enable)
773 vidcon0 |= VIDCON0_ENVID | VIDCON0_ENVID_F;
774 else {
775 /* see the note in the framebuffer datasheet about
776 * why you cannot take both of these bits down at the
777 * same time. */
778
779 if (!(vidcon0 & VIDCON0_ENVID))
780 return;
781
782 vidcon0 |= VIDCON0_ENVID;
783 vidcon0 &= ~VIDCON0_ENVID_F;
784 }
785
786 writel(vidcon0, sfb->regs + VIDCON0);
787}
788
789/**
790 * s3c_fb_blank() - blank or unblank the given window 791 * s3c_fb_blank() - blank or unblank the given window
791 * @blank_mode: The blank state from FB_BLANK_* 792 * @blank_mode: The blank state from FB_BLANK_*
792 * @info: The framebuffer to blank. 793 * @info: The framebuffer to blank.