RE: [PATCH 2/3] video: s3c-fb: remove 'default_win' element from platform data
-Original Message- From: Thomas Abraham [mailto:thomas.abra...@linaro.org] Sent: Sunday, March 04, 2012 12:50 AM To: linux-fb...@vger.kernel.org Cc: florianschandi...@gmx.de; linux-samsung-soc@vger.kernel.org; kgene@samsung.com; jg1@samsung.com; ben-li...@fluff.org; patc...@linaro.org Subject: [PATCH 2/3] video: s3c-fb: remove 'default_win' element from platform data 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-li...@fluff.org Cc: Jingoo Han jg1@samsung.com Signed-off-by: Thomas Abraham thomas.abra...@linaro.org --- arch/arm/plat-samsung/include/plat/fb.h |2 -- drivers/video/s3c-fb.c | 24 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index 39d6bd7..536002f 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h @@ -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; }; diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index 8e05d4d..8baba31 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c @@ -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 */ @@ -792,7 +792,7 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) struct s3c_fb_win *win = info-par; struct s3c_fb *sfb = win-parent; unsigned int index = win-index; - u32 wincon; + u32 wincon, output_on = sfb-output_on; Can you add new line as below? It's more readable. + u32 output_on = sfb-output_on; Sorry for nitpicking. dev_dbg(sfb-dev, blank mode %d\n, blank_mode); @@ -838,27 +838,11 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) * 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); However, shadow_protect_win() is necessary as belows. Because shadow registers such as VIDCON0 should be protectd whenever the registers are updated. The s3c_fb_enable() updates VIDCON0. + shadow_protect_win(win, 1); + 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; } /** -- 1.6.6.rc2 -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/3] video: s3c-fb: remove 'default_win' element from platform data
On 6 March 2012 15:35, Jingoo Han jg1@samsung.com wrote: -Original Message- From: Thomas Abraham [mailto:thomas.abra...@linaro.org] Sent: Sunday, March 04, 2012 12:50 AM To: linux-fb...@vger.kernel.org Cc: florianschandi...@gmx.de; linux-samsung-soc@vger.kernel.org; kgene@samsung.com; jg1@samsung.com; ben-li...@fluff.org; patc...@linaro.org Subject: [PATCH 2/3] video: s3c-fb: remove 'default_win' element from platform data 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-li...@fluff.org Cc: Jingoo Han jg1@samsung.com Signed-off-by: Thomas Abraham thomas.abra...@linaro.org --- arch/arm/plat-samsung/include/plat/fb.h | 2 -- drivers/video/s3c-fb.c | 24 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index 39d6bd7..536002f 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h @@ -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; }; diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index 8e05d4d..8baba31 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c @@ -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 */ @@ -792,7 +792,7 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) struct s3c_fb_win *win = info-par; struct s3c_fb *sfb = win-parent; unsigned int index = win-index; - u32 wincon; + u32 wincon, output_on = sfb-output_on; Can you add new line as below? It's more readable. + u32 output_on = sfb-output_on; Sorry for nitpicking. Ok. I will add a new line as you have suggested. dev_dbg(sfb-dev, blank mode %d\n, blank_mode); @@ -838,27 +838,11 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) * 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); However, shadow_protect_win() is necessary as belows. Because shadow registers such as VIDCON0 should be protectd whenever the registers are updated. The s3c_fb_enable() updates VIDCON0. + shadow_protect_win(win, 1); + s3c_fb_enable(sfb, sfb-enabled ? 1 : 0); + shadow_protect_win(win, 0); Right. Thanks for the correction. I will submit updated patch series soon. Regards, Thomas. -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/3] video: s3c-fb: remove 'default_win' element from platform data
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-li...@fluff.org Cc: Jingoo Han jg1@samsung.com Signed-off-by: Thomas Abraham thomas.abra...@linaro.org --- arch/arm/plat-samsung/include/plat/fb.h |2 -- drivers/video/s3c-fb.c | 24 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index 39d6bd7..536002f 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h @@ -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; }; diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index 8e05d4d..8baba31 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c @@ -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 */ @@ -792,7 +792,7 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) struct s3c_fb_win *win = info-par; struct s3c_fb *sfb = win-parent; unsigned int index = win-index; - u32 wincon; + u32 wincon, output_on = sfb-output_on; dev_dbg(sfb-dev, blank mode %d\n, blank_mode); @@ -838,27 +838,11 @@ static int s3c_fb_blank(int blank_mode, struct fb_info *info) * 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); pm_runtime_put_sync(sfb-dev); - return 0; + return output_on == sfb-output_on; } /** -- 1.6.6.rc2 -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html