Messages in this thread Patch in this message | | | Date | Thu, 25 May 2006 09:22:25 +0200 | From | Milan Svoboda <> | Subject | [PATCH 3/5] usb gadget: update pxa2xx_udc.c driver to fully support IXP4xx platform |
| |
From: Milan Svoboda <msvoboda@ra.rockwell.com>
This patch adds IXP465 into the list of known devices and adds IXP465 to the list of devices that have cfr. This is not described in the hardware documentation, but without it driver don'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.
This patch is against 2.6.16.13 with previous patches applied.
Signed-off-by: Milan Svoboda <msvoboda@ra.rockwell.com> ---
--- orig/drivers/usb/gadget/pxa2xx_udc.c 2006-05-15 16:08:27.000000000 +0000 +++ new_gadget/drivers/usb/gadget/pxa2xx_udc.c 2006-05-15 15:59:13.000000000 +0000 @@ -548,6 +548,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, st count = req->req.length; done (ep, req, 0); ep0_idle(ep->dev); +#ifndef CONFIG_ARCH_IXP4XX #if 1 /* This seems to get rid of lost status irqs in some cases: * host responds quickly, or next request involves config @@ -568,6 +569,7 @@ write_ep0_fifo (struct pxa2xx_ep *ep, st } while (count); } #endif +#endif } else if (ep->dev->req_pending) ep0start(ep->dev, 0, "IN"); return is_short; @@ -2430,6 +2432,7 @@ static struct pxa2xx_udc memory = { #define PXA210_B1 0x00000123 #define PXA210_B0 0x00000122 #define IXP425_A0 0x000001c1 +#define IXP465_AD 0x00000200 /* * probe - binds to the platform device @@ -2465,6 +2468,9 @@ static int pxa2xx_udc_probe(struct platf case PXA250_C0: case PXA210_C0: break; #elif defined(CONFIG_ARCH_IXP4XX) + case IXP465_AD: + dev->has_cfr = 1; + /* fall through */ case IXP425_A0: out_dma = 0; break;
| |