X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fusb_kbd.c;h=020f0d4117f7d07f1b22debe8e78b1c78f3f2f64;hb=2bc18ce570ab4f1ba91974376bb5377ca4990203;hp=cbb1995de3398431878811f92f6e79551b947965;hpb=e6c516a973dff2718488d065d859bcfe64fb05aa;p=oweals%2Fu-boot.git diff --git a/common/usb_kbd.c b/common/usb_kbd.c index cbb1995de3..020f0d4117 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -1,11 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * Part of this source has been derived from the Linux USB * project. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include @@ -14,6 +13,7 @@ #include #include #include +#include #include #include @@ -199,7 +199,7 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode, } } - if ((scancode > 0x1d) && (scancode < 0x3a)) { + if ((scancode > 0x1d) && (scancode < 0x39)) { /* Shift pressed */ if (modifier & (LEFT_SHIFT | RIGHT_SHIFT)) keycode = usb_kbd_numkey_shifted[scancode - 0x1e]; @@ -368,7 +368,7 @@ static int usb_kbd_testc(struct stdio_dev *sdev) return 0; kbd_testc_tms = get_timer(0); #endif - dev = stdio_get_by_name(DEVNAME); + dev = stdio_get_by_name(sdev->name); usb_kbd_dev = (struct usb_device *)dev->priv; data = usb_kbd_dev->privptr; @@ -384,12 +384,14 @@ static int usb_kbd_getc(struct stdio_dev *sdev) struct usb_device *usb_kbd_dev; struct usb_kbd_pdata *data; - dev = stdio_get_by_name(DEVNAME); + dev = stdio_get_by_name(sdev->name); usb_kbd_dev = (struct usb_device *)dev->priv; data = usb_kbd_dev->privptr; - while (data->usb_in_pointer == data->usb_out_pointer) + while (data->usb_in_pointer == data->usb_out_pointer) { + WATCHDOG_RESET(); usb_kbd_poll_for_event(usb_kbd_dev); + } if (data->usb_out_pointer == USB_KBD_BUFFER_LEN - 1) data->usb_out_pointer = 0; @@ -515,8 +517,8 @@ static int probe_usb_keyboard(struct usb_device *dev) if (error) return error; - stdinname = getenv("stdin"); -#ifdef CONFIG_CONSOLE_MUX + stdinname = env_get("stdin"); +#if CONFIG_IS_ENABLED(CONSOLE_MUX) error = iomux_doenv(stdin, stdinname); if (error) return error; @@ -537,7 +539,7 @@ static int probe_usb_keyboard(struct usb_device *dev) return 0; } -#ifndef CONFIG_DM_USB +#if !CONFIG_IS_ENABLED(DM_USB) /* Search for keyboard and register it if found. */ int drv_usb_kbd_init(void) { @@ -566,12 +568,11 @@ int drv_usb_kbd_init(void) /* No USB Keyboard found */ return -1; } -#endif /* Deregister the keyboard. */ int usb_kbd_deregister(int force) { -#ifdef CONFIG_SYS_STDIO_DEREGISTER +#if CONFIG_IS_ENABLED(SYS_STDIO_DEREGISTER) struct stdio_dev *dev; struct usb_device *usb_kbd_dev; struct usb_kbd_pdata *data; @@ -582,8 +583,8 @@ int usb_kbd_deregister(int force) data = usb_kbd_dev->privptr; if (stdio_deregister_dev(dev, force) != 0) return 1; -#ifdef CONFIG_CONSOLE_MUX - if (iomux_doenv(stdin, getenv("stdin")) != 0) +#if CONFIG_IS_ENABLED(CONSOLE_MUX) + if (iomux_doenv(stdin, env_get("stdin")) != 0) return 1; #endif #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE @@ -599,16 +600,15 @@ int usb_kbd_deregister(int force) #endif } -#ifdef CONFIG_DM_USB +#endif + +#if CONFIG_IS_ENABLED(DM_USB) static int usb_kbd_probe(struct udevice *dev) { struct usb_device *udev = dev_get_parent_priv(dev); - int ret; - ret = probe_usb_keyboard(udev); - - return ret; + return probe_usb_keyboard(udev); } static int usb_kbd_remove(struct udevice *dev) @@ -628,8 +628,8 @@ static int usb_kbd_remove(struct udevice *dev) ret = -EPERM; goto err; } -#ifdef CONFIG_CONSOLE_MUX - if (iomux_doenv(stdin, getenv("stdin"))) { +#if CONFIG_IS_ENABLED(CONSOLE_MUX) + if (iomux_doenv(stdin, env_get("stdin"))) { ret = -ENOLINK; goto err; }