diff options
author | Simon Glass <sjg@chromium.org> | 2011-02-16 11:14:33 -0800 |
---|---|---|
committer | Remy Bohmer <linux@bohmer.net> | 2011-02-19 20:32:36 +0100 |
commit | 89d48367edbc878f86db3008a4107331ef07f578 (patch) | |
tree | 808742d920445274c97d867422762b3b67cc8391 /common | |
parent | 96820a35873b4c005f732432c6a168decc9d22b9 (diff) | |
download | u-boot-imx-89d48367edbc878f86db3008a4107331ef07f578.zip u-boot-imx-89d48367edbc878f86db3008a4107331ef07f578.tar.gz u-boot-imx-89d48367edbc878f86db3008a4107331ef07f578.tar.bz2 |
Add USB host ethernet adapter support
This adds support for using USB Ethernet dongles in host mode. This is just
the framework - drivers will come later. A new config option called
CONFIG_USB_HOST_ETHER can be defined in board config files to switch this
on.
The was originally written by NVIDIA and was cleaned up for release by the
Chromium authors.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_usb.c | 12 | ||||
-rw-r--r-- | common/usb.c | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/common/cmd_usb.c b/common/cmd_usb.c index b04a8df..b5731a7 100644 --- a/common/cmd_usb.c +++ b/common/cmd_usb.c @@ -34,6 +34,9 @@ #ifdef CONFIG_USB_STORAGE static int usb_stor_curr_dev = -1; /* current device */ #endif +#ifdef CONFIG_USB_HOST_ETHER +static int usb_ether_curr_dev = -1; /* current ethernet device */ +#endif /* some display routines (info command) */ char *usb_get_class_desc(unsigned char dclass) @@ -522,11 +525,16 @@ int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) usb_stop(); printf("(Re)start USB...\n"); i = usb_init(); + if (i >= 0) { #ifdef CONFIG_USB_STORAGE - /* try to recognize storage devices immediately */ - if (i >= 0) + /* try to recognize storage devices immediately */ usb_stor_curr_dev = usb_stor_scan(1); #endif +#ifdef CONFIG_USB_HOST_ETHER + /* try to recognize ethernet devices immediately */ + usb_ether_curr_dev = usb_host_eth_scan(1); +#endif + } return 0; } if (strncmp(argv[1], "stop", 4) == 0) { diff --git a/common/usb.c b/common/usb.c index 44a435a..4f7c520 100644 --- a/common/usb.c +++ b/common/usb.c @@ -145,10 +145,14 @@ int usb_stop(void) /* * disables the asynch behaviour of the control message. This is used for data * transfers that uses the exclusiv access to the control and bulk messages. + * Returns the old value so it can be restored later. */ -void usb_disable_asynch(int disable) +int usb_disable_asynch(int disable) { + int old_value = asynch_allowed; + asynch_allowed = !disable; + return old_value; } |