[U-Boot] [PATCH 05/14] usb: xhci: Add interrupt transfer support
Stefan Roese
sr at denx.de
Fri Sep 22 05:00:00 UTC 2017
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 <bmeng.cn at gmail.com>
> ---
>
> 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 <sr at denx.de>
Tested-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
More information about the U-Boot
mailing list