summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2013-07-10 03:16:27 +0200
committerMarek Vasut <marex@denx.de>2013-07-29 23:01:31 +0200
commita7eafcfe45427235804ef60e9983a84fbce3ea07 (patch)
tree6733524d46da9ce111b3f49665c613cc75df6496
parent9fab4bf4cc077c21e43941866f3f2c196f28670d (diff)
downloadu-boot-imx-a7eafcfe45427235804ef60e9983a84fbce3ea07.zip
u-boot-imx-a7eafcfe45427235804ef60e9983a84fbce3ea07.tar.gz
u-boot-imx-a7eafcfe45427235804ef60e9983a84fbce3ea07.tar.bz2
usb: mv_udc: Unbreak the mv_udc driver
The mv_udc driver is broken for a while and doesn't even compile. This patch fixes the issues and gets the driver into working state again. This driver was tested on Freescale i.MX233/i.MX28 . Signed-off-by: Marek Vasut <marex@denx.de> Cc: Fabio Estevam <fabio.estevam@freescale.com> Cc: Lei Wen <leiwen@marvell.com> Cc: Otavio Salvador <otavio@ossystems.com.br> Cc: Stefano Babic <sbabic@denx.de>
-rw-r--r--drivers/serial/usbtty.h2
-rw-r--r--drivers/usb/gadget/gadget_chips.h2
-rw-r--r--drivers/usb/gadget/mv_udc.c7
3 files changed, 9 insertions, 2 deletions
diff --git a/drivers/serial/usbtty.h b/drivers/serial/usbtty.h
index bbabb32..e243a8e 100644
--- a/drivers/serial/usbtty.h
+++ b/drivers/serial/usbtty.h
@@ -22,6 +22,8 @@
#include <usb/pxa27x_udc.h>
#elif defined(CONFIG_DW_UDC)
#include <usb/designware_udc.h>
+#elif defined(CONFIG_MV_UDC)
+#include <usb/mv_udc.h>
#endif
#include <version.h>
diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
index f038747..aa54b85 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -144,7 +144,7 @@
#define gadget_is_m66592(g) 0
#endif
-#ifdef CONFIG_USB_GADGET_MV
+#ifdef CONFIG_MV_UDC
#define gadget_is_mv(g) (!strcmp("mv_udc", (g)->name))
#else
#define gadget_is_mv(g) 0
diff --git a/drivers/usb/gadget/mv_udc.c b/drivers/usb/gadget/mv_udc.c
index 7fa5288..93e5389 100644
--- a/drivers/usb/gadget/mv_udc.c
+++ b/drivers/usb/gadget/mv_udc.c
@@ -17,6 +17,10 @@
#include <linux/types.h>
#include <usb/mv_udc.h>
+#if CONFIG_USB_MAX_CONTROLLER_COUNT > 1
+#error This driver only supports one single controller.
+#endif
+
#ifndef DEBUG
#define DBG(x...) do {} while (0)
#else
@@ -453,6 +457,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
{
struct mv_udc *udc = controller.udc;
int retval;
+ void *ctrl;
if (!driver
|| driver->speed < USB_SPEED_FULL
@@ -463,7 +468,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
}
if (!mvudc_probe()) {
- usb_lowlevel_init();
+ usb_lowlevel_init(0, &ctrl);
/* select ULPI phy */
writel(PTS(PTS_ENABLE) | PFSC, &udc->portsc);
}