Skip to content

Commit

Permalink
video: s3c-fb: remove 'default_win' element from platform data
Browse files Browse the repository at this point in the history
The decision to enable or disable the data output to the lcd panel from
the controller need not be based on the value of 'default_win' element
in the platform data. Instead, the data output to the panel is enabled
if any of the windows are active, else data output is disabled.

Cc: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
  • Loading branch information
Thomas Abraham authored and Florian Tobias Schandinat committed Apr 9, 2012
1 parent a4196fe commit 3c58264
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 22 deletions.
2 changes: 0 additions & 2 deletions arch/arm/plat-samsung/include/plat/fb.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ struct s3c_fb_platdata {
struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN];
struct fb_videomode *vtiming;

u32 default_win;

u32 vidcon0;
u32 vidcon1;
};
Expand Down
25 changes: 5 additions & 20 deletions drivers/video/s3c-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ static int s3c_fb_set_par(struct fb_info *info)
/* disable the window whilst we update it */
writel(0, regs + WINCON(win_no));

if (win_no == sfb->pdata->default_win)
if (!sfb->output_on)
s3c_fb_enable(sfb, 1);

/* write the buffer address */
Expand Down Expand Up @@ -799,6 +799,7 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info)
struct s3c_fb *sfb = win->parent;
unsigned int index = win->index;
u32 wincon;
u32 output_on = sfb->output_on;

dev_dbg(sfb->dev, "blank mode %d\n", blank_mode);

Expand Down Expand Up @@ -837,34 +838,18 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info)

shadow_protect_win(win, 1);
writel(wincon, sfb->regs + sfb->variant.wincon + (index * 4));
shadow_protect_win(win, 0);

/* Check the enabled state to see if we need to be running the
* main LCD interface, as if there are no active windows then
* it is highly likely that we also do not need to output
* anything.
*/

/* We could do something like the following code, but the current
* system of using framebuffer events means that we cannot make
* the distinction between just window 0 being inactive and all
* the windows being down.
*
* s3c_fb_enable(sfb, sfb->enabled ? 1 : 0);
*/

/* we're stuck with this until we can do something about overriding
* the power control using the blanking event for a single fb.
*/
if (index == sfb->pdata->default_win) {
shadow_protect_win(win, 1);
s3c_fb_enable(sfb, blank_mode != FB_BLANK_POWERDOWN ? 1 : 0);
shadow_protect_win(win, 0);
}
s3c_fb_enable(sfb, sfb->enabled ? 1 : 0);
shadow_protect_win(win, 0);

pm_runtime_put_sync(sfb->dev);

return 0;
return output_on == sfb->output_on;
}

/**
Expand Down

0 comments on commit 3c58264

Please sign in to comment.