usb: mtu3: fix the wrong HS mult value
authorChunfeng Yun <chunfeng.yun@mediatek.com>
Fri, 13 Aug 2021 06:30:49 +0000 (14:30 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Aug 2021 11:05:50 +0000 (13:05 +0200)
usb_endpoint_maxp() returns actual max packet size, @mult will
always be zero, fix it by using usb_endpoint_maxp_mult() instead
to get mult.

Fixes: 4d79e042ed8b ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Link: https://lore.kernel.org/r/1628836253-7432-3-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/mtu3/mtu3_gadget.c

index 45e7d2e..a9a65b4 100644 (file)
@@ -64,14 +64,12 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
        u32 interval = 0;
        u32 mult = 0;
        u32 burst = 0;
-       int max_packet;
        int ret;
 
        desc = mep->desc;
        comp_desc = mep->comp_desc;
        mep->type = usb_endpoint_type(desc);
-       max_packet = usb_endpoint_maxp(desc);
-       mep->maxp = max_packet & GENMASK(10, 0);
+       mep->maxp = usb_endpoint_maxp(desc);
 
        switch (mtu->g.speed) {
        case USB_SPEED_SUPER:
@@ -92,7 +90,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
                                usb_endpoint_xfer_int(desc)) {
                        interval = desc->bInterval;
                        interval = clamp_val(interval, 1, 16) - 1;
-                       mult = (max_packet & GENMASK(12, 11)) >> 11;
+                       mult = usb_endpoint_maxp_mult(desc) - 1;
                }
                break;
        default: