]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
usb: mtu3: fix interval value for intr and isoc
authorChunfeng Yun <chunfeng.yun@mediatek.com>
Sat, 18 Dec 2021 09:57:46 +0000 (17:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jan 2022 12:58:50 +0000 (13:58 +0100)
[ Upstream commit e3d4621c22f90c33321ae6a6baab60cdb8e5a77c ]

Use the Interval value from isoc/intr endpoint descriptor, no need
minus one. The original code doesn't cause transfer error for
normal cases, but it may have side effect with respond time of ERDY
or tPingTimeout.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Link: https://lore.kernel.org/r/20211218095749.6250-1-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/mtu3/mtu3_gadget.c

index 07a6ee8db61234f0b4fc7c6f691a3d8703045e35..9f0c949820bf7e423ce2f0c9985af1afdb662a5b 100644 (file)
@@ -82,7 +82,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
                if (usb_endpoint_xfer_int(desc) ||
                                usb_endpoint_xfer_isoc(desc)) {
                        interval = desc->bInterval;
-                       interval = clamp_val(interval, 1, 16) - 1;
+                       interval = clamp_val(interval, 1, 16);
                        if (usb_endpoint_xfer_isoc(desc) && comp_desc)
                                mult = comp_desc->bmAttributes;
                }
@@ -94,7 +94,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
                if (usb_endpoint_xfer_isoc(desc) ||
                                usb_endpoint_xfer_int(desc)) {
                        interval = desc->bInterval;
-                       interval = clamp_val(interval, 1, 16) - 1;
+                       interval = clamp_val(interval, 1, 16);
                        mult = usb_endpoint_maxp_mult(desc) - 1;
                }
                break;