2022-07-11 16:13:18

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH] video: fbdev: amiga: Simplify amifb_pan_display()

The fb_pan_display() function in the core already takes care of
validating most panning parameters before calling the driver's
.fb_pan_display() callback, and of updating the panning state
afterwards, so there is no need to repeat that in the driver.

Remove the duplicate code.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
drivers/video/fbdev/amifb.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/video/fbdev/amifb.c b/drivers/video/fbdev/amifb.c
index 6e07a97bbd31a1dd..d88265dbebf4cb19 100644
--- a/drivers/video/fbdev/amifb.c
+++ b/drivers/video/fbdev/amifb.c
@@ -2540,27 +2540,16 @@ static int amifb_blank(int blank, struct fb_info *info)
static int amifb_pan_display(struct fb_var_screeninfo *var,
struct fb_info *info)
{
- if (var->vmode & FB_VMODE_YWRAP) {
- if (var->yoffset < 0 ||
- var->yoffset >= info->var.yres_virtual || var->xoffset)
- return -EINVAL;
- } else {
+ if (!(var->vmode & FB_VMODE_YWRAP)) {
/*
* TODO: There will be problems when xpan!=1, so some columns
* on the right side will never be seen
*/
if (var->xoffset + info->var.xres >
- upx(16 << maxfmode, info->var.xres_virtual) ||
- var->yoffset + info->var.yres > info->var.yres_virtual)
+ upx(16 << maxfmode, info->var.xres_virtual))
return -EINVAL;
}
ami_pan_var(var, info);
- info->var.xoffset = var->xoffset;
- info->var.yoffset = var->yoffset;
- if (var->vmode & FB_VMODE_YWRAP)
- info->var.vmode |= FB_VMODE_YWRAP;
- else
- info->var.vmode &= ~FB_VMODE_YWRAP;
return 0;
}

--
2.25.1


2022-07-11 22:03:34

by Helge Deller

[permalink] [raw]
Subject: Re: [PATCH] video: fbdev: amiga: Simplify amifb_pan_display()

On 7/11/22 17:35, Geert Uytterhoeven wrote:
> The fb_pan_display() function in the core already takes care of
> validating most panning parameters before calling the driver's
> .fb_pan_display() callback, and of updating the panning state
> afterwards, so there is no need to repeat that in the driver.
>
> Remove the duplicate code.
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>

I've applied this and the other 3 patches to the fbdev git tree.

Thanks!
Helge


> ---
> drivers/video/fbdev/amifb.c | 15 ++-------------
> 1 file changed, 2 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/video/fbdev/amifb.c b/drivers/video/fbdev/amifb.c
> index 6e07a97bbd31a1dd..d88265dbebf4cb19 100644
> --- a/drivers/video/fbdev/amifb.c
> +++ b/drivers/video/fbdev/amifb.c
> @@ -2540,27 +2540,16 @@ static int amifb_blank(int blank, struct fb_info *info)
> static int amifb_pan_display(struct fb_var_screeninfo *var,
> struct fb_info *info)
> {
> - if (var->vmode & FB_VMODE_YWRAP) {
> - if (var->yoffset < 0 ||
> - var->yoffset >= info->var.yres_virtual || var->xoffset)
> - return -EINVAL;
> - } else {
> + if (!(var->vmode & FB_VMODE_YWRAP)) {
> /*
> * TODO: There will be problems when xpan!=1, so some columns
> * on the right side will never be seen
> */
> if (var->xoffset + info->var.xres >
> - upx(16 << maxfmode, info->var.xres_virtual) ||
> - var->yoffset + info->var.yres > info->var.yres_virtual)
> + upx(16 << maxfmode, info->var.xres_virtual))
> return -EINVAL;
> }
> ami_pan_var(var, info);
> - info->var.xoffset = var->xoffset;
> - info->var.yoffset = var->yoffset;
> - if (var->vmode & FB_VMODE_YWRAP)
> - info->var.vmode |= FB_VMODE_YWRAP;
> - else
> - info->var.vmode &= ~FB_VMODE_YWRAP;
> return 0;
> }
>