X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/a7aaa45ec4c3f415bf6073a5cc016635d5ecf77d..19ecd04f37f68c0674f1194aa8d8a4fc94d6168b:/LUFA/Drivers/USB/LowLevel/Pipe.h diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.h b/LUFA/Drivers/USB/LowLevel/Pipe.h index ab11a5524..127cea3ab 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.h +++ b/LUFA/Drivers/USB/LowLevel/Pipe.h @@ -28,6 +28,16 @@ this software. */ +/** \file + * \brief USB host pipe management definitions. + * + * This file contains structures, function prototypes and macros related to the management of the device's + * data pipes when the library is initialized in USB host mode. + * + * \note This file should not be included directly. It is automatically included as needed by the USB driver + * dispatch header located in LUFA/Drivers/USB/USB.h. + */ + /** \ingroup Group_USB * @defgroup Group_PipeManagement Pipe Management * @@ -74,19 +84,12 @@ #define __PIPE_H__ /* Includes: */ - #if defined(__AVR32__) - #include - #include - #include - #elif defined(__AVR__) - #include - #include - #include - #include - #endif + #include + #include + #include + #include #include "../../../Common/Common.h" - #include "LowLevel.h" #include "../HighLevel/USBTask.h" #if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__) @@ -103,10 +106,6 @@ #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. #endif - #if defined(__AVR32__) && !defined(__AVR32_EPREG_X) - #define __AVR32_EPREG_X(x) ((volatile uint32_t*)AVR32_USBB_ ## x)[USB_SelectedEPNumber] - #endif - /* Public Interface - May be used in end-application: */ /* Macros: */ /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */ @@ -558,11 +557,7 @@ static inline uint8_t Pipe_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Pipe_Read_Byte(void) { - #if defined(__AVR32__) - return __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) return UPDATX; - #endif } /** Writes one byte from the currently selected pipe's bank, for IN direction pipes. @@ -574,11 +569,7 @@ static inline void Pipe_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE; static inline void Pipe_Write_Byte(const uint8_t Byte) { - #if defined(__AVR32__) - __AVR32_EPREG_X(UEDAT0) = Byte; - #elif defined(__AVR__) UPDATX = Byte; - #endif } /** Discards one byte from the currently selected pipe's bank, for OUT direction pipes. @@ -590,11 +581,7 @@ { uint8_t Dummy; - #if defined(__AVR32__) - Dummy = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Dummy = UPDATX; - #endif } /** Reads two bytes from the currently selected pipe's bank in little endian format, for OUT @@ -613,13 +600,8 @@ uint8_t Bytes[2]; } Data; - #if defined(__AVR32__) - Data.Bytes[0] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[1] = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Data.Bytes[0] = UPDATX; Data.Bytes[1] = UPDATX; - #endif return Data.Word; } @@ -640,13 +622,8 @@ uint8_t Bytes[2]; } Data; - #if defined(__AVR32__) - Data.Bytes[1] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[0] = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Data.Bytes[1] = UPDATX; Data.Bytes[0] = UPDATX; - #endif return Data.Word; } @@ -661,13 +638,8 @@ static inline void Pipe_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE; static inline void Pipe_Write_Word_LE(const uint16_t Word) { - #if defined(__AVR32__) - __AVR32_EPREG_X(UEDAT0) = (Word & 0xFF); - __AVR32_EPREG_X(UEDAT0) = (Word >> 8); - #elif defined(__AVR__) UPDATX = (Word & 0xFF); UPDATX = (Word >> 8); - #endif } /** Writes two bytes to the currently selected pipe's bank in big endian format, for IN @@ -680,13 +652,8 @@ static inline void Pipe_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE; static inline void Pipe_Write_Word_BE(const uint16_t Word) { - #if defined(__AVR32__) - __AVR32_EPREG_X(UEDAT0) = (Word >> 8); - __AVR32_EPREG_X(UEDAT0) = (Word & 0xFF); - #elif defined(__AVR__) UPDATX = (Word >> 8); UPDATX = (Word & 0xFF); - #endif } /** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes. @@ -698,13 +665,8 @@ { uint8_t Dummy; - #if defined(__AVR32__) - Dummy = __AVR32_EPREG_X(UEDAT0); - Dummy = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Dummy = UPDATX; Dummy = UPDATX; - #endif } /** Reads four bytes from the currently selected pipe's bank in little endian format, for OUT @@ -723,17 +685,10 @@ uint8_t Bytes[4]; } Data; - #if defined(__AVR32__) - Data.Bytes[0] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[1] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[2] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[3] = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Data.Bytes[0] = UPDATX; Data.Bytes[1] = UPDATX; Data.Bytes[2] = UPDATX; Data.Bytes[3] = UPDATX; - #endif return Data.DWord; } @@ -754,17 +709,10 @@ uint8_t Bytes[4]; } Data; - #if defined(__AVR32__) - Data.Bytes[3] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[2] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[1] = __AVR32_EPREG_X(UEDAT0); - Data.Bytes[0] = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Data.Bytes[3] = UPDATX; Data.Bytes[2] = UPDATX; Data.Bytes[1] = UPDATX; Data.Bytes[0] = UPDATX; - #endif return Data.DWord; } @@ -779,17 +727,10 @@ static inline void Pipe_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE; static inline void Pipe_Write_DWord_LE(const uint32_t DWord) { - #if defined(__AVR32__) - __AVR32_EPREG_X(UEDAT0) = (DWord & 0xFF); - __AVR32_EPREG_X(UEDAT0) = (DWord >> 8); - __AVR32_EPREG_X(UEDAT0) = (DWord >> 16); - __AVR32_EPREG_X(UEDAT0) = (DWord >> 24); - #elif defined(__AVR__) UPDATX = (DWord & 0xFF); UPDATX = (DWord >> 8); UPDATX = (DWord >> 16); UPDATX = (DWord >> 24); - #endif } /** Writes four bytes to the currently selected pipe's bank in big endian format, for IN @@ -802,17 +743,10 @@ static inline void Pipe_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE; static inline void Pipe_Write_DWord_BE(const uint32_t DWord) { - #if defined(__AVR32__) - __AVR32_EPREG_X(UEDAT0) = (DWord >> 24); - __AVR32_EPREG_X(UEDAT0) = (DWord >> 16); - __AVR32_EPREG_X(UEDAT0) = (DWord >> 8); - __AVR32_EPREG_X(UEDAT0) = (DWord & 0xFF); - #elif defined(__AVR__) UPDATX = (DWord >> 24); UPDATX = (DWord >> 16); UPDATX = (DWord >> 8); UPDATX = (DWord & 0xFF); - #endif } /** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes. @@ -824,17 +758,10 @@ { uint8_t Dummy; - #if defined(__AVR32__) - Dummy = __AVR32_EPREG_X(UEDAT0); - Dummy = __AVR32_EPREG_X(UEDAT0); - Dummy = __AVR32_EPREG_X(UEDAT0); - Dummy = __AVR32_EPREG_X(UEDAT0); - #elif defined(__AVR__) Dummy = UPDATX; Dummy = UPDATX; Dummy = UPDATX; Dummy = UPDATX; - #endif } /* External Variables: */ @@ -958,8 +885,6 @@ * \param[in] Length Number of bytes to read for the currently selected pipe into the buffer. * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback * - * \note Not available on AVR32 UC3B targets. - * * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. */ uint8_t Pipe_Write_EStream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1); @@ -1009,8 +934,6 @@ * \param[in] Length Number of bytes to read for the currently selected pipe into the buffer. * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback * - * \note Not available on AVR32 UC3B targets. - * * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. */ uint8_t Pipe_Write_EStream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1); @@ -1060,8 +983,6 @@ * \param[in] Length Number of bytes to read for the currently selected pipe to read from. * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback * - * \note Not available on AVR32 UC3B targets. - * * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. */ uint8_t Pipe_Read_EStream_LE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1); @@ -1097,8 +1018,6 @@ * \param[in] Length Number of bytes to read for the currently selected pipe to read from. * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback * - * \note Not available on AVR32 UC3B targets. - * * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum. */ uint8_t Pipe_Read_EStream_BE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1); @@ -1119,13 +1038,9 @@ void Pipe_ClearPipes(void); /* Inline Functions: */ - static inline uintN_t Pipe_BytesToEPSizeMask(uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; - static inline uintN_t Pipe_BytesToEPSizeMask(uint16_t Bytes) + static inline uint8_t Pipe_BytesToEPSizeMask(uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; + static inline uint8_t Pipe_BytesToEPSizeMask(uint16_t Bytes) { - #if defined(__AVR32__) - // TODO - return 0; - #elif defined(__AVR__) if (Bytes <= 8) return (0 << EPSIZE0); else if (Bytes <= 16) @@ -1138,7 +1053,6 @@ return (4 << EPSIZE0); else return (5 << EPSIZE0); - #endif } #endif