]> git.proxmox.com Git - mirror_ubuntu-hirsute-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, 15 Oct 2021 09:26:04 +0000 (11:26 +0200)
BugLink: https://bugs.launchpad.net/bugs/1945353
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 b138783c56878605c2544a0b026447ee792f5416..0b3aa7c65857a52fe8a81e5f179a40d840a97761 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: