Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / MassStorage.c
index 049df09..65ed694 100644 (file)
@@ -29,7 +29,8 @@
 */
 
 #define  __INCLUDE_FROM_USB_DRIVER
 */
 
 #define  __INCLUDE_FROM_USB_DRIVER
-#include "../../HighLevel/USBMode.h"
+#include "../../Core/USBMode.h"
+
 #if defined(USB_CAN_BE_HOST)
 
 #define  __INCLUDE_FROM_MS_DRIVER
 #if defined(USB_CAN_BE_HOST)
 
 #define  __INCLUDE_FROM_MS_DRIVER
@@ -87,7 +88,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
                if (PipeNum == MSInterfaceInfo->Config.DataINPipeNumber)
                {
 
                if (PipeNum == MSInterfaceInfo->Config.DataINPipeNumber)
                {
-                       Size            = DataINEndpoint->EndpointSize;
+                       Size            = le16_to_cpu(DataINEndpoint->EndpointSize);
                        EndpointAddress = DataINEndpoint->EndpointAddress;
                        Token           = PIPE_TOKEN_IN;
                        Type            = EP_TYPE_BULK;
                        EndpointAddress = DataINEndpoint->EndpointAddress;
                        Token           = PIPE_TOKEN_IN;
                        Type            = EP_TYPE_BULK;
@@ -97,7 +98,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
                }
                else if (PipeNum == MSInterfaceInfo->Config.DataOUTPipeNumber)
                {
                }
                else if (PipeNum == MSInterfaceInfo->Config.DataOUTPipeNumber)
                {
-                       Size            = DataOUTEndpoint->EndpointSize;
+                       Size            = le16_to_cpu(DataOUTEndpoint->EndpointSize);
                        EndpointAddress = DataOUTEndpoint->EndpointAddress;
                        Token           = PIPE_TOKEN_OUT;
                        Type            = EP_TYPE_BULK;
                        EndpointAddress = DataOUTEndpoint->EndpointAddress;
                        Token           = PIPE_TOKEN_OUT;
                        Type            = EP_TYPE_BULK;
@@ -171,17 +172,17 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
-       SCSICommandBlock->Signature = MS_CBW_SIGNATURE;
-       SCSICommandBlock->Tag       = ++MSInterfaceInfo->State.TransactionTag;
-
-       if (MSInterfaceInfo->State.TransactionTag == 0xFFFFFFFF)
+       if (++MSInterfaceInfo->State.TransactionTag == 0xFFFFFFFF)
          MSInterfaceInfo->State.TransactionTag = 1;
 
          MSInterfaceInfo->State.TransactionTag = 1;
 
+       SCSICommandBlock->Signature = CPU_TO_LE32(MS_CBW_SIGNATURE);
+       SCSICommandBlock->Tag       = cpu_to_le32(MSInterfaceInfo->State.TransactionTag);
+
        Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
        Pipe_Unfreeze();
 
        if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t),
        Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
        Pipe_Unfreeze();
 
        if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t),
-                                             NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+                                             NULL)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
 
        Pipe_ClearOUT();
          return ErrorCode;
 
        Pipe_ClearOUT();
@@ -259,7 +260,7 @@ static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfac
                                        void* BufferPtr)
 {
        uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
                                        void* BufferPtr)
 {
        uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
-       uint16_t BytesRem  = SCSICommandBlock->DataTransferLength;
+       uint16_t BytesRem  = le32_to_cpu(SCSICommandBlock->DataTransferLength);
 
        if (SCSICommandBlock->Flags & MS_COMMAND_DIR_DATA_IN)
        {
 
        if (SCSICommandBlock->Flags & MS_COMMAND_DIR_DATA_IN)
        {
@@ -272,7 +273,7 @@ static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfac
                Pipe_SelectPipe(MSInterfaceInfo->Config.DataINPipeNumber);
                Pipe_Unfreeze();
 
                Pipe_SelectPipe(MSInterfaceInfo->Config.DataINPipeNumber);
                Pipe_Unfreeze();
 
-               if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+               if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem, NULL)) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
 
                Pipe_ClearIN();
                  return ErrorCode;
 
                Pipe_ClearIN();
@@ -282,7 +283,7 @@ static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfac
                Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
                Pipe_Unfreeze();
 
                Pipe_SelectPipe(MSInterfaceInfo->Config.DataOUTPipeNumber);
                Pipe_Unfreeze();
 
-               if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+               if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem, NULL)) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
 
                Pipe_ClearOUT();
                  return ErrorCode;
 
                Pipe_ClearOUT();
@@ -311,7 +312,7 @@ static uint8_t MS_Host_GetReturnedStatus(USB_ClassInfo_MS_Host_t* const MSInterf
        Pipe_Unfreeze();
 
        if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t),
        Pipe_Unfreeze();
 
        if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t),
-                                            NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+                                            NULL)) != PIPE_RWSTREAM_NoError)
        {
                return ErrorCode;
        }
        {
                return ErrorCode;
        }
@@ -357,10 +358,10 @@ uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
 
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
-       if ((ErrorCode = USB_Host_SendControlRequest(MaxLUNIndex)) != HOST_SENDCONTROL_Successful)
+       if ((ErrorCode = USB_Host_SendControlRequest(MaxLUNIndex)) == HOST_SENDCONTROL_SetupStalled)
        {
                *MaxLUNIndex = 0;
        {
                *MaxLUNIndex = 0;
-               ErrorCode = HOST_SENDCONTROL_Successful;
+               ErrorCode    = HOST_SENDCONTROL_Successful;
        }
 
        return ErrorCode;
        }
 
        return ErrorCode;
@@ -377,7 +378,7 @@ uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
+                       .DataTransferLength = CPU_TO_LE32(sizeof(SCSI_Inquiry_Response_t)),
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
@@ -413,7 +414,7 @@ uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = 0,
+                       .DataTransferLength = CPU_TO_LE32(0),
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
@@ -450,7 +451,7 @@ uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = sizeof(SCSI_Capacity_t),
+                       .DataTransferLength = CPU_TO_LE32(sizeof(SCSI_Capacity_t)),
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
@@ -474,8 +475,8 @@ uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, DeviceCapacity)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
 
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, DeviceCapacity)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
 
-       SwapEndian_n(&DeviceCapacity->Blocks,    sizeof(DeviceCapacity->Blocks));
-       SwapEndian_n(&DeviceCapacity->BlockSize, sizeof(DeviceCapacity->BlockSize));
+       DeviceCapacity->Blocks    = BE32_TO_CPU(DeviceCapacity->Blocks);
+       DeviceCapacity->BlockSize = BE32_TO_CPU(DeviceCapacity->BlockSize);
 
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
 
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
@@ -494,7 +495,7 @@ uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
+                       .DataTransferLength = CPU_TO_LE32(sizeof(SCSI_Request_Sense_Response_t)),
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
@@ -531,7 +532,7 @@ uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInter
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = 0,
+                       .DataTransferLength = CPU_TO_LE32(0),
                        .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
@@ -571,7 +572,7 @@ uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = ((uint32_t)Blocks * BlockSize),
+                       .DataTransferLength = cpu_to_le32((uint32_t)Blocks * BlockSize),
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
@@ -615,7 +616,7 @@ uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
 
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
-                       .DataTransferLength = ((uint32_t)Blocks * BlockSize),
+                       .DataTransferLength = cpu_to_le32((uint32_t)Blocks * BlockSize),
                        .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,