summaryrefslogtreecommitdiffstats
path: root/drivers/usb/imx/chipidea-imx.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-02-05 15:50:31 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-02-15 16:19:56 +0100
commit0a643b3d426e606dd42678b87a1fe205aea2b9e7 (patch)
tree6ae97b9c6cb335c41dcc6936b0311336e245179f /drivers/usb/imx/chipidea-imx.c
parent8139fa78b9ab7c53e194679ec9855bfcd92b1f80 (diff)
downloadbarebox-0a643b3d426e606dd42678b87a1fe205aea2b9e7.tar.gz
barebox-0a643b3d426e606dd42678b87a1fe205aea2b9e7.tar.xz
USB i.MX: Add chipidea gadget support
This adds USB gadget support to the i.MX chipidea driver. Basically we have to add a register function to the fsl udc driver and call this from the chipidea driver if device mode is selected. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/usb/imx/chipidea-imx.c')
-rw-r--r--drivers/usb/imx/chipidea-imx.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c
index de80c36166..ff6175f8c5 100644
--- a/drivers/usb/imx/chipidea-imx.c
+++ b/drivers/usb/imx/chipidea-imx.c
@@ -19,6 +19,7 @@
#include <usb/ehci.h>
#include <usb/chipidea-imx.h>
#include <usb/ulpi.h>
+#include <usb/fsl_usb2.h>
#define MXC_EHCI_PORTSC_MASK ((0xf << 28) | (1 << 25))
@@ -96,13 +97,13 @@ static int imx_chipidea_probe(struct device_d *dev)
data.hcor = base + 0x140;
data.flags = EHCI_HAS_TT;
- if (pdata->mode == IMX_USB_MODE_HOST) {
+ if (pdata->mode == IMX_USB_MODE_HOST && IS_ENABLED(CONFIG_USB_EHCI)) {
ret = ehci_register(dev, &data);
+ } else if (pdata->mode == IMX_USB_MODE_DEVICE && IS_ENABLED(CONFIG_USB_GADGET_DRIVER_ARC)) {
+ ret = ci_udc_register(dev, base);
} else {
- /*
- * Not yet implemented. Register USB gadget driver here.
- */
- ret = -ENOSYS;
+ dev_err(dev, "No supported role\n");
+ ret = -ENODEV;
}
return ret;