From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= Date: Fri, 5 Feb 2021 20:12:03 +0100 Subject: [RESEND PATCH 07/16] usb: musb: Fix transmission of bigger buffers In-Reply-To: <20210205191212.7644-1-pali@kernel.org> References: <20210205191212.7644-1-pali@kernel.org> Message-ID: <20210205191212.7644-8-pali@kernel.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de If udc_endpoint_write() was called with bigger payload which does not fit into one USB packet it needs to be transmitted in more USB packets. First packet is transmitted by udc_endpoint_write() call itself and other packets are put into waiting queue. Implement function musb_peri_tx() which transmit checks when endpoints are ready and continue transmitting of waiting queue. This patch fixes sending e.g. output of printenv command over usbtty serial console. Signed-off-by: Pali Roh?r --- drivers/usb/musb/musb_udc.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/usb/musb/musb_udc.c b/drivers/usb/musb/musb_udc.c index 67d1c56f9a..28719cc3f6 100644 --- a/drivers/usb/musb/musb_udc.c +++ b/drivers/usb/musb/musb_udc.c @@ -708,21 +708,16 @@ static void musb_peri_rx(u16 intr) static void musb_peri_tx(u16 intr) { + unsigned int ep; + /* Check for EP0 */ if (0x01 & intr) musb_peri_ep0_tx(); - /* - * Use this in the future when handling epN tx - * - * u8 ep; - * - * for (ep = 1; ep < 16; ep++) { - * if ((1 << ep) & intr) { - * / * handle tx for this endpoint * / - * } - * } - */ + for (ep = 1; ep < 16; ep++) { + if ((1 << ep) & intr) + udc_endpoint_write(GET_ENDPOINT(udc_device, ep)); + } } void udc_irq(void) -- 2.20.1