Skip to content

Commit

Permalink
s3c-fb: only init window colour key controls for windows with blending
Browse files Browse the repository at this point in the history
The driver clears all windows, but also sets the windows' colour key
controls at the same time.  However, the last window does not have these
registers as it is always blended into the previous window.

Move the colour key initialisation into the probe, and run it for only
nr_win-1 windows.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Pawel Osciak <p.osciak@samsung.com>
Cc: InKi Dae <inki.dae@samsung.com>
Cc: KyungMin Park <kyungmin.park.samsung.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Ben Dooks authored and Linus Torvalds committed Aug 11, 2010
1 parent dc8498c commit 9494703
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions drivers/video/s3c-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -845,9 +845,6 @@ static void s3c_fb_clear_win(struct s3c_fb *sfb, int win)
void __iomem *regs = sfb->regs;

writel(0, regs + WINCON(win));
writel(0xffffff, regs + WxKEYCONy(win, 0));
writel(0xffffff, regs + WxKEYCONy(win, 1));

writel(0, regs + VIDOSD_A(win));
writel(0, regs + VIDOSD_B(win));
writel(0, regs + VIDOSD_C(win));
Expand Down Expand Up @@ -920,6 +917,12 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
for (win = 0; win < S3C_FB_MAX_WIN; win++)
s3c_fb_clear_win(sfb, win);

/* initialise colour key controls */
for (win = 0; win < (S3C_FB_MAX_WIN - 1); win++) {
writel(0xffffff, sfb->regs + WxKEYCONy(win, 0));
writel(0xffffff, sfb->regs + WxKEYCONy(win, 1));
}

/* we have the register setup, start allocating framebuffers */

for (win = 0; win < S3C_FB_MAX_WIN; win++) {
Expand Down Expand Up @@ -1020,6 +1023,11 @@ static int s3c_fb_resume(struct platform_device *pdev)
for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++)
s3c_fb_clear_win(sfb, win_no);

for (win_no = 0; win_no < S3C_FB_MAX_WIN - 1; win_no++) {
writel(0xffffff, sfb->regs + WxKEYCONy(win_no, 1));
writel(0xffffff, sfb->regs + WxKEYCONy(win_no, 1));
}

/* restore framebuffers */
for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++) {
win = sfb->windows[win_no];
Expand Down

0 comments on commit 9494703

Please sign in to comment.