// Higher versions will be used before lower, 0x10-0xffffffef is the version\r
// range for IVH (Indie Hardware Vendors)\r
//\r
-#define MPT_SCSI_BINDING_VERSION 0x10\r
+#define MPT_SCSI_BINDING_VERSION 0x10\r
\r
//\r
// Runtime Structures\r
//\r
\r
typedef struct {\r
- MPT_SCSI_REQUEST_ALIGNED IoRequest;\r
- MPT_SCSI_IO_REPLY_ALIGNED IoReply;\r
+ MPT_SCSI_REQUEST_ALIGNED IoRequest;\r
+ MPT_SCSI_IO_REPLY_ALIGNED IoReply;\r
//\r
// As EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET.SenseDataLength is defined\r
// as UINT8, defining here SenseData size to MAX_UINT8 will guarantee it\r
// cannot overflow when passed to device.\r
//\r
- UINT8 Sense[MAX_UINT8];\r
+ UINT8 Sense[MAX_UINT8];\r
//\r
// This size of the data is arbitrarily chosen.\r
// It seems to be sufficient for all I/O requests sent through\r
// EFI_SCSI_PASS_THRU_PROTOCOL.PassThru() for common boot scenarios.\r
//\r
- UINT8 Data[0x2000];\r
+ UINT8 Data[0x2000];\r
} MPT_SCSI_DMA_BUFFER;\r
\r
-#define MPT_SCSI_DEV_SIGNATURE SIGNATURE_32 ('M','P','T','S')\r
+#define MPT_SCSI_DEV_SIGNATURE SIGNATURE_32 ('M','P','T','S')\r
typedef struct {\r
- UINT32 Signature;\r
- EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru;\r
- EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode;\r
- UINT8 MaxTarget;\r
- UINT32 StallPerPollUsec;\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- UINT64 OriginalPciAttributes;\r
- EFI_EVENT ExitBoot;\r
- MPT_SCSI_DMA_BUFFER *Dma;\r
- EFI_PHYSICAL_ADDRESS DmaPhysical;\r
- VOID *DmaMapping;\r
- BOOLEAN IoReplyEnqueued;\r
+ UINT32 Signature;\r
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru;\r
+ EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode;\r
+ UINT8 MaxTarget;\r
+ UINT32 StallPerPollUsec;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ UINT64 OriginalPciAttributes;\r
+ EFI_EVENT ExitBoot;\r
+ MPT_SCSI_DMA_BUFFER *Dma;\r
+ EFI_PHYSICAL_ADDRESS DmaPhysical;\r
+ VOID *DmaMapping;\r
+ BOOLEAN IoReplyEnqueued;\r
} MPT_SCSI_DEV;\r
\r
#define MPT_SCSI_FROM_PASS_THRU(PassThruPtr) \\r
STATIC\r
EFI_STATUS\r
Out32 (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN UINT32 Addr,\r
- IN UINT32 Data\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN UINT32 Addr,\r
+ IN UINT32 Data\r
)\r
{\r
return Dev->PciIo->Io.Write (\r
STATIC\r
EFI_STATUS\r
In32 (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN UINT32 Addr,\r
- OUT UINT32 *Data\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN UINT32 Addr,\r
+ OUT UINT32 *Data\r
)\r
{\r
return Dev->PciIo->Io.Read (\r
STATIC\r
EFI_STATUS\r
MptDoorbell (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN UINT8 DoorbellFunc,\r
- IN UINT8 DoorbellArg\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN UINT8 DoorbellFunc,\r
+ IN UINT8 DoorbellArg\r
)\r
{\r
return Out32 (\r
STATIC\r
EFI_STATUS\r
MptScsiReset (\r
- IN MPT_SCSI_DEV *Dev\r
+ IN MPT_SCSI_DEV *Dev\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Reset hardware\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
// Mask interrupts\r
//\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
//\r
// Clear interrupt status\r
//\r
STATIC\r
EFI_STATUS\r
MptScsiInit (\r
- IN MPT_SCSI_DEV *Dev\r
+ IN MPT_SCSI_DEV *Dev\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
+\r
union {\r
- MPT_IO_CONTROLLER_INIT_REQUEST Data;\r
- UINT32 Uint32;\r
+ MPT_IO_CONTROLLER_INIT_REQUEST Data;\r
+ UINT32 Uint32;\r
} AlignedReq;\r
- MPT_IO_CONTROLLER_INIT_REQUEST *Req;\r
- MPT_IO_CONTROLLER_INIT_REPLY Reply;\r
- UINT8 *ReplyBytes;\r
- UINT32 ReplyWord;\r
+ MPT_IO_CONTROLLER_INIT_REQUEST *Req;\r
+ MPT_IO_CONTROLLER_INIT_REPLY Reply;\r
+ UINT8 *ReplyBytes;\r
+ UINT32 ReplyWord;\r
\r
Req = &AlignedReq.Data;\r
\r
\r
ZeroMem (Req, sizeof (*Req));\r
ZeroMem (&Reply, sizeof (Reply));\r
- Req->WhoInit = MPT_IOC_WHOINIT_ROM_BIOS;\r
+ Req->WhoInit = MPT_IOC_WHOINIT_ROM_BIOS;\r
Req->Function = MPT_MESSAGE_HDR_FUNCTION_IOC_INIT;\r
STATIC_ASSERT (\r
FixedPcdGet8 (PcdMptScsiMaxTargetLimit) < 255,\r
"Req supports 255 targets only (max target is 254)"\r
);\r
- Req->MaxDevices = Dev->MaxTarget + 1;\r
- Req->MaxBuses = 1;\r
- Req->ReplyFrameSize = sizeof Dev->Dma->IoReply.Data;\r
- Req->HostMfaHighAddr = MPT_SCSI_DMA_ADDR_HIGH (Dev, IoRequest);\r
+ Req->MaxDevices = Dev->MaxTarget + 1;\r
+ Req->MaxBuses = 1;\r
+ Req->ReplyFrameSize = sizeof Dev->Dma->IoReply.Data;\r
+ Req->HostMfaHighAddr = MPT_SCSI_DMA_ADDR_HIGH (Dev, IoRequest);\r
Req->SenseBufferHighAddr = MPT_SCSI_DMA_ADDR_HIGH (Dev, Sense);\r
\r
//\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
Status = Dev->PciIo->Io.Write (\r
Dev->PciIo,\r
EfiPciIoWidthFifoUint32,\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
CopyMem (ReplyBytes, &ReplyWord, sizeof (UINT16));\r
ReplyBytes += sizeof (UINT16);\r
}\r
STATIC\r
EFI_STATUS\r
ReportHostAdapterError (\r
- OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
+ OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
)\r
{\r
DEBUG ((DEBUG_ERROR, "%a: fatal error in scsi request\n", __FUNCTION__));\r
STATIC\r
EFI_STATUS\r
ReportHostAdapterOverrunError (\r
- OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
+ OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
)\r
{\r
- Packet->SenseDataLength = 0;\r
+ Packet->SenseDataLength = 0;\r
Packet->HostAdapterStatus =\r
- EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN;\r
+ EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN;\r
Packet->TargetStatus = EFI_EXT_SCSI_STATUS_TARGET_GOOD;\r
return EFI_BAD_BUFFER_SIZE;\r
}\r
STATIC\r
EFI_STATUS\r
MptScsiPopulateRequest (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN UINT8 Target,\r
- IN UINT64 Lun,\r
- IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN UINT8 Target,\r
+ IN UINT64 Lun,\r
+ IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
)\r
{\r
- MPT_SCSI_REQUEST_WITH_SG *Request;\r
+ MPT_SCSI_REQUEST_WITH_SG *Request;\r
\r
Request = &Dev->Dma->IoRequest.Data;\r
\r
- if (Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIONAL ||\r
- (Packet->InTransferLength > 0 && Packet->OutTransferLength > 0) ||\r
- Packet->CdbLength > sizeof (Request->Header.Cdb)) {\r
+ if ((Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIONAL) ||\r
+ ((Packet->InTransferLength > 0) && (Packet->OutTransferLength > 0)) ||\r
+ (Packet->CdbLength > sizeof (Request->Header.Cdb)))\r
+ {\r
return EFI_UNSUPPORTED;\r
}\r
\r
- if (Target > Dev->MaxTarget || Lun > 0 ||\r
- Packet->DataDirection > EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIONAL ||\r
+ if ((Target > Dev->MaxTarget) || (Lun > 0) ||\r
+ (Packet->DataDirection > EFI_EXT_SCSI_DATA_DIRECTION_BIDIRECTIONAL) ||\r
//\r
// Trying to receive, but destination pointer is NULL, or contradicting\r
// transfer direction\r
//\r
- (Packet->InTransferLength > 0 &&\r
- (Packet->InDataBuffer == NULL ||\r
- Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_WRITE\r
- )\r
- ) ||\r
+ ((Packet->InTransferLength > 0) &&\r
+ ((Packet->InDataBuffer == NULL) ||\r
+ (Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_WRITE)\r
+ )\r
+ ) ||\r
\r
//\r
// Trying to send, but source pointer is NULL, or contradicting transfer\r
// direction\r
//\r
- (Packet->OutTransferLength > 0 &&\r
- (Packet->OutDataBuffer == NULL ||\r
- Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_READ\r
- )\r
- )\r
- ) {\r
+ ((Packet->OutTransferLength > 0) &&\r
+ ((Packet->OutDataBuffer == NULL) ||\r
+ (Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_READ)\r
+ )\r
+ )\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Packet->InTransferLength = sizeof (Dev->Dma->Data);\r
return ReportHostAdapterOverrunError (Packet);\r
}\r
+\r
if (Packet->OutTransferLength > sizeof (Dev->Dma->Data)) {\r
Packet->OutTransferLength = sizeof (Dev->Dma->Data);\r
return ReportHostAdapterOverrunError (Packet);\r
//\r
// Only LUN 0 is currently supported, hence the cast is safe\r
//\r
- Request->Header.Lun[1] = (UINT8)Lun;\r
- Request->Header.Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST;\r
+ Request->Header.Lun[1] = (UINT8)Lun;\r
+ Request->Header.Function = MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST;\r
Request->Header.MessageContext = 1; // We handle one request at a time\r
\r
Request->Header.CdbLength = Packet->CdbLength;\r
// SenseDataLength is UINT8, Sense[] is MAX_UINT8, so we can't overflow\r
//\r
ZeroMem (Dev->Dma->Sense, Packet->SenseDataLength);\r
- Request->Header.SenseBufferLength = Packet->SenseDataLength;\r
+ Request->Header.SenseBufferLength = Packet->SenseDataLength;\r
Request->Header.SenseBufferLowAddress = MPT_SCSI_DMA_ADDR_LOW (Dev, Sense);\r
\r
- Request->Sg.EndOfList = 1;\r
- Request->Sg.EndOfBuffer = 1;\r
- Request->Sg.LastElement = 1;\r
- Request->Sg.ElementType = MPT_SG_ENTRY_TYPE_SIMPLE;\r
- Request->Sg.Is64BitAddress = 1;\r
+ Request->Sg.EndOfList = 1;\r
+ Request->Sg.EndOfBuffer = 1;\r
+ Request->Sg.LastElement = 1;\r
+ Request->Sg.ElementType = MPT_SG_ENTRY_TYPE_SIMPLE;\r
+ Request->Sg.Is64BitAddress = 1;\r
Request->Sg.DataBufferAddress = MPT_SCSI_DMA_ADDR (Dev, Data);\r
\r
//\r
\r
if (Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_READ) {\r
Request->Header.DataLength = Packet->InTransferLength;\r
- Request->Sg.Length = Packet->InTransferLength;\r
- Request->Header.Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ;\r
+ Request->Sg.Length = Packet->InTransferLength;\r
+ Request->Header.Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ;\r
} else {\r
Request->Header.DataLength = Packet->OutTransferLength;\r
- Request->Sg.Length = Packet->OutTransferLength;\r
- Request->Header.Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE;\r
+ Request->Sg.Length = Packet->OutTransferLength;\r
+ Request->Header.Control = MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE;\r
\r
CopyMem (Dev->Dma->Data, Packet->OutDataBuffer, Packet->OutTransferLength);\r
Request->Sg.BufferContainsData = 1;\r
STATIC\r
EFI_STATUS\r
MptScsiSendRequest (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (!Dev->IoReplyEnqueued) {\r
//\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
Dev->IoReplyEnqueued = TRUE;\r
}\r
\r
STATIC\r
EFI_STATUS\r
MptScsiGetReply (\r
- IN MPT_SCSI_DEV *Dev,\r
- OUT UINT32 *Reply\r
+ IN MPT_SCSI_DEV *Dev,\r
+ OUT UINT32 *Reply\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT32 Istatus;\r
- UINT32 EmptyReply;\r
+ EFI_STATUS Status;\r
+ UINT32 Istatus;\r
+ UINT32 EmptyReply;\r
\r
//\r
// Timeouts are not supported for\r
// EFI_EXT_SCSI_PASS_THRU_PROTOCOL.PassThru() in this implementation.\r
//\r
- for (;;) {\r
+ for ( ; ;) {\r
Status = In32 (Dev, MPT_REG_ISTATUS, &Istatus);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
// next read reply to be the last.\r
//\r
Status = In32 (Dev, MPT_REG_REP_Q, &EmptyReply);\r
- if (EFI_ERROR (Status) || EmptyReply != MAX_UINT32) {\r
+ if (EFI_ERROR (Status) || (EmptyReply != MAX_UINT32)) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
STATIC\r
EFI_STATUS\r
MptScsiHandleReply (\r
- IN MPT_SCSI_DEV *Dev,\r
- IN UINT32 Reply,\r
- OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
+ IN MPT_SCSI_DEV *Dev,\r
+ IN UINT32 Reply,\r
+ OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
)\r
{\r
if (Packet->DataDirection == EFI_EXT_SCSI_DATA_DIRECTION_READ) {\r
//\r
// This is a turbo reply, everything is good\r
//\r
- Packet->SenseDataLength = 0;\r
+ Packet->SenseDataLength = 0;\r
Packet->HostAdapterStatus = EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK;\r
- Packet->TargetStatus = EFI_EXT_SCSI_STATUS_TARGET_GOOD;\r
-\r
+ Packet->TargetStatus = EFI_EXT_SCSI_STATUS_TARGET_GOOD;\r
} else if ((Reply & BIT31) != 0) {\r
DEBUG ((DEBUG_INFO, "%a: Full reply returned\n", __FUNCTION__));\r
//\r
}\r
\r
switch (Dev->Dma->IoReply.Data.IocStatus) {\r
- case MPT_SCSI_IOCSTATUS_SUCCESS:\r
- Packet->HostAdapterStatus = EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK;\r
- break;\r
- case MPT_SCSI_IOCSTATUS_DEVICE_NOT_THERE:\r
- Packet->HostAdapterStatus =\r
- EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT;\r
- return EFI_TIMEOUT;\r
- case MPT_SCSI_IOCSTATUS_DATA_UNDERRUN:\r
- case MPT_SCSI_IOCSTATUS_DATA_OVERRUN:\r
- Packet->HostAdapterStatus =\r
- EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN;\r
- break;\r
- default:\r
- Packet->HostAdapterStatus = EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER;\r
- return EFI_DEVICE_ERROR;\r
+ case MPT_SCSI_IOCSTATUS_SUCCESS:\r
+ Packet->HostAdapterStatus = EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OK;\r
+ break;\r
+ case MPT_SCSI_IOCSTATUS_DEVICE_NOT_THERE:\r
+ Packet->HostAdapterStatus =\r
+ EFI_EXT_SCSI_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT;\r
+ return EFI_TIMEOUT;\r
+ case MPT_SCSI_IOCSTATUS_DATA_UNDERRUN:\r
+ case MPT_SCSI_IOCSTATUS_DATA_OVERRUN:\r
+ Packet->HostAdapterStatus =\r
+ EFI_EXT_SCSI_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN;\r
+ break;\r
+ default:\r
+ Packet->HostAdapterStatus = EFI_EXT_SCSI_STATUS_HOST_ADAPTER_OTHER;\r
+ return EFI_DEVICE_ERROR;\r
}\r
-\r
} else {\r
DEBUG ((DEBUG_ERROR, "%a: unexpected reply (%x)\n", __FUNCTION__, Reply));\r
return ReportHostAdapterError (Packet);\r
EFI_STATUS\r
EFIAPI\r
MptScsiPassThru (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN UINT8 *Target,\r
- IN UINT64 Lun,\r
- IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet,\r
- IN EFI_EVENT Event OPTIONAL\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN UINT8 *Target,\r
+ IN UINT64 Lun,\r
+ IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet,\r
+ IN EFI_EVENT Event OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- MPT_SCSI_DEV *Dev;\r
- UINT32 Reply;\r
+ EFI_STATUS Status;\r
+ MPT_SCSI_DEV *Dev;\r
+ UINT32 Reply;\r
\r
Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
//\r
STATIC\r
BOOLEAN\r
IsTargetInitialized (\r
- IN UINT8 *Target\r
+ IN UINT8 *Target\r
)\r
{\r
- UINTN Idx;\r
+ UINTN Idx;\r
\r
for (Idx = 0; Idx < TARGET_MAX_BYTES; ++Idx) {\r
if (Target[Idx] != 0xFF) {\r
return TRUE;\r
}\r
}\r
+\r
return FALSE;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
MptScsiGetNextTargetLun (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN OUT UINT8 **Target,\r
- IN OUT UINT64 *Lun\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN OUT UINT8 **Target,\r
+ IN OUT UINT64 *Lun\r
)\r
{\r
- MPT_SCSI_DEV *Dev;\r
+ MPT_SCSI_DEV *Dev;\r
\r
Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
//\r
if (!IsTargetInitialized (*Target)) {\r
ZeroMem (*Target, TARGET_MAX_BYTES);\r
*Lun = 0;\r
- } else if (**Target > Dev->MaxTarget || *Lun > 0) {\r
+ } else if ((**Target > Dev->MaxTarget) || (*Lun > 0)) {\r
return EFI_INVALID_PARAMETER;\r
} else if (**Target < Dev->MaxTarget) {\r
//\r
EFI_STATUS\r
EFIAPI\r
MptScsiGetNextTarget (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN OUT UINT8 **Target\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN OUT UINT8 **Target\r
)\r
{\r
- MPT_SCSI_DEV *Dev;\r
+ MPT_SCSI_DEV *Dev;\r
\r
Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
if (!IsTargetInitialized (*Target)) {\r
EFI_STATUS\r
EFIAPI\r
MptScsiBuildDevicePath (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN UINT8 *Target,\r
- IN UINT64 Lun,\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN UINT8 *Target,\r
+ IN UINT64 Lun,\r
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath\r
)\r
{\r
- MPT_SCSI_DEV *Dev;\r
- SCSI_DEVICE_PATH *ScsiDevicePath;\r
+ MPT_SCSI_DEV *Dev;\r
+ SCSI_DEVICE_PATH *ScsiDevicePath;\r
\r
if (DevicePath == NULL) {\r
return EFI_INVALID_PARAMETER;\r
// the LSB of Target.\r
//\r
Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
- if (*Target > Dev->MaxTarget || Lun > 0) {\r
+ if ((*Target > Dev->MaxTarget) || (Lun > 0)) {\r
return EFI_NOT_FOUND;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
MptScsiGetTargetLun (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- OUT UINT8 **Target,\r
- OUT UINT64 *Lun\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ OUT UINT8 **Target,\r
+ OUT UINT64 *Lun\r
)\r
{\r
- MPT_SCSI_DEV *Dev;\r
- SCSI_DEVICE_PATH *ScsiDevicePath;\r
+ MPT_SCSI_DEV *Dev;\r
+ SCSI_DEVICE_PATH *ScsiDevicePath;\r
\r
- if (DevicePath == NULL ||\r
- Target == NULL || *Target == NULL || Lun == NULL) {\r
+ if ((DevicePath == NULL) ||\r
+ (Target == NULL) || (*Target == NULL) || (Lun == NULL))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (DevicePath->Type != MESSAGING_DEVICE_PATH ||\r
- DevicePath->SubType != MSG_SCSI_DP) {\r
+ if ((DevicePath->Type != MESSAGING_DEVICE_PATH) ||\r
+ (DevicePath->SubType != MSG_SCSI_DP))\r
+ {\r
return EFI_UNSUPPORTED;\r
}\r
\r
- Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
+ Dev = MPT_SCSI_FROM_PASS_THRU (This);\r
ScsiDevicePath = (SCSI_DEVICE_PATH *)DevicePath;\r
- if (ScsiDevicePath->Pun > Dev->MaxTarget ||\r
- ScsiDevicePath->Lun > 0) {\r
+ if ((ScsiDevicePath->Pun > Dev->MaxTarget) ||\r
+ (ScsiDevicePath->Lun > 0))\r
+ {\r
return EFI_NOT_FOUND;\r
}\r
\r
// of Target.\r
//\r
**Target = (UINT8)ScsiDevicePath->Pun;\r
- *Lun = ScsiDevicePath->Lun;\r
+ *Lun = ScsiDevicePath->Lun;\r
\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
MptScsiResetChannel (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This\r
)\r
{\r
return EFI_UNSUPPORTED;\r
VOID\r
EFIAPI\r
MptScsiExitBoot (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- MPT_SCSI_DEV *Dev;\r
+ MPT_SCSI_DEV *Dev;\r
\r
Dev = Context;\r
DEBUG ((DEBUG_VERBOSE, "%a: Context=0x%p\n", __FUNCTION__, Context));\r
MptScsiReset (Dev);\r
}\r
+\r
STATIC\r
EFI_STATUS\r
EFIAPI\r
MptScsiResetTargetLun (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
- IN UINT8 *Target,\r
- IN UINT64 Lun\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,\r
+ IN UINT8 *Target,\r
+ IN UINT64 Lun\r
)\r
{\r
return EFI_UNSUPPORTED;\r
EFI_STATUS\r
EFIAPI\r
MptScsiControllerSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- PCI_TYPE00 Pci;\r
+ EFI_STATUS Status;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ PCI_TYPE00 Pci;\r
\r
Status = gBS->OpenProtocol (\r
ControllerHandle,\r
goto Done;\r
}\r
\r
- if (Pci.Hdr.VendorId == LSI_LOGIC_PCI_VENDOR_ID &&\r
- (Pci.Hdr.DeviceId == LSI_53C1030_PCI_DEVICE_ID ||\r
- Pci.Hdr.DeviceId == LSI_SAS1068_PCI_DEVICE_ID ||\r
- Pci.Hdr.DeviceId == LSI_SAS1068E_PCI_DEVICE_ID)) {\r
+ if ((Pci.Hdr.VendorId == LSI_LOGIC_PCI_VENDOR_ID) &&\r
+ ((Pci.Hdr.DeviceId == LSI_53C1030_PCI_DEVICE_ID) ||\r
+ (Pci.Hdr.DeviceId == LSI_SAS1068_PCI_DEVICE_ID) ||\r
+ (Pci.Hdr.DeviceId == LSI_SAS1068E_PCI_DEVICE_ID)))\r
+ {\r
Status = EFI_SUCCESS;\r
} else {\r
Status = EFI_UNSUPPORTED;\r
EFI_STATUS\r
EFIAPI\r
MptScsiControllerStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- MPT_SCSI_DEV *Dev;\r
- UINTN Pages;\r
- UINTN BytesMapped;\r
+ EFI_STATUS Status;\r
+ MPT_SCSI_DEV *Dev;\r
+ UINTN Pages;\r
+ UINTN BytesMapped;\r
\r
Dev = AllocateZeroPool (sizeof (*Dev));\r
if (Dev == NULL) {\r
\r
Dev->Signature = MPT_SCSI_DEV_SIGNATURE;\r
\r
- Dev->MaxTarget = PcdGet8 (PcdMptScsiMaxTargetLimit);\r
+ Dev->MaxTarget = PcdGet8 (PcdMptScsiMaxTargetLimit);\r
Dev->StallPerPollUsec = PcdGet32 (PcdMptScsiStallPerPollUsec);\r
\r
Status = gBS->OpenProtocol (\r
//\r
// Create buffers for data transfer\r
//\r
- Pages = EFI_SIZE_TO_PAGES (sizeof (*Dev->Dma));\r
+ Pages = EFI_SIZE_TO_PAGES (sizeof (*Dev->Dma));\r
Status = Dev->PciIo->AllocateBuffer (\r
Dev->PciIo,\r
AllocateAnyPages,\r
}\r
\r
BytesMapped = EFI_PAGES_TO_SIZE (Pages);\r
- Status = Dev->PciIo->Map (\r
- Dev->PciIo,\r
- EfiPciIoOperationBusMasterCommonBuffer,\r
- Dev->Dma,\r
- &BytesMapped,\r
- &Dev->DmaPhysical,\r
- &Dev->DmaMapping\r
- );\r
+ Status = Dev->PciIo->Map (\r
+ Dev->PciIo,\r
+ EfiPciIoOperationBusMasterCommonBuffer,\r
+ Dev->Dma,\r
+ &BytesMapped,\r
+ &Dev->DmaPhysical,\r
+ &Dev->DmaMapping\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto FreeBuffer;\r
}\r
//\r
// Host adapter channel, doesn't exist\r
//\r
- Dev->PassThruMode.AdapterId = MAX_UINT32;\r
+ Dev->PassThruMode.AdapterId = MAX_UINT32;\r
Dev->PassThruMode.Attributes =\r
EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL |\r
EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL;\r
\r
- Dev->PassThru.Mode = &Dev->PassThruMode;\r
- Dev->PassThru.PassThru = &MptScsiPassThru;\r
+ Dev->PassThru.Mode = &Dev->PassThruMode;\r
+ Dev->PassThru.PassThru = &MptScsiPassThru;\r
Dev->PassThru.GetNextTargetLun = &MptScsiGetNextTargetLun;\r
- Dev->PassThru.BuildDevicePath = &MptScsiBuildDevicePath;\r
- Dev->PassThru.GetTargetLun = &MptScsiGetTargetLun;\r
- Dev->PassThru.ResetChannel = &MptScsiResetChannel;\r
- Dev->PassThru.ResetTargetLun = &MptScsiResetTargetLun;\r
- Dev->PassThru.GetNextTarget = &MptScsiGetNextTarget;\r
+ Dev->PassThru.BuildDevicePath = &MptScsiBuildDevicePath;\r
+ Dev->PassThru.GetTargetLun = &MptScsiGetTargetLun;\r
+ Dev->PassThru.ResetChannel = &MptScsiResetChannel;\r
+ Dev->PassThru.ResetTargetLun = &MptScsiResetTargetLun;\r
+ Dev->PassThru.GetNextTarget = &MptScsiGetNextTarget;\r
\r
Status = gBS->InstallProtocolInterface (\r
&ControllerHandle,\r
EFI_STATUS\r
EFIAPI\r
MptScsiControllerStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru;\r
- MPT_SCSI_DEV *Dev;\r
+ EFI_STATUS Status;\r
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru;\r
+ MPT_SCSI_DEV *Dev;\r
\r
Status = gBS->OpenProtocol (\r
ControllerHandle,\r
}\r
\r
STATIC\r
-EFI_DRIVER_BINDING_PROTOCOL mMptScsiDriverBinding = {\r
+EFI_DRIVER_BINDING_PROTOCOL mMptScsiDriverBinding = {\r
&MptScsiControllerSupported,\r
&MptScsiControllerStart,\r
&MptScsiControllerStop,\r
//\r
\r
STATIC\r
-EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {\r
+EFI_UNICODE_STRING_TABLE mDriverNameTable[] = {\r
{ "eng;en", L"LSI Fusion MPT SCSI Driver" },\r
- { NULL, NULL }\r
+ { NULL, NULL }\r
};\r
\r
STATIC\r
-EFI_COMPONENT_NAME_PROTOCOL mComponentName;\r
+EFI_COMPONENT_NAME_PROTOCOL mComponentName;\r
\r
EFI_STATUS\r
EFIAPI\r
MptScsiGetDriverName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **DriverName\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **DriverName\r
)\r
{\r
return LookupUnicodeString2 (\r
EFI_STATUS\r
EFIAPI\r
MptScsiGetDeviceName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE DeviceHandle,\r
- IN EFI_HANDLE ChildHandle,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN EFI_HANDLE DeviceHandle,\r
+ IN EFI_HANDLE ChildHandle,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **ControllerName\r
)\r
{\r
return EFI_UNSUPPORTED;\r
}\r
\r
STATIC\r
-EFI_COMPONENT_NAME_PROTOCOL mComponentName = {\r
+EFI_COMPONENT_NAME_PROTOCOL mComponentName = {\r
&MptScsiGetDriverName,\r
&MptScsiGetDeviceName,\r
"eng" // SupportedLanguages, ISO 639-2 language codes\r
};\r
\r
STATIC\r
-EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 = {\r
- (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) &MptScsiGetDriverName,\r
- (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) &MptScsiGetDeviceName,\r
+EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 = {\r
+ (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)&MptScsiGetDriverName,\r
+ (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)&MptScsiGetDeviceName,\r
"en" // SupportedLanguages, RFC 4646 language codes\r
};\r
\r
EFI_STATUS\r
EFIAPI\r
MptScsiEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
return EfiLibInstallDriverBindingComponentName2 (\r