Push upcasts from struct drm_device to struct udl_device outwards
in the call chain; cast earlier and call functions with the upcasted
value. Improves type safety.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/gpu/drm/udl/udl_drv.c      |  6 ++++--
 drivers/gpu/drm/udl/udl_drv.h      | 12 ++++++------
 drivers/gpu/drm/udl/udl_main.c     | 28 ++++++++++++----------------
 drivers/gpu/drm/udl/udl_modeset.c  | 21 ++++++++++++---------
 drivers/gpu/drm/udl/udl_transfer.c |  6 +++---
 5 files changed, 37 insertions(+), 36 deletions(-)

diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index d1bc3f165b27d..1922988625eb0 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -22,13 +22,14 @@ static int udl_usb_suspend(struct usb_interface *interface,
                           pm_message_t message)
 {
        struct drm_device *dev = usb_get_intfdata(interface);
+       struct udl_device *udl = to_udl(dev);
        int ret;
 
        ret = drm_mode_config_helper_suspend(dev);
        if (ret)
                return ret;
 
-       udl_sync_pending_urbs(dev);
+       udl_sync_pending_urbs(udl);
        return 0;
 }
 
@@ -109,9 +110,10 @@ static int udl_usb_probe(struct usb_interface *interface,
 static void udl_usb_disconnect(struct usb_interface *interface)
 {
        struct drm_device *dev = usb_get_intfdata(interface);
+       struct udl_device *udl = to_udl(dev);
 
        drm_dev_unplug(dev);
-       udl_drop_usb(dev);
+       udl_drop_usb(udl);
 }
 
 /*
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 1204319fc8e33..918738e549d6d 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -69,22 +69,22 @@ static inline struct usb_device *udl_to_usb_device(struct 
udl_device *udl)
 }
 
 /* modeset */
-int udl_modeset_init(struct drm_device *dev);
+int udl_modeset_init(struct udl_device *udl);
 struct drm_connector *udl_connector_init(struct drm_device *dev);
 
-struct urb *udl_get_urb(struct drm_device *dev);
+struct urb *udl_get_urb(struct udl_device *udl);
 
-int udl_submit_urb(struct drm_device *dev, struct urb *urb, size_t len);
-void udl_sync_pending_urbs(struct drm_device *dev);
+int udl_submit_urb(struct udl_device *udl, struct urb *urb, size_t len);
+void udl_sync_pending_urbs(struct udl_device *udl);
 void udl_urb_completion(struct urb *urb);
 
 int udl_init(struct udl_device *udl);
 
-int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
+int udl_render_hline(struct udl_device *udl, int log_bpp, struct urb **urb_ptr,
                     const char *front, char **urb_buf_ptr,
                     u32 byte_offset, u32 device_byte_offset, u32 byte_width);
 
-int udl_drop_usb(struct drm_device *dev);
+int udl_drop_usb(struct udl_device *udl);
 int udl_select_std_channel(struct udl_device *udl);
 
 #endif
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index f1ffa928d5d9e..47fb6c34bfde3 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -145,9 +145,8 @@ void udl_urb_completion(struct urb *urb)
        wake_up(&udl->urbs.sleep);
 }
 
-static void udl_free_urb_list(struct drm_device *dev)
+static void udl_free_urb_list(struct udl_device *udl)
 {
-       struct udl_device *udl = to_udl(dev);
        struct urb_node *unode;
        struct urb *urb;
 
@@ -172,9 +171,8 @@ static void udl_free_urb_list(struct drm_device *dev)
        wake_up_all(&udl->urbs.sleep);
 }
 
-static int udl_alloc_urb_list(struct drm_device *dev, int count, size_t size)
+static int udl_alloc_urb_list(struct udl_device *udl, int count, size_t size)
 {
-       struct udl_device *udl = to_udl(dev);
        struct urb *urb;
        struct urb_node *unode;
        char *buf;
@@ -210,7 +208,7 @@ static int udl_alloc_urb_list(struct drm_device *dev, int 
count, size_t size)
                        usb_free_urb(urb);
                        if (size > PAGE_SIZE) {
                                size /= 2;
-                               udl_free_urb_list(dev);
+                               udl_free_urb_list(udl);
                                goto retry;
                        }
                        break;
@@ -259,9 +257,8 @@ static struct urb *udl_get_urb_locked(struct udl_device 
*udl, long timeout)
 }
 
 #define GET_URB_TIMEOUT        HZ
-struct urb *udl_get_urb(struct drm_device *dev)
+struct urb *udl_get_urb(struct udl_device *udl)
 {
-       struct udl_device *udl = to_udl(dev);
        struct urb *urb;
 
        spin_lock_irq(&udl->urbs.lock);
@@ -270,9 +267,8 @@ struct urb *udl_get_urb(struct drm_device *dev)
        return urb;
 }
 
-int udl_submit_urb(struct drm_device *dev, struct urb *urb, size_t len)
+int udl_submit_urb(struct udl_device *udl, struct urb *urb, size_t len)
 {
-       struct udl_device *udl = to_udl(dev);
        int ret;
 
        if (WARN_ON(len > udl->urbs.size)) {
@@ -290,9 +286,9 @@ int udl_submit_urb(struct drm_device *dev, struct urb *urb, 
size_t len)
 }
 
 /* wait until all pending URBs have been processed */
-void udl_sync_pending_urbs(struct drm_device *dev)
+void udl_sync_pending_urbs(struct udl_device *udl)
 {
-       struct udl_device *udl = to_udl(dev);
+       struct drm_device *dev = &udl->drm;
 
        spin_lock_irq(&udl->urbs.lock);
        /* 2 seconds as a sane timeout */
@@ -329,13 +325,13 @@ int udl_init(struct udl_device *udl)
        if (udl_select_std_channel(udl))
                DRM_ERROR("Selecting channel failed\n");
 
-       if (!udl_alloc_urb_list(dev, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
+       if (!udl_alloc_urb_list(udl, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
                DRM_ERROR("udl_alloc_urb_list failed\n");
                goto err;
        }
 
        DRM_DEBUG("\n");
-       ret = udl_modeset_init(dev);
+       ret = udl_modeset_init(udl);
        if (ret)
                goto err;
 
@@ -343,14 +339,14 @@ int udl_init(struct udl_device *udl)
 
 err:
        if (udl->urbs.count)
-               udl_free_urb_list(dev);
+               udl_free_urb_list(udl);
        DRM_ERROR("%d\n", ret);
        return ret;
 }
 
-int udl_drop_usb(struct drm_device *dev)
+int udl_drop_usb(struct udl_device *udl)
 {
-       udl_free_urb_list(dev);
+       udl_free_urb_list(udl);
 
        return 0;
 }
diff --git a/drivers/gpu/drm/udl/udl_modeset.c 
b/drivers/gpu/drm/udl/udl_modeset.c
index 3b65e93ea0ae8..231e829bd709a 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -205,6 +205,7 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
                             const struct drm_rect *clip)
 {
        struct drm_device *dev = fb->dev;
+       struct udl_device *udl = to_udl(dev);
        void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
        int i, ret;
        char *cmd;
@@ -216,7 +217,7 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
                return ret;
        log_bpp = ret;
 
-       urb = udl_get_urb(dev);
+       urb = udl_get_urb(udl);
        if (!urb)
                return -ENOMEM;
        cmd = urb->transfer_buffer;
@@ -226,7 +227,7 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
                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,
+               ret = udl_render_hline(udl, log_bpp, &urb, (char *)vaddr,
                                       &cmd, byte_offset, dev_byte_offset,
                                       byte_width);
                if (ret)
@@ -239,7 +240,7 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
                if (cmd < (char *)urb->transfer_buffer + 
urb->transfer_buffer_length)
                        *cmd++ = UDL_MSG_BULK;
                len = cmd - (char *)urb->transfer_buffer;
-               ret = udl_submit_urb(dev, urb, len);
+               ret = udl_submit_urb(udl, urb, len);
        } else {
                udl_urb_completion(urb);
        }
@@ -330,6 +331,7 @@ static const struct drm_plane_funcs udl_primary_plane_funcs 
= {
 static void udl_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct 
drm_atomic_state *state)
 {
        struct drm_device *dev = crtc->dev;
+       struct udl_device *udl = to_udl(dev);
        struct drm_crtc_state *crtc_state = 
drm_atomic_get_new_crtc_state(state, crtc);
        struct drm_display_mode *mode = &crtc_state->mode;
        struct urb *urb;
@@ -339,7 +341,7 @@ static void udl_crtc_helper_atomic_enable(struct drm_crtc 
*crtc, struct drm_atom
        if (!drm_dev_enter(dev, &idx))
                return;
 
-       urb = udl_get_urb(dev);
+       urb = udl_get_urb(udl);
        if (!urb)
                goto out;
 
@@ -355,7 +357,7 @@ static void udl_crtc_helper_atomic_enable(struct drm_crtc 
*crtc, struct drm_atom
        buf = udl_vidreg_unlock(buf);
        buf = udl_dummy_render(buf);
 
-       udl_submit_urb(dev, urb, buf - (char *)urb->transfer_buffer);
+       udl_submit_urb(udl, urb, buf - (char *)urb->transfer_buffer);
 
 out:
        drm_dev_exit(idx);
@@ -364,6 +366,7 @@ static void udl_crtc_helper_atomic_enable(struct drm_crtc 
*crtc, struct drm_atom
 static void udl_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct 
drm_atomic_state *state)
 {
        struct drm_device *dev = crtc->dev;
+       struct udl_device *udl = to_udl(dev);
        struct urb *urb;
        char *buf;
        int idx;
@@ -371,7 +374,7 @@ static void udl_crtc_helper_atomic_disable(struct drm_crtc 
*crtc, struct drm_ato
        if (!drm_dev_enter(dev, &idx))
                return;
 
-       urb = udl_get_urb(dev);
+       urb = udl_get_urb(udl);
        if (!urb)
                goto out;
 
@@ -381,7 +384,7 @@ static void udl_crtc_helper_atomic_disable(struct drm_crtc 
*crtc, struct drm_ato
        buf = udl_vidreg_unlock(buf);
        buf = udl_dummy_render(buf);
 
-       udl_submit_urb(dev, urb, buf - (char *)urb->transfer_buffer);
+       udl_submit_urb(udl, urb, buf - (char *)urb->transfer_buffer);
 
 out:
        drm_dev_exit(idx);
@@ -476,9 +479,9 @@ static const struct drm_mode_config_funcs 
udl_mode_config_funcs = {
        .atomic_commit = drm_atomic_helper_commit,
 };
 
-int udl_modeset_init(struct drm_device *dev)
+int udl_modeset_init(struct udl_device *udl)
 {
-       struct udl_device *udl = to_udl(dev);
+       struct drm_device *dev = &udl->drm;
        struct drm_plane *primary_plane;
        struct drm_crtc *crtc;
        struct drm_encoder *encoder;
diff --git a/drivers/gpu/drm/udl/udl_transfer.c 
b/drivers/gpu/drm/udl/udl_transfer.c
index 62224992988f2..7d670b3a52939 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -170,7 +170,7 @@ static void udl_compress_hline16(
  * (that we can only write to, slowly, and can never read), and (optionally)
  * our shadow copy that tracks what's been sent to that hardware buffer.
  */
-int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
+int udl_render_hline(struct udl_device *udl, int log_bpp, struct urb **urb_ptr,
                     const char *front, char **urb_buf_ptr,
                     u32 byte_offset, u32 device_byte_offset,
                     u32 byte_width)
@@ -199,10 +199,10 @@ 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;
-                       int ret = udl_submit_urb(dev, urb, len);
+                       int ret = udl_submit_urb(udl, urb, len);
                        if (ret)
                                return ret;
-                       urb = udl_get_urb(dev);
+                       urb = udl_get_urb(udl);
                        if (!urb)
                                return -EAGAIN;
                        *urb_ptr = urb;
-- 
2.49.0

Reply via email to