From d2411e4cbc9fc1387ea16271dff52e256711b844 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Fri, 18 Jun 2010 00:33:32 +0300 Subject: [PATCH] don't init USB unconditionally Since USB init takes time, and only few users will use this feature, start it only when selected from menu or newly introduced 'usbinit' command is issued. --- board/pandora/menu.c | 20 +++++++++++++++++++- common/stdio.c | 3 +++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/board/pandora/menu.c b/board/pandora/menu.c index 38cad6d112d..bd5a8d807e1 100644 --- a/board/pandora/menu.c +++ b/board/pandora/menu.c @@ -70,6 +70,7 @@ static int menu_do_poweroff(struct menu_item *item) static int menu_do_usb_serial(struct menu_item *item) { + do_cmd("usbinit"); printf("Switched to USB serial.\n"); setenv("stdout", "usbtty"); @@ -242,7 +243,7 @@ U_BOOT_CMD( "" ); -/* helper */ +/* helpers */ static int do_ssource(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong addr; @@ -261,3 +262,20 @@ U_BOOT_CMD( "run script from memory (no header)", "" ); + +static int do_usbinit(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + extern int drv_usbtty_init(void); + static int usbinit_done; + if (!usbinit_done) { + usbinit_done = 1; + return !drv_usbtty_init(); + } + return 0; +} + +U_BOOT_CMD( + usbinit, 1, 0, do_usbinit, + "initialize USB", + "" +); diff --git a/common/stdio.c b/common/stdio.c index 870ddfd5ef9..bf84a58478e 100644 --- a/common/stdio.c +++ b/common/stdio.c @@ -239,8 +239,11 @@ int stdio_init (void) serial_stdio_init (); #endif #ifdef CONFIG_USB_TTY +/* HACK, we only want it to start when selected from menu */ +#ifndef CONFIG_OMAP3_PANDORA drv_usbtty_init (); #endif +#endif #ifdef CONFIG_NETCONSOLE drv_nc_init (); #endif -- 2.47.2