mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 22:51:37 +00:00
usb: kbd: Allow "usb reset" to continue when an usb kbd is used
Use the new force parameter to make the stdio_deregister succeed, replacing stdin with a nulldev, and assume that the usb keyboard will come back after the reset. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
32d019265d
commit
8a8a2257ec
3 changed files with 7 additions and 7 deletions
|
@ -430,10 +430,10 @@ static int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_USB_STORAGE */
|
#endif /* CONFIG_USB_STORAGE */
|
||||||
|
|
||||||
static int do_usb_stop_keyboard(void)
|
static int do_usb_stop_keyboard(int force)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USB_KEYBOARD
|
#ifdef CONFIG_USB_KEYBOARD
|
||||||
if (usb_kbd_deregister() != 0) {
|
if (usb_kbd_deregister(force) != 0) {
|
||||||
printf("USB not stopped: usbkbd still using USB\n");
|
printf("USB not stopped: usbkbd still using USB\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -460,7 +460,7 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
if ((strncmp(argv[1], "reset", 5) == 0) ||
|
if ((strncmp(argv[1], "reset", 5) == 0) ||
|
||||||
(strncmp(argv[1], "start", 5) == 0)) {
|
(strncmp(argv[1], "start", 5) == 0)) {
|
||||||
bootstage_mark_name(BOOTSTAGE_ID_USB_START, "usb_start");
|
bootstage_mark_name(BOOTSTAGE_ID_USB_START, "usb_start");
|
||||||
if (do_usb_stop_keyboard() != 0)
|
if (do_usb_stop_keyboard(1) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
usb_stop();
|
usb_stop();
|
||||||
printf("(Re)start USB...\n");
|
printf("(Re)start USB...\n");
|
||||||
|
@ -482,7 +482,7 @@ static int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
if (strncmp(argv[1], "stop", 4) == 0) {
|
if (strncmp(argv[1], "stop", 4) == 0) {
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
console_assign(stdin, "serial");
|
console_assign(stdin, "serial");
|
||||||
if (do_usb_stop_keyboard() != 0)
|
if (do_usb_stop_keyboard(0) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
printf("stopping USB..\n");
|
printf("stopping USB..\n");
|
||||||
usb_stop();
|
usb_stop();
|
||||||
|
|
|
@ -547,10 +547,10 @@ int drv_usb_kbd_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Deregister the keyboard. */
|
/* Deregister the keyboard. */
|
||||||
int usb_kbd_deregister(void)
|
int usb_kbd_deregister(int force)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SYS_STDIO_DEREGISTER
|
#ifdef CONFIG_SYS_STDIO_DEREGISTER
|
||||||
int ret = stdio_deregister(DEVNAME, 0);
|
int ret = stdio_deregister(DEVNAME, force);
|
||||||
if (ret && ret != -ENODEV)
|
if (ret && ret != -ENODEV)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
|
@ -216,7 +216,7 @@ int usb_host_eth_scan(int mode);
|
||||||
#ifdef CONFIG_USB_KEYBOARD
|
#ifdef CONFIG_USB_KEYBOARD
|
||||||
|
|
||||||
int drv_usb_kbd_init(void);
|
int drv_usb_kbd_init(void);
|
||||||
int usb_kbd_deregister(void);
|
int usb_kbd_deregister(int force);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* routines */
|
/* routines */
|
||||||
|
|
Loading…
Add table
Reference in a new issue