summaryrefslogtreecommitdiff
path: root/common/usb.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-03-25 12:22:08 -0600
committerSimon Glass <sjg@chromium.org>2015-04-18 11:11:21 -0600
commit95fbfe42980ea75c7955a6ddf4f28be1a6407920 (patch)
treed63aa11bc3f61609d20c8495ba65d23346e6f5f8 /common/usb.c
parent0ed27905ceb82d5dc9aafd249ccbb8ff6081c7ca (diff)
downloadu-boot-95fbfe42980ea75c7955a6ddf4f28be1a6407920.tar.gz
u-boot-95fbfe42980ea75c7955a6ddf4f28be1a6407920.tar.bz2
u-boot-95fbfe42980ea75c7955a6ddf4f28be1a6407920.zip
dm: usb: Convert core usb.c file to support driver model
Add the required #ifdefs and remove unwanted data structures so that the USB uclass will be able to use this file. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'common/usb.c')
-rw-r--r--common/usb.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/common/usb.c b/common/usb.c
index 5c792173db..a4820d3e94 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -28,6 +28,7 @@
*/
#include <common.h>
#include <command.h>
+#include <dm.h>
#include <asm/processor.h>
#include <linux/compiler.h>
#include <linux/ctype.h>
@@ -41,12 +42,13 @@
#define USB_BUFSIZ 512
-static struct usb_device usb_dev[USB_MAX_DEVICE];
-static int dev_index;
static int asynch_allowed;
-
char usb_started; /* flag for the started/stopped USB status */
+#ifndef CONFIG_DM_USB
+static struct usb_device usb_dev[USB_MAX_DEVICE];
+static int dev_index;
+
#ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
#endif
@@ -158,6 +160,7 @@ int usb_disable_asynch(int disable)
asynch_allowed = !disable;
return old_value;
}
+#endif /* !CONFIG_DM_USB */
/*-------------------------------------------------------------------
@@ -821,6 +824,7 @@ int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
* the USB device are static allocated [USB_MAX_DEVICE].
*/
+#ifndef CONFIG_DM_USB
/* returns a pointer to the device with the index [index].
* if the device is not assigned (dev->devnum==-1) returns NULL
@@ -877,7 +881,9 @@ __weak int usb_alloc_device(struct usb_device *udev)
{
return 0;
}
+#endif /* !CONFIG_DM_USB */
+#ifndef CONFIG_DM_USB
int usb_legacy_port_reset(struct usb_device *hub, int portnr)
{
if (hub) {
@@ -896,6 +902,7 @@ int usb_legacy_port_reset(struct usb_device *hub, int portnr)
return 0;
}
+#endif
static int get_descriptor_len(struct usb_device *dev, int len, int expect_len)
{
@@ -1031,7 +1038,7 @@ static int usb_prepare_device(struct usb_device *dev, int addr, bool do_read,
return 0;
}
-static int usb_select_config(struct usb_device *dev)
+int usb_select_config(struct usb_device *dev)
{
ALLOC_CACHE_ALIGN_BUFFER(unsigned char, tmpbuf, USB_BUFSIZ);
int err;
@@ -1089,8 +1096,8 @@ static int usb_select_config(struct usb_device *dev)
return 0;
}
-static int usb_setup_device(struct usb_device *dev, bool do_read,
- struct usb_device *parent, int portnr)
+int usb_setup_device(struct usb_device *dev, bool do_read,
+ struct usb_device *parent, int portnr)
{
int addr;
int ret;
@@ -1107,6 +1114,7 @@ static int usb_setup_device(struct usb_device *dev, bool do_read,
return ret;
}
+#ifndef CONFIG_DM_USB
/*
* By the time we get here, the device has gotten a new device ID
* and is in the default state. We need to identify the thing and
@@ -1139,6 +1147,7 @@ int usb_new_device(struct usb_device *dev)
return 0;
}
+#endif
__weak
int board_usb_init(int index, enum usb_init_type init)
@@ -1151,4 +1160,14 @@ int board_usb_cleanup(int index, enum usb_init_type init)
{
return 0;
}
+
+bool usb_device_has_child_on_port(struct usb_device *parent, int port)
+{
+#ifdef CONFIG_DM_USB
+ return false;
+#else
+ return parent->children[port] != NULL;
+#endif
+}
+
/* EOF */