summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/console.c36
-rw-r--r--common/log.c1
-rw-r--r--common/usb_kbd.c74
3 files changed, 43 insertions, 68 deletions
diff --git a/common/console.c b/common/console.c
index 52d6df8150f..c9e206aec41 100644
--- a/common/console.c
+++ b/common/console.c
@@ -4,6 +4,8 @@
* Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
*/
+#define LOG_CATEGORY LOGC_CONSOLE
+
#include <console.h>
#include <debug_uart.h>
#include <display_options.h>
@@ -1242,3 +1244,37 @@ int console_init_r(void)
}
#endif /* CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV) */
+
+int console_remove_by_name(const char *name)
+{
+ int err = 0;
+
+#if CONFIG_IS_ENABLED(CONSOLE_MUX)
+ int fnum;
+
+ log_debug("removing console device %s\n", name);
+ for (fnum = 0; fnum < MAX_FILES; fnum++) {
+ struct stdio_dev **src, **dest;
+ int i;
+
+ log_debug("file %d: %d devices: ", fnum, cd_count[fnum]);
+ src = console_devices[fnum];
+ dest = src;
+ for (i = 0; i < cd_count[fnum]; i++, src++) {
+ struct stdio_dev *sdev = *src;
+ int ret = 0;
+
+ if (!strcmp(sdev->name, name))
+ ret = stdio_deregister_dev(sdev, true);
+ else
+ *dest++ = *src;
+ if (ret && !err)
+ err = ret;
+ }
+ cd_count[fnum] = dest - console_devices[fnum];
+ log_debug("now %d\n", cd_count[fnum]);
+ }
+#endif /* CONSOLE_MUX */
+
+ return err;
+}
diff --git a/common/log.c b/common/log.c
index dfee250b158..b83a6618900 100644
--- a/common/log.c
+++ b/common/log.c
@@ -31,6 +31,7 @@ static const char *const log_cat_name[] = {
"event",
"fs",
"expo",
+ "console",
};
_Static_assert(ARRAY_SIZE(log_cat_name) == LOGC_COUNT - LOGC_NONE,
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index f3b4a3c94e6..bbfee23bc26 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -137,6 +137,11 @@ extern int __maybe_unused net_busy_flag;
/* The period of time between two calls of usb_kbd_testc(). */
static unsigned long kbd_testc_tms;
+int usb_kbd_remove_for_test(void)
+{
+ return console_remove_by_name(DEVNAME);
+}
+
/* Puts character in the queue and sets up the in and out pointer. */
static void usb_kbd_put_queue(struct usb_kbd_pdata *data, u8 c)
{
@@ -612,7 +617,7 @@ static int probe_usb_keyboard(struct usb_device *dev)
debug("USB KBD: register.\n");
memset(&usb_kbd_dev, 0, sizeof(struct stdio_dev));
strcpy(usb_kbd_dev.name, DEVNAME);
- usb_kbd_dev.flags = DEV_FLAGS_INPUT;
+ usb_kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_DM;
usb_kbd_dev.getc = usb_kbd_getc;
usb_kbd_dev.tstc = usb_kbd_testc;
usb_kbd_dev.priv = (void *)dev;
@@ -643,71 +648,6 @@ static int probe_usb_keyboard(struct usb_device *dev)
return 0;
}
-#if !CONFIG_IS_ENABLED(DM_USB)
-/* Search for keyboard and register it if found. */
-int drv_usb_kbd_init(void)
-{
- int error, i;
-
- debug("%s: Probing for keyboard\n", __func__);
- /* Scan all USB Devices */
- for (i = 0; i < USB_MAX_DEVICE; i++) {
- struct usb_device *dev;
-
- /* Get USB device. */
- dev = usb_get_dev_index(i);
- if (!dev)
- break;
-
- if (dev->devnum == -1)
- continue;
-
- error = probe_usb_keyboard(dev);
- if (!error)
- return 1;
- if (error && error != -ENOENT)
- return error;
- }
-
- /* No USB Keyboard found */
- return -1;
-}
-
-/* Deregister the keyboard. */
-int usb_kbd_deregister(int force)
-{
-#if CONFIG_IS_ENABLED(SYS_STDIO_DEREGISTER)
- struct stdio_dev *dev;
- struct usb_device *usb_kbd_dev;
- struct usb_kbd_pdata *data;
-
- dev = stdio_get_by_name(DEVNAME);
- if (dev) {
- usb_kbd_dev = (struct usb_device *)dev->priv;
- data = usb_kbd_dev->privptr;
-#if CONFIG_IS_ENABLED(CONSOLE_MUX)
- if (iomux_replace_device(stdin, DEVNAME, force ? "nulldev" : ""))
- return 1;
-#endif
- if (stdio_deregister_dev(dev, force) != 0)
- return 1;
-#ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE
- destroy_int_queue(usb_kbd_dev, data->intq);
-#endif
- free(data->new);
- free(data);
- }
-
- return 0;
-#else
- return 1;
-#endif
-}
-
-#endif
-
-#if CONFIG_IS_ENABLED(DM_USB)
-
static int usb_kbd_probe(struct udevice *dev)
{
struct usb_device *udev = dev_get_parent_priv(dev);
@@ -788,5 +728,3 @@ static const struct usb_device_id kbd_id_table[] = {
};
U_BOOT_USB_DEVICE(usb_kbd, kbd_id_table);
-
-#endif