Commit 94947037 authored by Ben Dooks's avatar Ben Dooks Committed by Linus Torvalds

s3c-fb: only init window colour key controls for windows with blending

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: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarPawel 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent dc8498c0
...@@ -845,9 +845,6 @@ static void s3c_fb_clear_win(struct s3c_fb *sfb, int win) ...@@ -845,9 +845,6 @@ static void s3c_fb_clear_win(struct s3c_fb *sfb, int win)
void __iomem *regs = sfb->regs; void __iomem *regs = sfb->regs;
writel(0, regs + WINCON(win)); 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_A(win));
writel(0, regs + VIDOSD_B(win)); writel(0, regs + VIDOSD_B(win));
writel(0, regs + VIDOSD_C(win)); writel(0, regs + VIDOSD_C(win));
...@@ -920,6 +917,12 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev) ...@@ -920,6 +917,12 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
for (win = 0; win < S3C_FB_MAX_WIN; win++) for (win = 0; win < S3C_FB_MAX_WIN; win++)
s3c_fb_clear_win(sfb, 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 */ /* we have the register setup, start allocating framebuffers */
for (win = 0; win < S3C_FB_MAX_WIN; win++) { for (win = 0; win < S3C_FB_MAX_WIN; win++) {
...@@ -1020,6 +1023,11 @@ static int s3c_fb_resume(struct platform_device *pdev) ...@@ -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++) for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++)
s3c_fb_clear_win(sfb, 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 */ /* restore framebuffers */
for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++) { for (win_no = 0; win_no < S3C_FB_MAX_WIN; win_no++) {
win = sfb->windows[win_no]; win = sfb->windows[win_no];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment