9
0
Fork 0

commands: seperate usb command from usb core

This patch makes the USB command optional and makes usb_rescan a
global function. This way we can use USB in noninteractive
environments.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2011-04-07 12:43:27 +02:00
parent a03277592f
commit 7c15f466df
5 changed files with 53 additions and 20 deletions

View File

@ -393,4 +393,12 @@ config CMD_LED_TRIGGER
The trigger command allows to control LED triggers from the command
line.
config CMD_USB
bool
depends on USB
prompt "usb command"
default y
help
The usb command allows to rescan for USB devices.
endmenu

View File

@ -55,3 +55,4 @@ obj-$(CONFIG_CMD_PASSWD) += passwd.o
obj-$(CONFIG_CMD_LOGIN) += login.o
obj-$(CONFIG_CMD_LED) += led.o
obj-$(CONFIG_CMD_LED_TRIGGER) += trigger.o
obj-$(CONFIG_CMD_USB) += usb.o

41
commands/usb.c Normal file
View File

@ -0,0 +1,41 @@
/*
* usb.c - rescan for USB devices
*
* Copyright (c) 2011 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <common.h>
#include <command.h>
#include <usb/usb.h>
static int do_usb(struct command *cmdtp, int argc, char *argv[])
{
usb_rescan();
return 0;
}
static const __maybe_unused char cmd_usb_help[] =
"Usage: usb\n"
"(re-)detect USB devices\n";
BAREBOX_CMD_START(usb)
.cmd = do_usb,
.usage = "(re-)detect USB devices",
BAREBOX_CMD_HELP(cmd_usb_help)
BAREBOX_CMD_END

View File

@ -449,7 +449,7 @@ static struct usb_device *usb_alloc_new_device(void)
return usbdev;
}
static int __usb_init(void)
void usb_rescan(void)
{
struct usb_device *dev, *tmp;
struct usb_host *host;
@ -477,27 +477,8 @@ static int __usb_init(void)
}
printf("%d USB Device(s) found\n", dev_index);
return 0;
}
static int do_usb(struct command *cmdtp, int argc, char *argv[])
{
__usb_init();
return 0;
}
static const __maybe_unused char cmd_usb_help[] =
"Usage: usb\n"
"(re-)detect USB devices\n";
BAREBOX_CMD_START(usb)
.cmd = do_usb,
.usage = "(re-)detect USB devices",
BAREBOX_CMD_HELP(cmd_usb_help)
BAREBOX_CMD_END
/*
* 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.

View File

@ -252,6 +252,8 @@ int usb_clear_halt(struct usb_device *dev, int pipe);
int usb_string(struct usb_device *dev, int index, char *buf, size_t size);
int usb_set_interface(struct usb_device *dev, int interface, int alternate);
void usb_rescan(void);
/* big endian -> little endian conversion */
/* some CPUs are already little endian e.g. the ARM920T */
#define __swap_16(x) \