diff options
Diffstat (limited to 'drivers/usb/gadget/pxa2xx_udc.c')
-rw-r--r-- | drivers/usb/gadget/pxa2xx_udc.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c index 680f7fc5b171..269ce7f4ad66 100644 --- a/drivers/usb/gadget/pxa2xx_udc.c +++ b/drivers/usb/gadget/pxa2xx_udc.c | |||
@@ -53,12 +53,14 @@ | |||
53 | #include <asm/mach-types.h> | 53 | #include <asm/mach-types.h> |
54 | #include <asm/unaligned.h> | 54 | #include <asm/unaligned.h> |
55 | #include <asm/hardware.h> | 55 | #include <asm/hardware.h> |
56 | #ifdef CONFIG_ARCH_PXA | ||
56 | #include <asm/arch/pxa-regs.h> | 57 | #include <asm/arch/pxa-regs.h> |
58 | #endif | ||
57 | 59 | ||
58 | #include <linux/usb_ch9.h> | 60 | #include <linux/usb_ch9.h> |
59 | #include <linux/usb_gadget.h> | 61 | #include <linux/usb_gadget.h> |
60 | 62 | ||
61 | #include <asm/arch/udc.h> | 63 | #include <asm/arch/hardware/intel_udc.h> |
62 | 64 | ||
63 | 65 | ||
64 | /* | 66 | /* |
@@ -545,6 +547,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, struct pxa2xx_request *req) | |||
545 | count = req->req.length; | 547 | count = req->req.length; |
546 | done (ep, req, 0); | 548 | done (ep, req, 0); |
547 | ep0_idle(ep->dev); | 549 | ep0_idle(ep->dev); |
550 | #ifndef CONFIG_ARCH_IXP4XX | ||
548 | #if 1 | 551 | #if 1 |
549 | /* This seems to get rid of lost status irqs in some cases: | 552 | /* This seems to get rid of lost status irqs in some cases: |
550 | * host responds quickly, or next request involves config | 553 | * host responds quickly, or next request involves config |
@@ -565,6 +568,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, struct pxa2xx_request *req) | |||
565 | } while (count); | 568 | } while (count); |
566 | } | 569 | } |
567 | #endif | 570 | #endif |
571 | #endif | ||
568 | } else if (ep->dev->req_pending) | 572 | } else if (ep->dev->req_pending) |
569 | ep0start(ep->dev, 0, "IN"); | 573 | ep0start(ep->dev, 0, "IN"); |
570 | return is_short; | 574 | return is_short; |
@@ -1585,7 +1589,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) | |||
1585 | int retval; | 1589 | int retval; |
1586 | 1590 | ||
1587 | if (!driver | 1591 | if (!driver |
1588 | || driver->speed != USB_SPEED_FULL | 1592 | || driver->speed < USB_SPEED_FULL |
1589 | || !driver->bind | 1593 | || !driver->bind |
1590 | || !driver->unbind | 1594 | || !driver->unbind |
1591 | || !driver->disconnect | 1595 | || !driver->disconnect |
@@ -2427,6 +2431,7 @@ static struct pxa2xx_udc memory = { | |||
2427 | #define PXA210_B1 0x00000123 | 2431 | #define PXA210_B1 0x00000123 |
2428 | #define PXA210_B0 0x00000122 | 2432 | #define PXA210_B0 0x00000122 |
2429 | #define IXP425_A0 0x000001c1 | 2433 | #define IXP425_A0 0x000001c1 |
2434 | #define IXP465_AD 0x00000200 | ||
2430 | 2435 | ||
2431 | /* | 2436 | /* |
2432 | * probe - binds to the platform device | 2437 | * probe - binds to the platform device |
@@ -2463,6 +2468,8 @@ static int __init pxa2xx_udc_probe(struct platform_device *pdev) | |||
2463 | break; | 2468 | break; |
2464 | #elif defined(CONFIG_ARCH_IXP4XX) | 2469 | #elif defined(CONFIG_ARCH_IXP4XX) |
2465 | case IXP425_A0: | 2470 | case IXP425_A0: |
2471 | case IXP465_AD: | ||
2472 | dev->has_cfr = 1; | ||
2466 | out_dma = 0; | 2473 | out_dma = 0; |
2467 | break; | 2474 | break; |
2468 | #endif | 2475 | #endif |
@@ -2575,10 +2582,12 @@ static int __exit pxa2xx_udc_remove(struct platform_device *pdev) | |||
2575 | free_irq(IRQ_USB, dev); | 2582 | free_irq(IRQ_USB, dev); |
2576 | dev->got_irq = 0; | 2583 | dev->got_irq = 0; |
2577 | } | 2584 | } |
2585 | #ifdef CONFIG_ARCH_LUBBOCK | ||
2578 | if (machine_is_lubbock()) { | 2586 | if (machine_is_lubbock()) { |
2579 | free_irq(LUBBOCK_USB_DISC_IRQ, dev); | 2587 | free_irq(LUBBOCK_USB_DISC_IRQ, dev); |
2580 | free_irq(LUBBOCK_USB_IRQ, dev); | 2588 | free_irq(LUBBOCK_USB_IRQ, dev); |
2581 | } | 2589 | } |
2590 | #endif | ||
2582 | platform_set_drvdata(pdev, NULL); | 2591 | platform_set_drvdata(pdev, NULL); |
2583 | the_controller = NULL; | 2592 | the_controller = NULL; |
2584 | return 0; | 2593 | return 0; |