aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorMilan Svoboda <msvoboda@ra.rockwell.com>2006-05-29 06:34:00 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-21 18:04:18 -0400
commit043ea18b2e145c4c9cb3c30757a65fe0f1678a35 (patch)
tree8d5faa202172a6b13bb4ebd4682ff822454b7963 /drivers/usb
parent44df45a09c7c20bbd641b1c30b6406d54ba7e2c8 (diff)
[PATCH] usb gadget: update pxa2xx_udc.c driver to fully support IXP4xx platform
This patch adds IXP465 into the list of known devices and adds IXP425 and IXP465 to the list of devices that have cfr. This is not described in the hardware documentation, but without it driver won't work. Workaround (#if 1) that seemed to get rid of lost status irqs is disabled for IXP4XX as it caused freezes during testing of control messages. No lost irqs are visible on IXP4XX. Driver survived tests running over night without any visible problems. Signed-off-by: Milan Svoboda <msvoboda@ra.rockwell.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/pxa2xx_udc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c
index af63d8236f43..269ce7f4ad66 100644
--- a/drivers/usb/gadget/pxa2xx_udc.c
+++ b/drivers/usb/gadget/pxa2xx_udc.c
@@ -60,7 +60,7 @@
60#include <linux/usb_ch9.h> 60#include <linux/usb_ch9.h>
61#include <linux/usb_gadget.h> 61#include <linux/usb_gadget.h>
62 62
63#include <asm/arch/udc.h> 63#include <asm/arch/hardware/intel_udc.h>
64 64
65 65
66/* 66/*
@@ -547,6 +547,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, struct pxa2xx_request *req)
547 count = req->req.length; 547 count = req->req.length;
548 done (ep, req, 0); 548 done (ep, req, 0);
549 ep0_idle(ep->dev); 549 ep0_idle(ep->dev);
550#ifndef CONFIG_ARCH_IXP4XX
550#if 1 551#if 1
551 /* 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:
552 * host responds quickly, or next request involves config 553 * host responds quickly, or next request involves config
@@ -567,6 +568,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, struct pxa2xx_request *req)
567 } while (count); 568 } while (count);
568 } 569 }
569#endif 570#endif
571#endif
570 } else if (ep->dev->req_pending) 572 } else if (ep->dev->req_pending)
571 ep0start(ep->dev, 0, "IN"); 573 ep0start(ep->dev, 0, "IN");
572 return is_short; 574 return is_short;
@@ -2429,6 +2431,7 @@ static struct pxa2xx_udc memory = {
2429#define PXA210_B1 0x00000123 2431#define PXA210_B1 0x00000123
2430#define PXA210_B0 0x00000122 2432#define PXA210_B0 0x00000122
2431#define IXP425_A0 0x000001c1 2433#define IXP425_A0 0x000001c1
2434#define IXP465_AD 0x00000200
2432 2435
2433/* 2436/*
2434 * probe - binds to the platform device 2437 * probe - binds to the platform device
@@ -2465,6 +2468,8 @@ static int __init pxa2xx_udc_probe(struct platform_device *pdev)
2465 break; 2468 break;
2466#elif defined(CONFIG_ARCH_IXP4XX) 2469#elif defined(CONFIG_ARCH_IXP4XX)
2467 case IXP425_A0: 2470 case IXP425_A0:
2471 case IXP465_AD:
2472 dev->has_cfr = 1;
2468 out_dma = 0; 2473 out_dma = 0;
2469 break; 2474 break;
2470#endif 2475#endif