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 <tzimmerm...@suse.de>
---
 drivers/gpu/drm/udl/udl_drv.h      | 1 -
 drivers/gpu/drm/udl/udl_fb.c       | 7 ++++---
 drivers/gpu/drm/udl/udl_main.c     | 3 ---
 drivers/gpu/drm/udl/udl_transfer.c | 7 ++++---
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index d732c9e47812..4de00bddef39 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -62,7 +62,6 @@ struct udl_device {
        int sku_pixel_limit;
 
        struct urb_list urbs;
-       atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */
 
        char mode_buf[1024];
        uint32_t mode_buf_len;
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 7d184ff96a1f..3c77e8e5e417 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -141,9 +141,10 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, 
int y,
                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;
-               if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
-                                    &cmd, byte_offset, dev_byte_offset,
-                                    byte_width))
+               ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
+                                      &cmd, byte_offset, dev_byte_offset,
+                                      byte_width);
+               if (ret)
                        goto out_drm_gem_shmem_vunmap;
        }
 
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index a23218fc7d8e..ff3e98666e8c 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -140,7 +140,6 @@ void udl_urb_completion(struct urb *urb)
                    urb->status == -ESHUTDOWN)) {
                        DRM_ERROR("%s - nonzero write bulk status received: 
%d\n",
                                __func__, urb->status);
-                       atomic_set(&udl->lost_pixels, 1);
                }
        }
 
@@ -271,7 +270,6 @@ struct urb *udl_get_urb(struct drm_device *dev)
        /* Wait for an in-flight buffer to complete and get re-queued */
        ret = down_timeout(&udl->urbs.limit_sem, GET_URB_TIMEOUT);
        if (ret) {
-               atomic_set(&udl->lost_pixels, 1);
                DRM_INFO("wait for urb interrupted: %x available: %d\n",
                       ret, udl->urbs.available);
                goto error;
@@ -304,7 +302,6 @@ int udl_submit_urb(struct drm_device *dev, struct urb *urb, 
size_t len)
        ret = usb_submit_urb(urb, GFP_ATOMIC);
        if (ret) {
                udl_urb_completion(urb); /* because no one else will */
-               atomic_set(&udl->lost_pixels, 1);
                DRM_ERROR("usb_submit_urb error %x\n", ret);
        }
        return ret;
diff --git a/drivers/gpu/drm/udl/udl_transfer.c 
b/drivers/gpu/drm/udl/udl_transfer.c
index 5fae48723286..971927669d6b 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -234,11 +234,12 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, 
struct urb **urb_ptr,
 
                if (cmd >= cmd_end) {
                        int len = cmd - (u8 *) urb->transfer_buffer;
-                       if (udl_submit_urb(dev, urb, len))
-                               return 1; /* lost pixels is set */
+                       int ret = udl_submit_urb(dev, urb, len);
+                       if (ret)
+                               return ret;
                        urb = udl_get_urb(dev);
                        if (!urb)
-                               return 1; /* lost_pixels is set */
+                               return -EAGAIN;
                        *urb_ptr = urb;
                        cmd = urb->transfer_buffer;
                        cmd_end = &cmd[urb->transfer_buffer_length];
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to