Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/udl: Remove field lost_pixels from struct udl_device

The field lost_pixels in struct udl_device was supposed to signal an
error during USB transfers of the framebuffer data. The driver would
have to schedule a re-transfer at a later point. This code was never
implemented. Remove lost_pixels and return regular error codes instead.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191206085954.9697-8-tzimmermann@suse.de

+8 -10
-1
drivers/gpu/drm/udl/udl_drv.h
··· 62 62 int sku_pixel_limit; 63 63 64 64 struct urb_list urbs; 65 - atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */ 66 65 67 66 char mode_buf[1024]; 68 67 uint32_t mode_buf_len;
+4 -3
drivers/gpu/drm/udl/udl_fb.c
··· 141 141 const int byte_offset = line_offset + (clip.x1 << log_bpp); 142 142 const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp; 143 143 const int byte_width = (clip.x2 - clip.x1) << log_bpp; 144 - if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr, 145 - &cmd, byte_offset, dev_byte_offset, 146 - byte_width)) 144 + ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr, 145 + &cmd, byte_offset, dev_byte_offset, 146 + byte_width); 147 + if (ret) 147 148 goto out_drm_gem_shmem_vunmap; 148 149 } 149 150
-3
drivers/gpu/drm/udl/udl_main.c
··· 140 140 urb->status == -ESHUTDOWN)) { 141 141 DRM_ERROR("%s - nonzero write bulk status received: %d\n", 142 142 __func__, urb->status); 143 - atomic_set(&udl->lost_pixels, 1); 144 143 } 145 144 } 146 145 ··· 270 271 /* Wait for an in-flight buffer to complete and get re-queued */ 271 272 ret = down_timeout(&udl->urbs.limit_sem, GET_URB_TIMEOUT); 272 273 if (ret) { 273 - atomic_set(&udl->lost_pixels, 1); 274 274 DRM_INFO("wait for urb interrupted: %x available: %d\n", 275 275 ret, udl->urbs.available); 276 276 goto error; ··· 302 304 ret = usb_submit_urb(urb, GFP_ATOMIC); 303 305 if (ret) { 304 306 udl_urb_completion(urb); /* because no one else will */ 305 - atomic_set(&udl->lost_pixels, 1); 306 307 DRM_ERROR("usb_submit_urb error %x\n", ret); 307 308 } 308 309 return ret;
+4 -3
drivers/gpu/drm/udl/udl_transfer.c
··· 234 234 235 235 if (cmd >= cmd_end) { 236 236 int len = cmd - (u8 *) urb->transfer_buffer; 237 - if (udl_submit_urb(dev, urb, len)) 238 - return 1; /* lost pixels is set */ 237 + int ret = udl_submit_urb(dev, urb, len); 238 + if (ret) 239 + return ret; 239 240 urb = udl_get_urb(dev); 240 241 if (!urb) 241 - return 1; /* lost_pixels is set */ 242 + return -EAGAIN; 242 243 *urb_ptr = urb; 243 244 cmd = urb->transfer_buffer; 244 245 cmd_end = &cmd[urb->transfer_buffer_length];