summaryrefslogtreecommitdiff
path: root/include/usb.h
diff options
context:
space:
mode:
authorVivek Gautam <gautam.vivek@samsung.com>2013-09-14 14:02:45 +0530
committerMarek Vasut <marex@denx.de>2013-10-20 23:42:38 +0200
commit5853e1335cfc76c230cc28c4226b4d513ddb7542 (patch)
tree0cb97003e4c2a2f22052835818d39e91ea99d3ce /include/usb.h
parente3d7440c2212497b33f0b12f5112f1a99e3f201c (diff)
downloadu-boot-imx-5853e1335cfc76c230cc28c4226b4d513ddb7542.zip
u-boot-imx-5853e1335cfc76c230cc28c4226b4d513ddb7542.tar.gz
u-boot-imx-5853e1335cfc76c230cc28c4226b4d513ddb7542.tar.bz2
USB: xHCI: Add stack support for xHCI
This adds stack layer for eXtensible Host Controller Interface which facilitates use of USB 3.0 in host mode. Adapting xHCI host controller driver in linux-kernel by Sarah Sharp to needs in u-boot. Initial porting from Linux kernel version 3.4, with following top commit history of drivers/usb/host/xhci* : cf84055 xHCI: Cleanup isoc transfer ring when TD length mismatch found This adds the basic xHCI host controller driver with bare minimum features: - Control/Bulk transfer support has been added with required infrastructure for necessary xHC data structures. - Stream protocol hasn't been supported yet. - No support for quirky devices has been added. Signed-off-by: Vikas C Sajjan <vikas.sajjan@samsung.com> Signed-off-by: Julius Werner <jwerner@chromium.org> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com> Cc: Simon Glass <sjg@chromium.org> Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Dan Murphy <dmurphy@ti.com> Cc: Marek Vasut <marex@denx.de>
Diffstat (limited to 'include/usb.h')
-rw-r--r--include/usb.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/usb.h b/include/usb.h
index 60db897..a96ec23 100644
--- a/include/usb.h
+++ b/include/usb.h
@@ -125,6 +125,8 @@ struct usb_device {
struct usb_device *children[USB_MAXCHILDREN];
void *controller; /* hardware controller private data */
+ /* slot_id - for xHCI enabled devices */
+ unsigned int slot_id;
};
/**********************************************************************
@@ -138,7 +140,7 @@ struct usb_device {
defined(CONFIG_USB_OMAP3) || defined(CONFIG_USB_DA8XX) || \
defined(CONFIG_USB_BLACKFIN) || defined(CONFIG_USB_AM35X) || \
defined(CONFIG_USB_MUSB_DSPS) || defined(CONFIG_USB_MUSB_AM35X) || \
- defined(CONFIG_USB_MUSB_OMAP2PLUS)
+ defined(CONFIG_USB_MUSB_OMAP2PLUS) || defined(CONFIG_USB_XHCI)
int usb_lowlevel_init(int index, void **controller);
int usb_lowlevel_stop(int index);
@@ -338,6 +340,10 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate);
#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL)
#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK)
+#define usb_pipe_ep_index(pipe) \
+ usb_pipecontrol(pipe) ? (usb_pipeendpoint(pipe) * 2) : \
+ ((usb_pipeendpoint(pipe) * 2) - \
+ (usb_pipein(pipe) ? 0 : 1))
/*************************************************************************
* Hub Stuff
@@ -382,5 +388,6 @@ struct usb_device *usb_alloc_new_device(void *controller);
int usb_new_device(struct usb_device *dev);
void usb_free_device(void);
+int usb_alloc_device(struct usb_device *dev);
#endif /*_USB_H_ */