diff mbox series

[v3,08/12] drm/udl: Pass rectangle directly to udl_handle_damage()

Message ID 20220908095115.23396-9-tiwai@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/udl: More fixes | expand

Commit Message

Takashi Iwai Sept. 8, 2022, 9:51 a.m. UTC
Just for some code simplification.

Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

Comments

Thomas Zimmermann Sept. 8, 2022, 12:47 p.m. UTC | #1
Hi

Am 08.09.22 um 11:51 schrieb Takashi Iwai:
> Just for some code simplification.
> 
> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

With my comments fixed, you can add

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>   drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++-----------
>   1 file changed, 9 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
> index c9b837ac26a7..0142fc6a478a 100644
> --- a/drivers/gpu/drm/udl/udl_modeset.c
> +++ b/drivers/gpu/drm/udl/udl_modeset.c
> @@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
>   
>   static int udl_handle_damage(struct drm_framebuffer *fb,
>   			     const struct iosys_map *map,
> -			     int x, int y, int width, int height)
> +			     struct drm_rect *clip)

Should probably be declared const.

>   {
>   	struct drm_device *dev = fb->dev;
>   	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
>   	int i, ret;
>   	char *cmd;
>   	struct urb *urb;
> -	struct drm_rect clip;
>   	int log_bpp;
>   
>   	ret = udl_log_cpp(fb->format->cpp[0]);
> @@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>   		return ret;
>   	log_bpp = ret;
>   
> -	drm_rect_init(&clip, x, y, width, height);
> -
>   	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
>   	if (ret)
>   		return ret;
> @@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>   	}
>   	cmd = urb->transfer_buffer;
>   
> -	for (i = clip.y1; i < clip.y2; i++) {
> +	for (i = clip->y1; i < clip->y2; i++) {
>   		const int line_offset = fb->pitches[0] * i;
> -		const int byte_offset = line_offset + (clip.x1 << log_bpp);
> -		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
> -		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
> +		const int byte_offset = line_offset + (clip->x1 << log_bpp);
> +		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
> +		const int byte_width = (clip->x2 - clip->x1) << log_bpp;

Please use drm_rect_width(clip) instead. Somehow there's already too 
much code that open-codes this.

>   		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
>   				       &cmd, byte_offset, dev_byte_offset,
>   				       byte_width);
> @@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
>   	struct udl_device *udl = to_udl(dev);
>   	struct drm_display_mode *mode = &crtc_state->mode;
>   	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
> +	struct drm_rect clip;

Better do a static init with DRM_RECT_INIT(0, 0, fb->width, fb->height) 
and remove the other init call below.

Best regards
Thomas

>   	char *buf;
>   	char *wrptr;
>   	int color_depth = UDL_COLOR_DEPTH_16BPP;
> @@ -354,7 +352,8 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
>   
>   	udl->mode_buf_len = wrptr - buf;
>   
> -	udl_handle_damage(fb, &shadow_plane_state->data[0], 0, 0, fb->width, fb->height);
> +	drm_rect_init(&clip, 0, 0, fb->width, fb->height);
> +	udl_handle_damage(fb, &shadow_plane_state->data[0], &clip);
>   
>   	/* enable display */
>   	udl_crtc_write_mode_to_hw(crtc);
> @@ -396,8 +395,7 @@ udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
>   		return;
>   
>   	if (drm_atomic_helper_damage_merged(old_plane_state, state, &rect))
> -		udl_handle_damage(fb, &shadow_plane_state->data[0], rect.x1, rect.y1,
> -				  rect.x2 - rect.x1, rect.y2 - rect.y1);
> +		udl_handle_damage(fb, &shadow_plane_state->data[0], &rect);
>   }
>   
>   static const struct drm_simple_display_pipe_funcs udl_simple_display_pipe_funcs = {
Takashi Iwai Sept. 8, 2022, 12:54 p.m. UTC | #2
On Thu, 08 Sep 2022 14:47:52 +0200,
Thomas Zimmermann wrote:
> 
> Hi
> 
> Am 08.09.22 um 11:51 schrieb Takashi Iwai:
> > Just for some code simplification.
> > 
> > Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> 
> With my comments fixed, you can add
> 
> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> 
> > ---
> >   drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++-----------
> >   1 file changed, 9 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
> > index c9b837ac26a7..0142fc6a478a 100644
> > --- a/drivers/gpu/drm/udl/udl_modeset.c
> > +++ b/drivers/gpu/drm/udl/udl_modeset.c
> > @@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
> >     static int udl_handle_damage(struct drm_framebuffer *fb,
> >   			     const struct iosys_map *map,
> > -			     int x, int y, int width, int height)
> > +			     struct drm_rect *clip)
> 
> Should probably be declared const.
> 
> >   {
> >   	struct drm_device *dev = fb->dev;
> >   	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
> >   	int i, ret;
> >   	char *cmd;
> >   	struct urb *urb;
> > -	struct drm_rect clip;
> >   	int log_bpp;
> >     	ret = udl_log_cpp(fb->format->cpp[0]);
> > @@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
> >   		return ret;
> >   	log_bpp = ret;
> >   -	drm_rect_init(&clip, x, y, width, height);
> > -
> >   	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
> >   	if (ret)
> >   		return ret;
> > @@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
> >   	}
> >   	cmd = urb->transfer_buffer;
> >   -	for (i = clip.y1; i < clip.y2; i++) {
> > +	for (i = clip->y1; i < clip->y2; i++) {
> >   		const int line_offset = fb->pitches[0] * i;
> > -		const int byte_offset = line_offset + (clip.x1 << log_bpp);
> > -		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
> > -		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
> > +		const int byte_offset = line_offset + (clip->x1 << log_bpp);
> > +		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
> > +		const int byte_width = (clip->x2 - clip->x1) << log_bpp;
> 
> Please use drm_rect_width(clip) instead. Somehow there's already too
> much code that open-codes this.
> 
> >   		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
> >   				       &cmd, byte_offset, dev_byte_offset,
> >   				       byte_width);
> > @@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
> >   	struct udl_device *udl = to_udl(dev);
> >   	struct drm_display_mode *mode = &crtc_state->mode;
> >   	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
> > +	struct drm_rect clip;
> 
> Better do a static init with DRM_RECT_INIT(0, 0, fb->width,
> fb->height) and remove the other init call below.

OK, below is the revised patch.

Do you want me a full respin for v4?


Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage()

Just for some code simplification.

Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/udl/udl_modeset.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index c9b837ac26a7..d5e20bf144bc 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
 
 static int udl_handle_damage(struct drm_framebuffer *fb,
 			     const struct iosys_map *map,
-			     int x, int y, int width, int height)
+			     const struct drm_rect *clip)
 {
 	struct drm_device *dev = fb->dev;
 	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
 	int i, ret;
 	char *cmd;
 	struct urb *urb;
-	struct drm_rect clip;
 	int log_bpp;
 
 	ret = udl_log_cpp(fb->format->cpp[0]);
@@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
 		return ret;
 	log_bpp = ret;
 
-	drm_rect_init(&clip, x, y, width, height);
-
 	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
 	if (ret)
 		return ret;
@@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
 	}
 	cmd = urb->transfer_buffer;
 
