rayddteam

dotg without SOF

Aug 9th, 2012
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. diff -r 6b68d37bb4dc head/sys/dev/usb/controller/dotg.c
  2. --- a/head/sys/dev/usb/controller/dotg.c Mon Jul 30 11:44:18 2012 +0300
  3. +++ b/head/sys/dev/usb/controller/dotg.c Thu Aug 09 14:40:02 2012 +0300
  4. @@ -490,7 +490,7 @@
  5. else if (hcint & HCINT_FRMOVRUN) {
  6.  
  7. td->qh->split_sc_frame = -1;
  8. - WRITE4(sc, DOTG_HCINT(channel), hcchar | HCCHAR_CHDIS);
  9. + WRITE4(sc, DOTG_HCCHAR(channel), hcchar | HCCHAR_CHDIS);
  10.  
  11. dotg_complete_cb(DOTG_COMPLETE_FRAMEERR, 0, td);
  12. }
  13. @@ -657,11 +657,11 @@
  14. return (EIO);
  15. }
  16.  
  17. - SETFIELD32(sc, DOTG_GINTMSK, GINTMSK_SOFMSK, 1);
  18. + //SETFIELD32(sc, DOTG_GINTMSK, GINTMSK_SOFMSK, 1);
  19.  
  20. hcint = READ4(sc, DOTG_HCINT(td->channel));
  21. WRITE4(sc, DOTG_HCINT(td->channel), hcint);
  22. - WRITE4(sc, DOTG_HCINTMSK(td->channel), 0x7ff);
  23. +// WRITE4(sc, DOTG_HCINTMSK(td->channel), HCINTMSK_ANY);
  24.  
  25. td->qh->this_xfersize = xfersize;
  26.  
  27. @@ -695,10 +695,11 @@
  28.  
  29. WRITEDMA(sc, td->channel,
  30. (unsigned int *)(td->qh->fixup_phys + td->qh->fixup_off));
  31. - WRITE4(sc, DOTG_HAINTMSK,
  32. + WRITE4(sc, DOTG_HAINTMSK,
  33. (READ4(sc, DOTG_HAINTMSK) | (1<<td->channel)));
  34. - WRITE4(sc, DOTG_HCINTMSK(td->channel),
  35. + WRITE4(sc, DOTG_HCINTMSK(td->channel),
  36. HCINTMSK_CHHLTDMSK|HCINTMSK_AHBERRMSK);
  37. + WRITE4(sc, DOTG_HCINTMSK(td->channel), HCINTMSK_ANY);
  38. WRITE4(sc, DOTG_HCSPLT(td->channel), hcsplt);
  39. WRITE4(sc, DOTG_HCTSIZ(td->channel), hctsiz);
  40.  
  41. @@ -756,13 +757,13 @@
  42. /* get softc */
  43. sc = td->qh->sc;
  44.  
  45. -#ifdef USB_DEBUG
  46. - if (dotgdebug) {
  47. - DPRINTF("\n");
  48. - hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys),
  49. - 8, 0, 0);
  50. - }
  51. -#endif
  52. +//#ifdef USB_DEBUG
  53. +// if (dotgdebug) {
  54. +// DPRINTF("\n");
  55. +// hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys),
  56. +// 8, 0, 0);
  57. +// }
  58. +//#endif
  59.  
  60. int ret = configure_channel(td, 8, HCTSIZ_PID_SETUP, HCCHAR_EPDIR_OUT);
  61. if (ret != 0)
  62. @@ -1034,9 +1035,9 @@
  63.  
  64. /*---------------------------------------------------------------*/
  65. DPRINTF("+++++++++++++++++ rem=%d\n", rem);
  66. -#ifdef USB_DEBUG
  67. - if (dotgdebug == 0x0fffffff) hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys), rem, 0, 0);
  68. -#endif
  69. +//#ifdef USB_DEBUG
  70. +// if (dotgdebug == 0x0fffffff) hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys), rem, 0, 0);
  71. +//#endif
  72. DPRINTF("\n");
  73.  
  74. int ret = configure_channel(td, rem, td->qh->ep_toggle_next?HCTSIZ_PID_DATA1:HCTSIZ_PID_DATA0, HCCHAR_EPDIR_OUT);
  75. @@ -1100,9 +1101,9 @@
  76. usb_pc_cpu_invalidate(td->qh->fixup_pc);
  77.  
  78. DPRINTF("\n");
  79. -#ifdef USB_DEBUG
  80. - if (dotgdebug == 0x0fffffff) hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys), td->qh->fixup_actlen, 0, 0);
  81. -#endif
  82. +//#ifdef USB_DEBUG
  83. +// if (dotgdebug == 0x0fffffff) hexdump((uint8_t *)MIPS_PHYS_TO_KSEG1(td->qh->fixup_phys), td->qh->fixup_actlen, 0, 0);
  84. +//#endif
  85. DPRINTF("\n");
  86.  
  87. /* verify transfer length */
  88. @@ -1366,10 +1367,11 @@
  89. uhub_root_intr(&sc->sc_bus, sc->sc_hub_idata, sizeof(sc->sc_hub_idata));
  90.  
  91. }
  92. +
  93. {
  94. uint32_t haint = READ4(sc, DOTG_HAINT);
  95. WRITE4(sc, DOTG_HAINT, haint);
  96. - haint &= ((1<<sc->channels) - 1);
  97. + haint &= ((1 << sc->channels) - 1);
  98. while (haint) {
  99. int channel;
  100. for (channel = 0; channel < sc->channels; channel ++)
  101. @@ -1381,7 +1383,7 @@
  102. }
  103.  
  104.  
  105. - WRITE4(sc, DOTG_GINTSTS, gintsts);
  106. +// WRITE4(sc, DOTG_GINTSTS, gintsts);
  107.  
  108. repeat:
  109. TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry) {
  110. @@ -1517,8 +1519,8 @@
  111. CP;
  112. /* Enable interrupts */
  113. tmp = READ4(sc, DOTG_GINTMSK);
  114. -// tmp &= ~(GINTMSK_SOFMSK); ////
  115. - tmp |= (GINTMSK_SOFMSK);
  116. +// tmp |= (GINTMSK_SOFMSK);
  117. + tmp &= ~(GINTMSK_SOFMSK);
  118. tmp |= (GINTMSK_OTGINTMSK | GINTMSK_MODEMISMSK | GINTMSK_HCHINTMSK);
  119. WRITE4(sc, DOTG_GINTMSK, tmp);
  120.  
  121. @@ -2427,7 +2429,7 @@
  122.  
  123. if (usbd_transfer_setup_sub_malloc(
  124. parm, &pc, sizeof(struct dotg_qh),
  125. - USB_HOST_ALIGN, 1)) {
  126. + USB_HOST_ALIGN*4, 1)) { //XXX
  127. parm->err = USB_ERR_NOMEM;
  128. return;
  129. }
  130. @@ -2551,6 +2553,7 @@
  131. static void
  132. dotg_xfer_unsetup(struct usb_xfer *xfer)
  133. {
  134. + return;
  135. }
  136.  
  137. static void
  138. diff -r 6b68d37bb4dc head/sys/dev/usb/controller/dotgreg.h
  139. --- a/head/sys/dev/usb/controller/dotgreg.h Mon Jul 30 11:44:18 2012 +0300
  140. +++ b/head/sys/dev/usb/controller/dotgreg.h Thu Aug 09 14:40:02 2012 +0300
  141. @@ -479,6 +479,17 @@
  142. #define HCINTMSK_AHBERRMSK (1<<2)
  143. #define HCINTMSK_CHHLTDMSK (1<<1)
  144. #define HCINTMSK_XFERCOMPLMSK (1<<0)
  145. +#define HCINTMSK_ANY (HCINTMSK_DATATGLERRMSK | \
  146. + HCINTMSK_FRMOVRUNMSK | \
  147. + HCINTMSK_BBLERRMSK | \
  148. + HCINTMSK_XACTERRMSK | \
  149. + HCINTMSK_NYETMSK | \
  150. + HCINTMSK_ACKMSK | \
  151. + HCINTMSK_NAKMSK | \
  152. + HCINTMSK_STALLMSK | \
  153. + HCINTMSK_AHBERRMSK | \
  154. + HCINTMSK_CHHLTDMSK | \
  155. + HCINTMSK_XFERCOMPLMSK)
  156.  
  157. #define HCTSIZ_DOPNG (1<<31)
  158. #define HCTSIZ_PID_SHIFT 29
Advertisement
Add Comment
Please, Sign In to add comment