From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Fri, 22 Sep 2017 07:00:00 +0200 Subject: [U-Boot] [PATCH 05/14] usb: xhci: Add interrupt transfer support In-Reply-To: <1505742050-5697-6-git-send-email-bmeng.cn@gmail.com> References: <1505742050-5697-1-git-send-email-bmeng.cn@gmail.com> <1505742050-5697-6-git-send-email-bmeng.cn@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 18.09.2017 15:40, Bin Meng wrote: > xHCI uses normal TRBs for both bulk and interrupt. This adds the > missing interrupt transfer support to xHCI so that devices like > USB keyboard that uses interrupt transfer can work. > > Signed-off-by: Bin Meng > --- > > drivers/usb/host/xhci.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index 04eb1eb..4b3d58d 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -890,11 +890,18 @@ unknown: > static int _xhci_submit_int_msg(struct usb_device *udev, unsigned long pipe, > void *buffer, int length, int interval) > { > + if (usb_pipetype(pipe) != PIPE_INTERRUPT) { > + printf("non-interrupt pipe (type=%lu)", usb_pipetype(pipe)); > + return -EINVAL; > + } > + > /* > - * TODO: Not addressing any interrupt type transfer requests > - * Add support for it later. > + * xHCI uses normal TRBs for both bulk and interrupt. When the > + * interrupt endpoint is to be serviced, the xHC will consume > + * (at most) one TD. A TD (comprised of sg list entries) can > + * take several service intervals to transmit. > */ > - return -EINVAL; > + return xhci_bulk_tx(udev, pipe, length, buffer); > } > > /** > Reviewed-by: Stefan Roese Tested-by: Stefan Roese Thanks, Stefan