]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
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)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 1 Oct 2021 09:34:03 +0000 (11:34 +0200)
BugLink: https://bugs.launchpad.net/bugs/1945517
commit 44e4439d8f9f8d0e9da767d1f31e7c211081feca upstream.

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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/usb/mtu3/mtu3_gadget.c

index a4d41dda70975ba960dd67a4e47dc301e94de675..619c4598e64ea33a07f6e126d63a647deebc6ca0 100644 (file)
@@ -72,14 +72,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:
@@ -100,7 +98,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: