On Tue, Nov 03, 2020 at 11:36:56AM +0100, Thomas Zimmermann wrote:
> Drop the driver's udev field in favor of struct drm_device.dev. No
> functional changes made.
> 
> v2:
>       * upcast dev with drm_dev_get_usb_device()

Again, witht that helper either moved to udl_drv.h or to usb code:

Acked-by: Daniel Vetter <daniel.vet...@ffwll.ch>

> 
> Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
> ---
>  drivers/gpu/drm/udl/udl_connector.c |  9 +++++----
>  drivers/gpu/drm/udl/udl_drv.c       |  3 ---
>  drivers/gpu/drm/udl/udl_drv.h       |  1 -
>  drivers/gpu/drm/udl/udl_main.c      | 25 ++++++++++++++-----------
>  4 files changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/udl/udl_connector.c 
> b/drivers/gpu/drm/udl/udl_connector.c
> index cdc1c42e1669..487e03e1727c 100644
> --- a/drivers/gpu/drm/udl/udl_connector.c
> +++ b/drivers/gpu/drm/udl/udl_connector.c
> @@ -10,6 +10,7 @@
>  #include <drm/drm_atomic_state_helper.h>
>  #include <drm/drm_crtc_helper.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_usb_helper.h>
>  
>  #include "udl_connector.h"
>  #include "udl_drv.h"
> @@ -20,6 +21,7 @@ static int udl_get_edid_block(void *data, u8 *buf, unsigned 
> int block,
>       int ret, i;
>       u8 *read_buff;
>       struct udl_device *udl = data;
> +     struct usb_device *udev = drm_dev_get_usb_device(&udl->drm);
>  
>       read_buff = kmalloc(2, GFP_KERNEL);
>       if (!read_buff)
> @@ -27,10 +29,9 @@ static int udl_get_edid_block(void *data, u8 *buf, 
> unsigned int block,
>  
>       for (i = 0; i < len; i++) {
>               int bval = (i + block * EDID_LENGTH) << 8;
> -             ret = usb_control_msg(udl->udev,
> -                                   usb_rcvctrlpipe(udl->udev, 0),
> -                                       (0x02), (0x80 | (0x02 << 5)), bval,
> -                                       0xA1, read_buff, 2, HZ);
> +             ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
> +                                   0x02, (0x80 | (0x02 << 5)), bval,
> +                                   0xA1, read_buff, 2, HZ);
>               if (ret < 1) {
>                       DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret);
>                       kfree(read_buff);
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index 96d4317a2c1b..993469d152da 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -53,7 +53,6 @@ static struct drm_driver driver = {
>  
>  static struct udl_device *udl_driver_create(struct usb_interface *interface)
>  {
> -     struct usb_device *udev = interface_to_usbdev(interface);
>       struct udl_device *udl;
>       int r;
>  
> @@ -62,8 +61,6 @@ static struct udl_device *udl_driver_create(struct 
> usb_interface *interface)
>       if (IS_ERR(udl))
>               return udl;
>  
> -     udl->udev = udev;
> -
>       r = udl_init(udl);
>       if (r)
>               return ERR_PTR(r);
> diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
> index b1461f30780b..889bfa21deb0 100644
> --- a/drivers/gpu/drm/udl/udl_drv.h
> +++ b/drivers/gpu/drm/udl/udl_drv.h
> @@ -50,7 +50,6 @@ struct urb_list {
>  struct udl_device {
>       struct drm_device drm;
>       struct device *dev;
> -     struct usb_device *udev;
>  
>       struct drm_simple_display_pipe display_pipe;
>  
> diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
> index f5d27f2a5654..208505a39ace 100644
> --- a/drivers/gpu/drm/udl/udl_main.c
> +++ b/drivers/gpu/drm/udl/udl_main.c
> @@ -11,6 +11,7 @@
>  #include <drm/drm.h>
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
> +#include <drm/drm_usb_helper.h>
>  
>  #include "udl_drv.h"
>  
> @@ -26,10 +27,10 @@
>  #define GET_URB_TIMEOUT      HZ
>  #define FREE_URB_TIMEOUT (HZ*2)
>  
> -static int udl_parse_vendor_descriptor(struct drm_device *dev,
> -                                    struct usb_device *usbdev)
> +static int udl_parse_vendor_descriptor(struct udl_device *udl)
>  {
> -     struct udl_device *udl = to_udl(dev);
> +     struct drm_device *dev = &udl->drm;
> +     struct usb_device *udev = drm_dev_get_usb_device(dev);
>       char *desc;
>       char *buf;
>       char *desc_end;
> @@ -41,7 +42,7 @@ static int udl_parse_vendor_descriptor(struct drm_device 
> *dev,
>               return false;
>       desc = buf;
>  
> -     total_len = usb_get_descriptor(usbdev, 0x5f, /* vendor specific */
> +     total_len = usb_get_descriptor(udev, 0x5f, /* vendor specific */
>                                   0, desc, MAX_VENDOR_DESCRIPTOR_SIZE);
>       if (total_len > 5) {
>               DRM_INFO("vendor descriptor length:%x data:%11ph\n",
> @@ -98,19 +99,20 @@ static int udl_parse_vendor_descriptor(struct drm_device 
> *dev,
>   */
>  static int udl_select_std_channel(struct udl_device *udl)
>  {
> -     int ret;
>       static const u8 set_def_chn[] = {0x57, 0xCD, 0xDC, 0xA7,
>                                        0x1C, 0x88, 0x5E, 0x15,
>                                        0x60, 0xFE, 0xC6, 0x97,
>                                        0x16, 0x3D, 0x47, 0xF2};
> +
>       void *sendbuf;
> +     int ret;
> +     struct usb_device *udev = drm_dev_get_usb_device(&udl->drm);
>  
>       sendbuf = kmemdup(set_def_chn, sizeof(set_def_chn), GFP_KERNEL);
>       if (!sendbuf)
>               return -ENOMEM;
>  
> -     ret = usb_control_msg(udl->udev,
> -                           usb_sndctrlpipe(udl->udev, 0),
> +     ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
>                             NR_USB_REQUEST_CHANNEL,
>                             (USB_DIR_OUT | USB_TYPE_VENDOR), 0, 0,
>                             sendbuf, sizeof(set_def_chn),
> @@ -202,6 +204,7 @@ static int udl_alloc_urb_list(struct drm_device *dev, int 
> count, size_t size)
>       struct urb_node *unode;
>       char *buf;
>       size_t wanted_size = count * size;
> +     struct usb_device *udev = drm_dev_get_usb_device(&udl->drm);
>  
>       spin_lock_init(&udl->urbs.lock);
>  
> @@ -229,7 +232,7 @@ static int udl_alloc_urb_list(struct drm_device *dev, int 
> count, size_t size)
>               }
>               unode->urb = urb;
>  
> -             buf = usb_alloc_coherent(udl->udev, size, GFP_KERNEL,
> +             buf = usb_alloc_coherent(udev, size, GFP_KERNEL,
>                                        &urb->transfer_dma);
>               if (!buf) {
>                       kfree(unode);
> @@ -243,8 +246,8 @@ static int udl_alloc_urb_list(struct drm_device *dev, int 
> count, size_t size)
>               }
>  
>               /* urb->transfer_buffer_length set to actual before submit */
> -             usb_fill_bulk_urb(urb, udl->udev, usb_sndbulkpipe(udl->udev, 1),
> -                     buf, size, udl_urb_completion, unode);
> +             usb_fill_bulk_urb(urb, udev, usb_sndbulkpipe(udev, 1),
> +                               buf, size, udl_urb_completion, unode);
>               urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
>  
>               list_add_tail(&unode->entry, &udl->urbs.list);
> @@ -316,7 +319,7 @@ int udl_init(struct udl_device *udl)
>  
>       mutex_init(&udl->gem_lock);
>  
> -     if (!udl_parse_vendor_descriptor(dev, udl->udev)) {
> +     if (!udl_parse_vendor_descriptor(udl)) {
>               ret = -ENODEV;
>               DRM_ERROR("firmware not recognized. Assume incompatible 
> device\n");
>               goto err;
> -- 
> 2.29.0
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to