[U-Boot] [PATCH] USB: Add usb_event_poll() to get keyboards working with EHCI

Remy Bohmer linux at bohmer.net
Sat Sep 24 18:41:58 CEST 2011


Hi,

2011/9/23 Marek Vasut <marek.vasut at gmail.com>:
> Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> Cc: Remy Bohmer <linux at bohmer.net>
> ---
>  drivers/usb/host/ehci-hcd.c |   33 ++++++++++++++++++++++++++++++++-
>  1 files changed, 32 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index 52b98c2..5b53b3a 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
> @@ -27,6 +27,10 @@
>  #include <malloc.h>
>  #include <watchdog.h>
>  #include <usb/ehci-fsl.h>
> +#ifdef CONFIG_USB_KEYBOARD
> +#include <stdio_dev.h>
> +extern unsigned char new[];
> +#endif
>
>  #include "ehci.h"
>
> @@ -914,5 +918,32 @@ submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
>
>        debug("dev=%p, pipe=%lu, buffer=%p, length=%d, interval=%d",
>              dev, pipe, buffer, length, interval);
> -       return -1;
> +       return ehci_submit_async(dev, pipe, buffer, length, NULL);

Why is changing this line needed?

> +}
> +
> +#ifdef CONFIG_SYS_USB_EVENT_POLL
> +/*
> + * This function polls for USB keyboard data.
> + */
> +void usb_event_poll()
> +{
> +       struct stdio_dev *dev;
> +       struct usb_device *usb_kbd_dev;
> +       struct usb_interface *iface;
> +       struct usb_endpoint_descriptor *ep;
> +       int pipe;
> +       int maxp;
> +
> +       /* Get the pointer to USB Keyboard device pointer */
> +       dev = stdio_get_by_name("usbkbd");
> +       usb_kbd_dev = (struct usb_device *)dev->priv;
> +       iface = &usb_kbd_dev->config.if_desc[0];
> +       ep = &iface->ep_desc[0];
> +       pipe = usb_rcvintpipe(usb_kbd_dev, ep->bEndpointAddress);
> +
> +       /* Submit a interrupt transfer request */
> +       maxp = usb_maxpacket(usb_kbd_dev, pipe);
> +       usb_submit_int_msg(usb_kbd_dev, pipe, &new[0],
> +                       maxp > 8 ? 8 : maxp, ep->bInterval);
>  }
> +#endif /* CONFIG_SYS_USB_EVENT_POLL */

Patch does not apply to u-boot-usb master.
Please rebase this patch.

Kind regards,

Remy


More information about the U-Boot mailing list