X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=common%2Fusb_kbd.c;h=19f01db1caa299f8217b778b12772fd789fc013f;hb=7ee411071f31c856107e6b29fcd8df53ae4d7349;hp=2472d25d4a9bc33b3f9e21724000eaaf0549c71e;hpb=d53da847cf274b8fd3ea362a3dfff68ea6206613;p=u-boot diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 2472d25d4a..19f01db1ca 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -323,7 +323,23 @@ 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) - 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); + + /* Submit a interrupt transfer request */ + maxp = usb_maxpacket(dev, pipe); + usb_submit_int_msg(dev, pipe, &data->new[0], + maxp > 8 ? 8 : maxp, ep->bInterval); + usb_kbd_irq_worker(dev); #elif defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP) struct usb_interface *iface; @@ -487,6 +503,11 @@ int drv_usb_kbd_init(void) if (error) return error; +#ifdef CONFIG_CONSOLE_MUX + error = iomux_doenv(stdin, stdinname); + if (error) + return error; +#else /* Check if this is the standard input device. */ if (strcmp(stdinname, DEVNAME)) return 1; @@ -498,6 +519,7 @@ int drv_usb_kbd_init(void) error = console_assign(stdin, DEVNAME); if (error) return error; +#endif return 1; }