002-usb_gadget.patch 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. diff -NurbwB linux-2.6.17/drivers/usb/gadget/pxa2xx_udc.c linux-2.6.17-patched/drivers/usb/gadget/pxa2xx_udc.c
  2. --- linux-2.6.17/drivers/usb/gadget/pxa2xx_udc.c 2006-06-17 18:49:35.000000000 -0700
  3. +++ linux-2.6.17-patched/drivers/usb/gadget/pxa2xx_udc.c 2006-09-11 13:02:39.000000000 -0700
  4. @@ -87,8 +87,8 @@
  5. static const char ep0name [] = "ep0";
  6. -// #define USE_DMA
  7. -// #define USE_OUT_DMA
  8. +#define USE_DMA
  9. +#define USE_OUT_DMA
  10. // #define DISABLE_TEST_MODE
  11. #ifdef CONFIG_ARCH_IXP4XX
  12. @@ -1513,7 +1513,7 @@
  13. #endif
  14. /* try to clear these bits before we enable the udc */
  15. - udc_ack_int_UDCCR(UDCCR_SUSIR|/*UDCCR_RSTIR|*/UDCCR_RESIR);
  16. + udc_ack_int_UDCCR(UDCCR_SUSIR|UDCCR_RSTIR|UDCCR_RESIR);
  17. ep0_idle(dev);
  18. dev->gadget.speed = USB_SPEED_UNKNOWN;
  19. @@ -2043,6 +2043,9 @@
  20. struct pxa2xx_udc *dev = _dev;
  21. int handled;
  22. +
  23. + udc_set_mask_UDCCR( UDCCR_REM | UDCCR_SRM);
  24. +
  25. dev->stats.irqs++;
  26. HEX_DISPLAY(dev->stats.irqs);
  27. do {
  28. @@ -2137,6 +2139,8 @@
  29. /* we could also ask for 1 msec SOF (SIR) interrupts */
  30. } while (handled);
  31. +
  32. + udc_clear_mask_UDCCR( UDCCR_SRM | UDCCR_REM);
  33. return IRQ_HANDLED;
  34. }
  35. @@ -2437,6 +2441,7 @@
  36. int retval, out_dma = 1;
  37. u32 chiprev;
  38. + local_irq_disable();
  39. /* insist on Intel/ARM/XScale */
  40. asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev));
  41. if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
  42. @@ -2553,6 +2558,7 @@
  43. #endif
  44. }
  45. #endif
  46. + local_irq_enable();
  47. create_proc_files();
  48. return 0;