2009-02-08 19:36:13 +00:00
|
|
|
--- a/drivers/usb/gadget/pxa2xx_udc.c
|
|
|
|
+++ b/drivers/usb/gadget/pxa2xx_udc.c
|
2008-04-27 16:56:19 +00:00
|
|
|
@@ -51,6 +51,7 @@
|
|
|
|
#include <asm/mach-types.h>
|
|
|
|
#include <asm/unaligned.h>
|
|
|
|
#include <asm/hardware.h>
|
|
|
|
+#include <asm/mach/irq.h>
|
|
|
|
#ifdef CONFIG_ARCH_PXA
|
|
|
|
#include <asm/arch/pxa-regs.h>
|
|
|
|
#endif
|
|
|
|
@@ -101,6 +102,10 @@ static const char ep0name [] = "ep0";
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef CONFIG_ARCH_GUMSTIX
|
|
|
|
+#undef CONFIG_USB_PXA2XX_SMALL
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
#include "pxa2xx_udc.h"
|
|
|
|
|
|
|
|
|
|
|
|
@@ -2541,6 +2546,41 @@ static int __init pxa2xx_udc_probe(struc
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+ /* Reset UDCCS register to be able to recover from whatever
|
|
|
|
+ * state UDC was previously in. */
|
|
|
|
+ *dev->ep[ 2].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
|
|
|
|
+#ifndef CONFIG_USB_PXA2XX_SMALL
|
|
|
|
+ *dev->ep[ 7].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
|
|
|
|
+ *dev->ep[12].reg_udccs = UDCCS_BO_RPC | UDCCS_BO_SST;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ *dev->ep[ 1].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
|
|
|
|
+ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
|
|
|
|
+#ifndef CONFIG_USB_PXA2XX_SMALL
|
|
|
|
+ *dev->ep[ 6].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
|
|
|
|
+ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
|
|
|
|
+ *dev->ep[11].reg_udccs = UDCCS_BI_TPC | UDCCS_BI_FTF |
|
|
|
|
+ UDCCS_BI_TUR | UDCCS_BI_SST | UDCCS_BI_TSP;
|
|
|
|
+
|
|
|
|
+ *dev->ep[ 3].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
|
|
|
|
+ UDCCS_II_TUR | UDCCS_II_TSP;
|
|
|
|
+ *dev->ep[ 8].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
|
|
|
|
+ UDCCS_II_TUR | UDCCS_II_TSP;
|
|
|
|
+ *dev->ep[13].reg_udccs = UDCCS_II_TPC | UDCCS_II_FTF |
|
|
|
|
+ UDCCS_II_TUR | UDCCS_II_TSP;
|
|
|
|
+
|
|
|
|
+ *dev->ep[ 4].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
|
|
|
|
+ *dev->ep[ 9].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
|
|
|
|
+ *dev->ep[11].reg_udccs = UDCCS_IO_RPC | UDCCS_IO_ROF;
|
|
|
|
+
|
|
|
|
+ *dev->ep[ 5].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
|
|
|
|
+ UDCCS_INT_TUR | UDCCS_INT_SST;
|
|
|
|
+ *dev->ep[10].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
|
|
|
|
+ UDCCS_INT_TUR | UDCCS_INT_SST;
|
|
|
|
+ *dev->ep[15].reg_udccs = UDCCS_INT_TPC | UDCCS_INT_FTF |
|
|
|
|
+ UDCCS_INT_TUR | UDCCS_INT_SST;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
/* other non-static parts of init */
|
|
|
|
dev->dev = &pdev->dev;
|
|
|
|
dev->mach = pdev->dev.platform_data;
|