aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/cdns3/cdns3-gadget.h
diff options
context:
space:
mode:
authorFrank Li <Frank.Li@nxp.com>2023-12-24 10:38:14 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-01-04 16:01:44 +0100
commit92f02efa1d86d7dcaef7f38a5fe3396c4e88a93c (patch)
tree1c6fd27a257bdaec830031d7d4173a72b4936b5a /drivers/usb/cdns3/cdns3-gadget.h
parent1b8be5ecff26201bafb0a554c74e91571299fb94 (diff)
usb: cdns3: fix iso transfer error when mult is not zero
ISO basic transfer is ITP(SOF) Package_0 Package_1 ... Package_n CDNS3 DMA start dma transfer from memmory to internal FIFO when get SOF, controller will transfer data to usb bus from internal FIFO when get IN token. According USB spec defination: Maximum number of packets = (bMaxBurst + 1) * (Mult + 1) Internal memory should be the same as (bMaxBurst + 1) * (Mult + 1). DMA don't fetch data advance when ISO transfer, so only reserve (bMaxBurst + 1) * (Mult + 1) internal memory for ISO transfer. Need save Mult and bMaxBurst information and set it into EP_CFG register, otherwise only 1 package is sent by controller, other package will be lost. Cc: <stable@vger.kernel.org> Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver") Signed-off-by: Frank Li <Frank.Li@nxp.com> Link: https://lore.kernel.org/r/20231224153816.1664687-3-Frank.Li@nxp.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/cdns3/cdns3-gadget.h')
-rw-r--r--drivers/usb/cdns3/cdns3-gadget.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/cdns3/cdns3-gadget.h b/drivers/usb/cdns3/cdns3-gadget.h
index fbe4a8e3aa89..086a7bb83897 100644
--- a/drivers/usb/cdns3/cdns3-gadget.h
+++ b/drivers/usb/cdns3/cdns3-gadget.h
@@ -1168,6 +1168,9 @@ struct cdns3_endpoint {
u8 dir;
u8 num;
u8 type;
+ u8 mult;
+ u8 bMaxBurst;
+ u16 wMaxPacketSize;
int interval;
int free_trbs;