On 7/5/07, Hans Petter Selasky <[EMAIL PROTECTED]> wrote:
> > > The chip does not handle a clear-stall request on the control pipe to
> > > clear-stall on the interrupt pipe. The result is that the interrupt
> > > pipe stops, or at least all buffers are cleared.
> > >

The following is part of the usb firmware from Micrcohip.

Somehow it masks EP0 in the handler to SET & CLEAR FEATURES
requesrs. Is this the problem?

   if((SetupPkt.bFeature == ENDPOINT_HALT)&&
      (SetupPkt.Recipient == RCPT_EP)&&
      (SetupPkt.EPNum != 0))


/******************************************************************************
* Function:        void USBStdFeatureReqHandler(void)
*
* PreCondition:    None
*
* Input:           None
*
* Output:          None
*
* Side Effects:    None
*
* Overview:        This routine handles the standard SET & CLEAR FEATURES
*                  requests
*
* Note:            None
*****************************************************************************/
void USBStdFeatureReqHandler(void)
{
   if((SetupPkt.bFeature == DEVICE_REMOTE_WAKEUP)&&
      (SetupPkt.Recipient == RCPT_DEV))
   {
       ctrl_trf_session_owner = MUID_USB9;
       if(SetupPkt.bRequest == SET_FEATURE)
           usb_stat.RemoteWakeup = 1;
       else
           usb_stat.RemoteWakeup = 0;
   }//end if

   if((SetupPkt.bFeature == ENDPOINT_HALT)&&
      (SetupPkt.Recipient == RCPT_EP)&&
      (SetupPkt.EPNum != 0))
   {
       ctrl_trf_session_owner = MUID_USB9;
       /* Must do address calculation here */
       pDst.bRam = (byte*)&ep0Bo+(SetupPkt.EPNum*8)+(SetupPkt.EPDir*4);

       if(SetupPkt.bRequest == SET_FEATURE)
           *pDst.bRam = _USIE|_BSTALL;
       else
       {
           if(SetupPkt.EPDir == 1) // IN
               *pDst.bRam = _UCPU;
           else
               *pDst.bRam = _USIE|_DAT0|_DTSEN;
       }//end if
   }//end if
}//end USBStdFeatureReqHandler

Regards,
Xiaofan
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to