summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/udc/renesas_usb3.c
diff options
context:
space:
mode:
authorYoshihiro Shimoda2017-07-18 14:26:41 +0200
committerFelipe Balbi2017-07-18 15:20:08 +0200
commitebe6b2b81464a2c083542feb1a1a6c78a2268151 (patch)
treea1909700039512e421f59846e5d572e7c0a0b22e /drivers/usb/gadget/udc/renesas_usb3.c
parentusb: gadget: udc: renesas_usb3: fix free size in renesas_usb3_dma_free_prd() (diff)
downloadkernel-qcow2-linux-ebe6b2b81464a2c083542feb1a1a6c78a2268151.tar.gz
kernel-qcow2-linux-ebe6b2b81464a2c083542feb1a1a6c78a2268151.tar.xz
kernel-qcow2-linux-ebe6b2b81464a2c083542feb1a1a6c78a2268151.zip
usb: gadget: udc: renesas_usb3: fix zlp transfer by the dmac
The dedicated dmac can transfer a zero-length-packet (zlp) if some bits of the USB_COM_CON register. However, the commit 2d4aa21a73ba ("usb: gadget: udc: renesas_usb3: add support for dedicated DMAC") didn't set the bits to 1. So, this patch fixes it. Fixes: 2d4aa21a73b ("usb: gadget: udc: renesas_usb3: add support for dedicated DMAC) Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/gadget/udc/renesas_usb3.c')
-rw-r--r--drivers/usb/gadget/udc/renesas_usb3.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
index 923ad5acc482..1cc5f0deefba 100644
--- a/drivers/usb/gadget/udc/renesas_usb3.c
+++ b/drivers/usb/gadget/udc/renesas_usb3.c
@@ -89,6 +89,9 @@
/* USB_COM_CON */
#define USB_COM_CON_CONF BIT(24)
+#define USB_COM_CON_PN_WDATAIF_NL BIT(23)
+#define USB_COM_CON_PN_RDATAIF_NL BIT(22)
+#define USB_COM_CON_PN_LSTTR_PP BIT(21)
#define USB_COM_CON_SPD_MODE BIT(17)
#define USB_COM_CON_EP0_EN BIT(16)
#define USB_COM_CON_DEV_ADDR_SHIFT 8
@@ -686,6 +689,9 @@ static void renesas_usb3_init_controller(struct renesas_usb3 *usb3)
{
usb3_init_axi_bridge(usb3);
usb3_init_epc_registers(usb3);
+ usb3_set_bit(usb3, USB_COM_CON_PN_WDATAIF_NL |
+ USB_COM_CON_PN_RDATAIF_NL | USB_COM_CON_PN_LSTTR_PP,
+ USB3_USB_COM_CON);
usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_STA);
usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_ENA);