-	for (i = clip.y1; i < clip.y2; i++) {
+	for (i = clip->y1; i < clip->y2; i++) {
 		const int line_offset = fb->pitches[0] * i;
-		const int byte_offset = line_offset + (clip.x1 << log_bpp);
-		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
-		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
+		const int byte_offset = line_offset + (clip->x1 << log_bpp);
+		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
+		const int byte_width = drm_rect_width(clip) << log_bpp;
 		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
 				       &cmd, byte_offset, dev_byte_offset,
 				       byte_width);
@@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
 	struct udl_device *udl = to_udl(dev);
 	struct drm_display_mode *mode = &crtc_state->mode;
 	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
+	struct drm_rect clip = DRM_RECT_INIT(0, 0, fb->width, fb->height);
 	char *buf;
 	char *wrptr;
 	int color_depth = UDL_COLOR_DEPTH_16BPP;
@@ -354,7 +352,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
 
 	udl->mode_buf_len = wrptr - buf;
 
-	udl_handle_damage(fb, &shadow_plane_state->data[0], 0, 0, fb->width, fb->height);
+	udl_handle_damage(fb, &shadow_plane_state->data[0], &clip);
 
 	/* enable display */
 	udl_crtc_write_mode_to_hw(crtc);
@@ -396,8 +394,7 @@ udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
 		return;
 
 	if (drm_atomic_helper_damage_merged(old_plane_state, state, &rect))
-		udl_handle_damage(fb, &shadow_plane_state->data[0], rect.x1, rect.y1,
-				  rect.x2 - rect.x1, rect.y2 - rect.y1);
+		udl_handle_damage(fb, &shadow_plane_state->data[0], &rect);
 }
 
 static const struct drm_simple_display_pipe_funcs udl_simple_display_pipe_funcs = {
Thomas Zimmermann Sept. 8, 2022, 1:07 p.m. UTC | #3
Hi

Am 08.09.22 um 14:54 schrieb Takashi Iwai:
> On Thu, 08 Sep 2022 14:47:52 +0200,
> Thomas Zimmermann wrote:
>>
>> Hi
>>
>> Am 08.09.22 um 11:51 schrieb Takashi Iwai:
>>> Just for some code simplification.
>>>
>>> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>>
>> With my comments fixed, you can add
>>
>> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
>>
>>> ---
>>>    drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++-----------
>>>    1 file changed, 9 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
>>> index c9b837ac26a7..0142fc6a478a 100644
>>> --- a/drivers/gpu/drm/udl/udl_modeset.c
>>> +++ b/drivers/gpu/drm/udl/udl_modeset.c
>>> @@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
>>>      static int udl_handle_damage(struct drm_framebuffer *fb,
>>>    			     const struct iosys_map *map,
>>> -			     int x, int y, int width, int height)
>>> +			     struct drm_rect *clip)
>>
>> Should probably be declared const.
>>
>>>    {
>>>    	struct drm_device *dev = fb->dev;
>>>    	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
>>>    	int i, ret;
>>>    	char *cmd;
>>>    	struct urb *urb;
>>> -	struct drm_rect clip;
>>>    	int log_bpp;
>>>      	ret = udl_log_cpp(fb->format->cpp[0]);
>>> @@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>>>    		return ret;
>>>    	log_bpp = ret;
>>>    -	drm_rect_init(&clip, x, y, width, height);
>>> -
>>>    	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
>>>    	if (ret)
>>>    		return ret;
>>> @@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>>>    	}
>>>    	cmd = urb->transfer_buffer;
>>>    -	for (i = clip.y1; i < clip.y2; i++) {
>>> +	for (i = clip->y1; i < clip->y2; i++) {
>>>    		const int line_offset = fb->pitches[0] * i;
>>> -		const int byte_offset = line_offset + (clip.x1 << log_bpp);
>>> -		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
>>> -		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
>>> +		const int byte_offset = line_offset + (clip->x1 << log_bpp);
>>> +		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
>>> +		const int byte_width = (clip->x2 - clip->x1) << log_bpp;
>>
>> Please use drm_rect_width(clip) instead. Somehow there's already too
>> much code that open-codes this.
>>
>>>    		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
>>>    				       &cmd, byte_offset, dev_byte_offset,
>>>    				       byte_width);
>>> @@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
>>>    	struct udl_device *udl = to_udl(dev);
>>>    	struct drm_display_mode *mode = &crtc_state->mode;
>>>    	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
>>> +	struct drm_rect clip;
>>
>> Better do a static init with DRM_RECT_INIT(0, 0, fb->width,
>> fb->height) and remove the other init call below.
> 
> OK, below is the revised patch.
> 
> Do you want me a full respin for v4?

The patch looks good to me. I don't think a full v4 would be necessary 
unless another major change is requested.

Best regards
Thomas

> 
> 
> Takashi
> 
> -- 8< --
> From: Takashi Iwai <tiwai@suse.de>
> Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage()
> 
> Just for some code simplification.
> 
> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>   drivers/gpu/drm/udl/udl_modeset.c | 19 ++++++++-----------
>   1 file changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
> index c9b837ac26a7..d5e20bf144bc 100644
> --- a/drivers/gpu/drm/udl/udl_modeset.c
> +++ b/drivers/gpu/drm/udl/udl_modeset.c
> @@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
>   
>   static int udl_handle_damage(struct drm_framebuffer *fb,
>   			     const struct iosys_map *map,
> -			     int x, int y, int width, int height)
> +			     const struct drm_rect *clip)
>   {
>   	struct drm_device *dev = fb->dev;
>   	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
>   	int i, ret;
>   	char *cmd;
>   	struct urb *urb;
> -	struct drm_rect clip;
>   	int log_bpp;
>   
>   	ret = udl_log_cpp(fb->format->cpp[0]);
> @@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>   		return ret;
>   	log_bpp = ret;
>   
> -	drm_rect_init(&clip, x, y, width, height);
> -
>   	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
>   	if (ret)
>   		return ret;
> @@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
>   	}
>   	cmd = urb->transfer_buffer;
>   
> -	for (i = clip.y1; i < clip.y2; i++) {
> +	for (i = clip->y1; i < clip->y2; i++) {
>   		const int line_offset = fb->pitches[0] * i;
> -		const int byte_offset = line_offset + (clip.x1 << log_bpp);
> -		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
> -		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
> +		const int byte_offset = line_offset + (clip->x1 << log_bpp);
> +		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
> +		const int byte_width = drm_rect_width(clip) << log_bpp;
>   		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
>   				       &cmd, byte_offset, dev_byte_offset,
>   				       byte_width);
> @@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
>   	struct udl_device *udl = to_udl(dev);
>   	struct drm_display_mode *mode = &crtc_state->mode;
>   	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
> +	struct drm_rect clip = DRM_RECT_INIT(0, 0, fb->width, fb->height);
>   	char *buf;
>   	char *wrptr;
>   	int color_depth = UDL_COLOR_DEPTH_16BPP;
> @@ -354,7 +352,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
>   
>   	udl->mode_buf_len = wrptr - buf;
>   
> -	udl_handle_damage(fb, &shadow_plane_state->data[0], 0, 0, fb->width, fb->height);
> +	udl_handle_damage(fb, &shadow_plane_state->data[0], &clip);
>   
>   	/* enable display */
>   	udl_crtc_write_mode_to_hw(crtc);
> @@ -396,8 +394,7 @@ udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
>   		return;
>   
>   	if (drm_atomic_helper_damage_merged(old_plane_state, state, &rect))
> -		udl_handle_damage(fb, &shadow_plane_state->data[0], rect.x1, rect.y1,
> -				  rect.x2 - rect.x1, rect.y2 - rect.y1);
> +		udl_handle_damage(fb, &shadow_plane_state->data[0], &rect);
>   }
>   
>   static const struct drm_simple_display_pipe_funcs udl_simple_display_pipe_funcs = {
diff mbox series

Patch

diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index c9b837ac26a7..0142fc6a478a 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -244,14 +244,13 @@  static long udl_log_cpp(unsigned int cpp)
 
 static int udl_handle_damage(struct drm_framebuffer *fb,
 			     const struct iosys_map *map,
-			     int x, int y, int width, int height)
+			     struct drm_rect *clip)
 {
 	struct drm_device *dev = fb->dev;
 	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
 	int i, ret;
 	char *cmd;
 	struct urb *urb;
-	struct drm_rect clip;
 	int log_bpp;
 
 	ret = udl_log_cpp(fb->format->cpp[0]);
@@ -259,8 +258,6 @@  static int udl_handle_damage(struct drm_framebuffer *fb,
 		return ret;
 	log_bpp = ret;
 
-	drm_rect_init(&clip, x, y, width, height);
-
 	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
 	if (ret)
 		return ret;
@@ -272,11 +269,11 @@  static int udl_handle_damage(struct drm_framebuffer *fb,
 	}
 	cmd = urb->transfer_buffer;
 
-	for (i = clip.y1; i < clip.y2; i++) {
+	for (i = clip->y1; i < clip->y2; i++) {
 		const int line_offset = fb->pitches[0] * i;
-		const int byte_offset = line_offset + (clip.x1 << log_bpp);
-		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
-		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
+		const int byte_offset = line_offset + (clip->x1 << log_bpp);
+		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
+		const int byte_width = (clip->x2 - clip->x1) << log_bpp;
 		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
 				       &cmd, byte_offset, dev_byte_offset,
 				       byte_width);
@@ -329,6 +326,7 @@  udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
 	struct udl_device *udl = to_udl(dev);
 	struct drm_display_mode *mode = &crtc_state->mode;
 	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
+	struct drm_rect clip;
 	char *buf;
 	char *wrptr;
 	int color_depth = UDL_COLOR_DEPTH_16BPP;
@@ -354,7 +352,8 @@  udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
 
 	udl->mode_buf_len = wrptr - buf;
 
-	udl_handle_damage(fb, &shadow_plane_state->data[0], 0, 0, fb->width, fb->height);
+	drm_rect_init(&clip, 0, 0, fb->width, fb->height);
+	udl_handle_damage(fb, &shadow_plane_state->data[0], &clip);
 
 	/* enable display */
 	udl_crtc_write_mode_to_hw(crtc);
@@ -396,8 +395,7 @@  udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
 		return;
 
 	if (drm_atomic_helper_damage_merged(old_plane_state, state, &rect))
-		udl_handle_damage(fb, &shadow_plane_state->data[0], rect.x1, rect.y1,
-				  rect.x2 - rect.x1, rect.y2 - rect.y1);
+		udl_handle_damage(fb, &shadow_plane_state->data[0], &rect);
 }
 
 static const struct drm_simple_display_pipe_funcs udl_simple_display_pipe_funcs = {