[U-Boot] [PATCH 6/7] usb: kbd: Cache pipe, interval and packetsize

Michael Trimarchi michael at amarulasolutions.com
Sat Sep 20 19:53:04 CEST 2014


Hi

On Sat, Sep 20, 2014 at 5:01 PM, Hans de Goede <hdegoede at redhat.com> wrote:
> Instead of looking them up every time we need them.
>

split subject and patch description

> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  common/usb_kbd.c | 34 +++++++++++++---------------------
>  1 file changed, 13 insertions(+), 21 deletions(-)
>
> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
> index cb869ac..85ee1c8 100644
> --- a/common/usb_kbd.c
> +++ b/common/usb_kbd.c
> @@ -99,6 +99,10 @@ static const unsigned char usb_kbd_arrow[] = {
>  #define USB_KBD_BOOT_REPORT_SIZE 8
>
>  struct usb_kbd_pdata {
> +       unsigned long   intpipe;

unsigned int intpipe ??

Michael

> +       int             intpktsize;
> +       int             intinterval;
> +
>         uint32_t        repeat_delay;
>
>         uint32_t        usb_in_pointer;
> @@ -305,23 +309,11 @@ static int usb_kbd_irq(struct usb_device *dev)
>  static inline void usb_kbd_poll_for_event(struct usb_device *dev)
>  {
>  #if    defined(CONFIG_SYS_USB_EVENT_POLL)
> -       struct usb_interface *iface;
> -       struct usb_endpoint_descriptor *ep;
> -       struct usb_kbd_pdata *data;
> -       int pipe;
> -       int maxp;
> -
> -       /* Get the pointer to USB Keyboard device pointer */
> -       data = dev->privptr;
> -       iface = &dev->config.if_desc[0];
> -       ep = &iface->ep_desc[0];
> -       pipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
> +       struct usb_kbd_pdata *data = dev->privptr;
>
>         /* Submit a interrupt transfer request */
> -       maxp = usb_maxpacket(dev, pipe);
> -       usb_submit_int_msg(dev, pipe, &data->new[0],
> -               min(maxp, USB_KBD_BOOT_REPORT_SIZE),
> -               ep->bInterval);
> +       usb_submit_int_msg(dev, data->intpipe, &data->new[0], data->intpktsize,
> +                          data->intinterval);
>
>         usb_kbd_irq_worker(dev);
>  #elif  defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP)
> @@ -389,7 +381,6 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
>         struct usb_interface *iface;
>         struct usb_endpoint_descriptor *ep;
>         struct usb_kbd_pdata *data;
> -       int pipe, maxp;
>
>         if (dev->descriptor.bNumConfigurations != 1)
>                 return 0;
> @@ -438,8 +429,10 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
>         /* Set IRQ handler */
>         dev->irq_handle = usb_kbd_irq;
>
> -       pipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
> -       maxp = usb_maxpacket(dev, pipe);
> +       data->intpipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
> +       data->intpktsize = min(usb_maxpacket(dev, data->intpipe),
> +                              USB_KBD_BOOT_REPORT_SIZE);
> +       data->intinterval = ep->bInterval;
>
>         /* We found a USB Keyboard, install it. */
>         usb_set_protocol(dev, iface->desc.bInterfaceNumber, 0);
> @@ -448,9 +441,8 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
>         usb_set_idle(dev, iface->desc.bInterfaceNumber, REPEAT_RATE, 0);
>
>         debug("USB KBD: enable interrupt pipe...\n");
> -       if (usb_submit_int_msg(dev, pipe, data->new,
> -                              min(maxp, USB_KBD_BOOT_REPORT_SIZE),
> -                              ep->bInterval) < 0) {
> +       if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize,
> +                              data->intinterval) < 0) {
>                 printf("Failed to get keyboard state from device %04x:%04x\n",
>                        dev->descriptor.idVendor, dev->descriptor.idProduct);
>                 /* Abort, we don't want to use that non-functional keyboard. */
> --
> 2.1.0
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot



-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |


More information about the U-Boot mailing list