Commit 697033cb authored by Simon Glass's avatar Simon Glass
Browse files

dm: usb: Support driver model with USB keyboards



Allow USB keyboards to work with driver model. The main difference is that
we can have multiple buses (each with its own device numbering) and each
bus must be scanned.
Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
Reviewed-by: default avatarMarek Vasut <marex@denx.de>
parent 603afaf0
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* SPDX-License-Identifier: GPL-2.0+ * SPDX-License-Identifier: GPL-2.0+
*/ */
#include <common.h> #include <common.h>
#include <dm.h>
#include <errno.h> #include <errno.h>
#include <malloc.h> #include <malloc.h>
#include <stdio_dev.h> #include <stdio_dev.h>
...@@ -520,7 +521,37 @@ int drv_usb_kbd_init(void) ...@@ -520,7 +521,37 @@ int drv_usb_kbd_init(void)
{ {
int error, i; int error, i;
debug("%s: Probing for keyboard\n", __func__);/* Scan all USB Devices */ debug("%s: Probing for keyboard\n", __func__);
#ifdef CONFIG_DM_USB
/*
* TODO: We should add USB_DEVICE() declarations to each USB ethernet
* driver and then most of this file can be removed.
*/
struct udevice *bus;
struct uclass *uc;
int ret;
ret = uclass_get(UCLASS_USB, &uc);
if (ret)
return ret;
uclass_foreach_dev(bus, uc) {
for (i = 0; i < USB_MAX_DEVICE; i++) {
struct usb_device *dev;
dev = usb_get_dev_index(bus, i); /* get device */
debug("i=%d, %p\n", i, dev);
if (!dev)
break; /* no more devices available */
error = probe_usb_keyboard(dev);
if (!error)
return 1;
if (error && error != -ENOENT)
return error;
} /* for */
}
#else
/* Scan all USB Devices */
for (i = 0; i < USB_MAX_DEVICE; i++) { for (i = 0; i < USB_MAX_DEVICE; i++) {
struct usb_device *dev; struct usb_device *dev;
...@@ -538,6 +569,7 @@ int drv_usb_kbd_init(void) ...@@ -538,6 +569,7 @@ int drv_usb_kbd_init(void)
if (error && error != -ENOENT) if (error && error != -ENOENT)
return error; return error;
} }
#endif
/* No USB Keyboard found */ /* No USB Keyboard found */
return -1; return -1;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment