Minor corrections for the XMEGA USB controller. Add compile time warning if the USB...
[pub/lufa.git] / LUFA / Drivers / USB / Core / XMEGA / Endpoint_XMEGA.h
index 49bc1f2..f587fec 100644 (file)
                                                                      const uint8_t Banks)
                        {
                                uint8_t EPConfigMask = (USB_EP_INTDSBL_bm | Banks | Endpoint_BytesToEPSizeMask(Size));
+                               
+                               // TODO - Fix once limitations are lifted
+                               if ((Banks != ENDPOINT_BANK_SINGLE) || (Size > 64))
+                                 return false;
 
                                switch (Type)
                                {
                                if (USB_Endpoint_SelectedHandle->STATUS & USB_EP_SETUP_bm)
                                {
                                        USB_Endpoint_SelectedFIFO->Length = USB_Endpoint_SelectedHandle->CNT;
-                                       return true;                            
+                                       return true;
                                }
                        
                                return false;
                        static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_ClearSETUP(void)
                        {
+                               Endpoint_SelectEndpoint(USB_Endpoint_SelectedEndpoint & ~ENDPOINT_DIR_IN);
                                USB_Endpoint_SelectedHandle->STATUS &= ~(USB_EP_SETUP_bm | USB_EP_TRNCOMPL0_bm | USB_EP_BUSNACK0_bm | USB_EP_OVF_bm);
-
                                USB_Endpoint_SelectedHandle->STATUS |= USB_EP_TOGGLE_bm;
                                USB_Endpoint_SelectedFIFO->Position  = 0;
 
                                if ((USB_Endpoint_SelectedHandle->CTRL & USB_EP_TYPE_gm) == USB_EP_TYPE_CONTROL_gc)
                                {
                                        Endpoint_SelectEndpoint(USB_Endpoint_SelectedEndpoint |  ENDPOINT_DIR_IN);
-                                       USB_Endpoint_SelectedHandle->STATUS |= USB_EP_STALL_bm;
+                                       USB_Endpoint_SelectedHandle->CTRL |= USB_EP_STALL_bm;
                                        Endpoint_SelectEndpoint(USB_Endpoint_SelectedEndpoint & ~ENDPOINT_DIR_IN);
                                }
                        }
                        static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline bool Endpoint_IsStalled(void)
                        {
-                               return ((USB_Endpoint_SelectedHandle->STATUS & USB_EP_STALLF_bm) ? true : false);
+                               return ((USB_Endpoint_SelectedHandle->CTRL & USB_EP_STALL_bm) ? true : false);
                        }
 
                        /** Resets the data toggle of the currently selected endpoint. */