summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
diff options
context:
space:
mode:
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2007-07-02 02:40:39 +0000
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2007-07-02 02:40:39 +0000
commit70c94b3b6ddf1d84ddb20118d898fd7a85725386 (patch)
treef422a33ccf43226349c3f74091a01b790f023537 /MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
parent6d2f1f24c3b53f664c1e61409f30b586e43f300b (diff)
downloadedk2-platforms-70c94b3b6ddf1d84ddb20118d898fd7a85725386.tar.xz
Porting R8's PI-enabled ScsiBus driver
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2927 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h')
-rw-r--r--MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h178
1 files changed, 134 insertions, 44 deletions
diff --git a/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
index 594953e4d6..f24afd3d10 100644
--- a/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
+++ b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.h
@@ -33,24 +33,65 @@ Revision History
#define SCSI_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 'i', 'o')
+typedef struct _SCSI_TARGET_ID {
+ union {
+ UINT32 Scsi;
+ UINT8 ExtScsi[4];
+ } ScsiId;
+ UINT8 ExtScsiId[12];
+}SCSI_TARGET_ID;
+
+
+typedef struct {
+ VOID *Data1;
+ VOID *Data2;
+} SCSI_EVENT_DATA;
+
+
typedef struct {
- UINT32 Signature;
-
- EFI_HANDLE Handle;
- EFI_SCSI_IO_PROTOCOL ScsiIo;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_SCSI_PASS_THRU_PROTOCOL *ScsiPassThru;
-
- UINT32 Pun;
- UINT64 Lun;
- UINT8 ScsiDeviceType;
- UINT8 ScsiVersion;
- BOOLEAN RemovableDevice;
+ UINT32 Signature;
+ EFI_HANDLE Handle;
+ EFI_SCSI_IO_PROTOCOL ScsiIo;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ BOOLEAN ExtScsiSupport;
+ EFI_SCSI_PASS_THRU_PROTOCOL *ScsiPassThru;
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiPassThru;
+ SCSI_TARGET_ID Pun;
+ UINT64 Lun;
+ UINT8 ScsiDeviceType;
+ UINT8 ScsiVersion;
+ BOOLEAN RemovableDevice;
} SCSI_IO_DEV;
#define SCSI_IO_DEV_FROM_THIS(a) CR (a, SCSI_IO_DEV, ScsiIo, SCSI_IO_DEV_SIGNATURE)
//
+// SCSI Bus Controller device strcuture
+//
+#define EFI_SCSI_BUS_PROTOCOL_GUID \
+ { \
+ 0x5261213D, 0x3A3D, 0x441E, 0xB3, 0xAF, 0x21, 0xD3, 0xF7, 0xA4, 0xCA, 0x17 \
+ }
+
+typedef struct _EFI_SCSI_BUS_PROTOCOL {
+ UINT64 Reserved;
+} EFI_SCSI_BUS_PROTOCOL;
+
+#define SCSI_BUS_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 's', 'i')
+
+
+typedef struct _SCSI_BUS_DEVICE {
+ UINTN Signature;
+ EFI_SCSI_BUS_PROTOCOL BusIdentify;
+ BOOLEAN ExtScsiSupport;
+ EFI_SCSI_PASS_THRU_PROTOCOL *ScsiInterface;
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiInterface;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+} SCSI_BUS_DEVICE;
+
+#define SCSI_BUS_CONTROLLER_DEVICE_FROM_THIS(a) CR (a, SCSI_BUS_DEVICE, BusIdentify, SCSI_BUS_DEVICE_SIGNATURE)
+
+//
// Global Variables
//
extern EFI_DRIVER_BINDING_PROTOCOL gScsiBusDriverBinding;
@@ -112,16 +153,18 @@ ScsiGetDeviceType (
Routine Description:
- TODO: Add function description
-
+ Retrieves the device type information of the SCSI Controller.
+
Arguments:
- This - TODO: add argument description
- DeviceType - TODO: add argument description
+ This - Protocol instance pointer.
+ DeviceType - A pointer to the device type information
+ retrieved from the SCSI Controller.
Returns:
- TODO: add return values
+ EFI_SUCCESS - Retrieves the device type information successfully.
+ EFI_INVALID_PARAMETER - The DeviceType is NULL.
--*/
;
@@ -135,15 +178,20 @@ ScsiResetBus (
Routine Description:
- TODO: Add function description
-
+ Resets the SCSI Bus that the SCSI Controller is attached to.
+
Arguments:
- This - TODO: add argument description
+ This - Protocol instance pointer.
Returns:
- TODO: add return values
+ EFI_SUCCESS - The SCSI bus is reset successfully.
+ EFI_DEVICE_ERROR - Errors encountered when resetting the SCSI bus.
+ EFI_UNSUPPORTED - The bus reset operation is not supported by the
+ SCSI Host Controller.
+ EFI_TIMEOUT - A timeout occurred while attempting to reset
+ the SCSI bus.
--*/
;
@@ -157,15 +205,21 @@ ScsiResetDevice (
Routine Description:
- TODO: Add function description
-
+ Resets the SCSI Controller that the device handle specifies.
+
Arguments:
- This - TODO: add argument description
-
+ This - Protocol instance pointer.
+
Returns:
- TODO: add return values
+ EFI_SUCCESS - Reset the SCSI controller successfully.
+ EFI_DEVICE_ERROR - Errors are encountered when resetting the
+ SCSI Controller.
+ EFI_UNSUPPORTED - The SCSI bus does not support a device
+ reset operation.
+ EFI_TIMEOUT - A timeout occurred while attempting to
+ reset the SCSI Controller.
--*/
;
@@ -181,17 +235,54 @@ ScsiExecuteSCSICommand (
Routine Description:
- TODO: Add function description
-
+ Sends a SCSI Request Packet to the SCSI Controller for execution.
+
Arguments:
- This - TODO: add argument description
- CommandPacket - TODO: add argument description
- Event - TODO: add argument description
-
+ This - Protocol instance pointer.
+ Packet - The SCSI request packet to send to the SCSI
+ Controller specified by the device handle.
+ Event - If the SCSI bus where the SCSI device is attached
+ does not support non-blocking I/O, then Event is
+ ignored, and blocking I/O is performed.
+ If Event is NULL, then blocking I/O is performed.
+ If Event is not NULL and non-blocking I/O is
+ supported, then non-blocking I/O is performed,
+ and Event will be signaled when the SCSI Request
+ Packet completes.
Returns:
- TODO: add return values
+ EFI_SUCCESS - The SCSI Request Packet was sent by the host
+ successfully, and TransferLength bytes were
+ transferred to/from DataBuffer.See
+ HostAdapterStatus, TargetStatus,
+ SenseDataLength, and SenseData in that order
+ for additional status information.
+ EFI_BAD_BUFFER_SIZE - The SCSI Request Packet was executed,
+ but the entire DataBuffer could not be transferred.
+ The actual number of bytes transferred is returned
+ in TransferLength. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
+ EFI_NOT_READY - The SCSI Request Packet could not be sent because
+ there are too many SCSI Command Packets already
+ queued.The caller may retry again later.
+ EFI_DEVICE_ERROR - A device error occurred while attempting to send
+ the SCSI Request Packet. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
+ EFI_INVALID_PARAMETER - The contents of CommandPacket are invalid.
+ The SCSI Request Packet was not sent, so no
+ additional status information is available.
+ EFI_UNSUPPORTED - The command described by the SCSI Request Packet
+ is not supported by the SCSI initiator(i.e., SCSI
+ Host Controller). The SCSI Request Packet was not
+ sent, so no additional status information is
+ available.
+ EFI_TIMEOUT - A timeout occurred while waiting for the SCSI
+ Request Packet to execute. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
--*/
;
@@ -200,29 +291,28 @@ EFI_STATUS
ScsiScanCreateDevice (
EFI_DRIVER_BINDING_PROTOCOL *This,
EFI_HANDLE Controller,
- UINT32 Pun,
+ SCSI_TARGET_ID *TargetId,
UINT64 Lun,
- EFI_SCSI_PASS_THRU_PROTOCOL *ScsiPassThru,
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath
+ SCSI_BUS_DEVICE *ScsiBusDev
)
/*++
Routine Description:
- TODO: Add function description
+ Scan SCSI Bus to discover the device, and attach ScsiIoProtocol to it.
Arguments:
- This - TODO: add argument description
- Controller - TODO: add argument description
- Pun - TODO: add argument description
- Lun - TODO: add argument description
- ScsiPassThru - TODO: add argument description
- ParentDevicePath - TODO: add argument description
+ This - Protocol instance pointer
+ Controller - Controller handle
+ Pun - The Pun of the SCSI device on the SCSI channel.
+ Lun - The Lun of the SCSI device on the SCSI channel.
+ ScsiBusDev - The pointer of SCSI_BUS_DEVICE
Returns:
- TODO: add return values
+ EFI_SUCCESS - Successfully to discover the device and attach ScsiIoProtocol to it.
+ EFI_OUT_OF_RESOURCES - Fail to discover the device.
--*/
;