Guest User

usb_lld.c otg_txfifo_handler

a guest
Jul 16th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1.     if(ep==1){
  2.       dtxfsts = OTG->ie[ep].DTXFSTS&0x1ff;   //IN endpoint TxFIFO space available
  3.       while( ((dtxfsts) > 0) &&
  4.             (usbp->epc[ep]->in_state->txsize > usbp->epc[ep]->in_state->txcnt) )
  5.       {
  6.  
  7.         n = usbp->epc[ep]->in_state->txsize - usbp->epc[ep]->in_state->txcnt;
  8.  
  9.         len = dtxfsts*4;
  10.  
  11.         if (len > usbp->epc[ep]->in_maxsize)
  12.             len = usbp->epc[ep]->in_maxsize;
  13.         if(len>=n)
  14.         {
  15.           /* Last packet */
  16.           len=n;
  17.           OTG->DIEPEMPMSK &= ~DIEPEMPMSK_INEPTXFEM(ep);
  18.         }
  19.         otg_fifo_write_from_buffer(ep,
  20.                                    usbp->epc[ep]->in_state->mode.linear.txbuf,
  21.                                    len);
  22.         usbp->epc[ep]->in_state->mode.linear.txbuf += len;
  23.         usbp->epc[ep]->in_state->txcnt += len;
  24.  
  25.         dtxfsts = OTG->ie[ep].DTXFSTS&0x1ff;
  26.       }
  27.     }
Advertisement
Add Comment
Please, Sign In to add comment