--- 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;