lkml.org 
[lkml]   [2020]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 150/330] media: go7007: Fix URB type for interrupt handling
    Date
    From: Takashi Iwai <tiwai@suse.de>

    [ Upstream commit a3ea410cac41b19a5490aad7fe6d9a9a772e646e ]

    Josef reported that his old-and-good Plextor ConvertX M402U video
    converter spews lots of WARNINGs on the recent kernels, and it turned
    out that the device uses a bulk endpoint for interrupt handling just
    like 2250 board.

    For fixing it, generalize the check with the proper verification of
    the endpoint instead of hard-coded board type check.

    Fixes: 7e5219d18e93 ("[media] go7007: Fix 2250 urb type")
    Reported-and-tested-by: Josef Möllers <josef.moellers@suse.com>
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1162583
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206427

    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/usb/go7007/go7007-usb.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/media/usb/go7007/go7007-usb.c b/drivers/media/usb/go7007/go7007-usb.c
    index ff2aa057c1fbc..f889c9d740cd1 100644
    --- a/drivers/media/usb/go7007/go7007-usb.c
    +++ b/drivers/media/usb/go7007/go7007-usb.c
    @@ -1044,6 +1044,7 @@ static int go7007_usb_probe(struct usb_interface *intf,
    struct go7007_usb *usb;
    const struct go7007_usb_board *board;
    struct usb_device *usbdev = interface_to_usbdev(intf);
    + struct usb_host_endpoint *ep;
    unsigned num_i2c_devs;
    char *name;
    int video_pipe, i, v_urb_len;
    @@ -1140,7 +1141,8 @@ static int go7007_usb_probe(struct usb_interface *intf,
    if (usb->intr_urb->transfer_buffer == NULL)
    goto allocfail;

    - if (go->board_id == GO7007_BOARDID_SENSORAY_2250)
    + ep = usb->usbdev->ep_in[4];
    + if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK)
    usb_fill_bulk_urb(usb->intr_urb, usb->usbdev,
    usb_rcvbulkpipe(usb->usbdev, 4),
    usb->intr_urb->transfer_buffer, 2*sizeof(u16),
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-09-18 05:06    [W:2.844 / U:0.492 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site