\r
#include "UfsPassThruHci.h"\r
\r
-#define UFS_PASS_THRU_SIG SIGNATURE_32 ('U', 'F', 'S', 'P')\r
+#define UFS_PASS_THRU_SIG SIGNATURE_32 ('U', 'F', 'S', 'P')\r
\r
//\r
// Lun 0~7 is for 8 common luns.\r
// Lun 10: BOOT\r
// Lun 11: RPMB\r
//\r
-#define UFS_MAX_LUNS 12\r
-#define UFS_WLUN_PREFIX 0xC1\r
-#define UFS_INIT_COMPLETION_TIMEOUT 600000\r
+#define UFS_MAX_LUNS 12\r
+#define UFS_WLUN_PREFIX 0xC1\r
+#define UFS_INIT_COMPLETION_TIMEOUT 600000\r
\r
typedef struct {\r
- UINT8 Lun[UFS_MAX_LUNS];\r
- UINT16 BitMask:12; // Bit 0~7 is 1/1 mapping to common luns. Bit 8~11 is 1/1 mapping to well-known luns.\r
- UINT16 Rsvd:4;\r
+ UINT8 Lun[UFS_MAX_LUNS];\r
+ UINT16 BitMask : 12; // Bit 0~7 is 1/1 mapping to common luns. Bit 8~11 is 1/1 mapping to well-known luns.\r
+ UINT16 Rsvd : 4;\r
} UFS_EXPOSED_LUNS;\r
\r
typedef struct _UFS_PASS_THRU_PRIVATE_DATA {\r
- UINT32 Signature;\r
- EFI_HANDLE Handle;\r
- EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;\r
- EFI_EXT_SCSI_PASS_THRU_PROTOCOL ExtScsiPassThru;\r
- EFI_UFS_DEVICE_CONFIG_PROTOCOL UfsDevConfig;\r
- EDKII_UFS_HOST_CONTROLLER_PROTOCOL *UfsHostController;\r
- UINTN UfsHcBase;\r
- EDKII_UFS_HC_INFO UfsHcInfo;\r
- EDKII_UFS_HC_DRIVER_INTERFACE UfsHcDriverInterface;\r
-\r
- UINT8 TaskTag;\r
-\r
- VOID *UtpTrlBase;\r
- UINT8 Nutrs;\r
- VOID *TrlMapping;\r
- VOID *UtpTmrlBase;\r
- UINT8 Nutmrs;\r
- VOID *TmrlMapping;\r
-\r
- UFS_EXPOSED_LUNS Luns;\r
+ UINT32 Signature;\r
+ EFI_HANDLE Handle;\r
+ EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;\r
+ EFI_EXT_SCSI_PASS_THRU_PROTOCOL ExtScsiPassThru;\r
+ EFI_UFS_DEVICE_CONFIG_PROTOCOL UfsDevConfig;\r
+ EDKII_UFS_HOST_CONTROLLER_PROTOCOL *UfsHostController;\r
+ UINTN UfsHcBase;\r
+ EDKII_UFS_HC_INFO UfsHcInfo;\r
+ EDKII_UFS_HC_DRIVER_INTERFACE UfsHcDriverInterface;\r
+\r
+ UINT8 TaskTag;\r
+\r
+ VOID *UtpTrlBase;\r
+ UINT8 Nutrs;\r
+ VOID *TrlMapping;\r
+ VOID *UtpTmrlBase;\r
+ UINT8 Nutmrs;\r
+ VOID *TmrlMapping;\r
+\r
+ UFS_EXPOSED_LUNS Luns;\r
\r
//\r
// For Non-blocking operation.\r
//\r
- EFI_EVENT TimerEvent;\r
- LIST_ENTRY Queue;\r
+ EFI_EVENT TimerEvent;\r
+ LIST_ENTRY Queue;\r
} UFS_PASS_THRU_PRIVATE_DATA;\r
\r
-#define UFS_PASS_THRU_TRANS_REQ_SIG SIGNATURE_32 ('U', 'F', 'S', 'T')\r
+#define UFS_PASS_THRU_TRANS_REQ_SIG SIGNATURE_32 ('U', 'F', 'S', 'T')\r
\r
typedef struct {\r
UINT32 Signature;\r
#define UFS_PASS_THRU_TRANS_REQ_FROM_THIS(a) \\r
CR(a, UFS_PASS_THRU_TRANS_REQ, TransferList, UFS_PASS_THRU_TRANS_REQ_SIG)\r
\r
-#define UFS_TIMEOUT EFI_TIMER_PERIOD_SECONDS(3)\r
-#define UFS_HC_ASYNC_TIMER EFI_TIMER_PERIOD_MILLISECONDS(1)\r
+#define UFS_TIMEOUT EFI_TIMER_PERIOD_SECONDS(3)\r
+#define UFS_HC_ASYNC_TIMER EFI_TIMER_PERIOD_MILLISECONDS(1)\r
\r
-#define ROUNDUP8(x) (((x) % 8 == 0) ? (x) : ((x) / 8 + 1) * 8)\r
+#define ROUNDUP8(x) (((x) % 8 == 0) ? (x) : ((x) / 8 + 1) * 8)\r
\r
-#define IS_ALIGNED(addr, size) (((UINTN) (addr) & (size - 1)) == 0)\r
+#define IS_ALIGNED(addr, size) (((UINTN) (addr) & (size - 1)) == 0)\r
\r
#define UFS_PASS_THRU_PRIVATE_DATA_FROM_THIS(a) \\r
CR (a, \\r
)\r
\r
typedef struct _UFS_DEVICE_MANAGEMENT_REQUEST_PACKET {\r
- UINT64 Timeout;\r
- VOID *DataBuffer;\r
- UINT8 Opcode;\r
- UINT8 DescId;\r
- UINT8 Index;\r
- UINT8 Selector;\r
- UINT32 TransferLength;\r
- UINT8 DataDirection;\r
+ UINT64 Timeout;\r
+ VOID *DataBuffer;\r
+ UINT8 Opcode;\r
+ UINT8 DescId;\r
+ UINT8 Index;\r
+ UINT8 Selector;\r
+ UINT32 TransferLength;\r
+ UINT8 DataDirection;\r
} UFS_DEVICE_MANAGEMENT_REQUEST_PACKET;\r
\r
//\r
// function prototype\r
//\r
+\r
/**\r
Tests to see if this driver supports a given controller. If a child device is provided,\r
it further tests to see if this driver supports creating a handle for the specified child device.\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
);\r
\r
//\r
// EFI Component Name Functions\r
//\r
+\r
/**\r
Retrieves a Unicode string that is the user readable name of the driver.\r
\r
OUT CHAR16 **DriverName\r
);\r
\r
-\r
/**\r
Retrieves a Unicode string that is the user readable name of the controller\r
that is being managed by a driver.\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE ChildHandle OPTIONAL,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **ControllerName\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruPassThru (\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
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruGetNextTargetLun (\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
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruBuildDevicePath (\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
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruGetTargetLun (\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
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruResetChannel (\r
- IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This\r
+ IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruResetTargetLun (\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
/**\r
EFI_STATUS\r
EFIAPI\r
UfsPassThruGetNextTarget (\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
/**\r
**/\r
EFI_STATUS\r
UfsControllerInit (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsControllerStop (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsAllocateAlignCommonBuffer (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN UINTN Size,\r
- OUT VOID **CmdDescHost,\r
- OUT EFI_PHYSICAL_ADDRESS *CmdDescPhyAddr,\r
- OUT VOID **CmdDescMapping\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN UINTN Size,\r
+ OUT VOID **CmdDescHost,\r
+ OUT EFI_PHYSICAL_ADDRESS *CmdDescPhyAddr,\r
+ OUT VOID **CmdDescMapping\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsSetFlag (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN UINT8 FlagId\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN UINT8 FlagId\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsReadFlag (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN UINT8 FlagId,\r
- OUT UINT8 *Value\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN UINT8 FlagId,\r
+ OUT UINT8 *Value\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsRwFlags (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN BOOLEAN Read,\r
- IN UINT8 FlagId,\r
- IN OUT UINT8 *Value\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 FlagId,\r
+ IN OUT UINT8 *Value\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsRwDeviceDesc (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN BOOLEAN Read,\r
- IN UINT8 DescId,\r
- IN UINT8 Index,\r
- IN UINT8 Selector,\r
- IN OUT VOID *Descriptor,\r
- IN OUT UINT32 *DescSize\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 DescId,\r
+ IN UINT8 Index,\r
+ IN UINT8 Selector,\r
+ IN OUT VOID *Descriptor,\r
+ IN OUT UINT32 *DescSize\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsRwAttributes (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN BOOLEAN Read,\r
- IN UINT8 AttrId,\r
- IN UINT8 Index,\r
- IN UINT8 Selector,\r
- IN OUT UINT32 *Attributes\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 AttrId,\r
+ IN UINT8 Index,\r
+ IN UINT8 Selector,\r
+ IN OUT UINT32 *Attributes\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
UfsExecNopCmds (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
ProcessAsyncTaskList (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SignalCallerEvent (\r
- IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
- IN UFS_PASS_THRU_TRANS_REQ *TransReq\r
+ IN UFS_PASS_THRU_PRIVATE_DATA *Private,\r
+ IN UFS_PASS_THRU_TRANS_REQ *TransReq\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UfsRwUfsDescriptor (\r
- IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
- IN BOOLEAN Read,\r
- IN UINT8 DescId,\r
- IN UINT8 Index,\r
- IN UINT8 Selector,\r
- IN OUT UINT8 *Descriptor,\r
- IN OUT UINT32 *DescSize\r
+ IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 DescId,\r
+ IN UINT8 Index,\r
+ IN UINT8 Selector,\r
+ IN OUT UINT8 *Descriptor,\r
+ IN OUT UINT32 *DescSize\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UfsRwUfsFlag (\r
- IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
- IN BOOLEAN Read,\r
- IN UINT8 FlagId,\r
- IN OUT UINT8 *Flag\r
+ IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 FlagId,\r
+ IN OUT UINT8 *Flag\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UfsRwUfsAttribute (\r
- IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
- IN BOOLEAN Read,\r
- IN UINT8 AttrId,\r
- IN UINT8 Index,\r
- IN UINT8 Selector,\r
- IN OUT UINT8 *Attribute,\r
- IN OUT UINT32 *AttrSize\r
+ IN EFI_UFS_DEVICE_CONFIG_PROTOCOL *This,\r
+ IN BOOLEAN Read,\r
+ IN UINT8 AttrId,\r
+ IN UINT8 Index,\r
+ IN UINT8 Selector,\r
+ IN OUT UINT8 *Attribute,\r
+ IN OUT UINT32 *AttrSize\r
);\r
\r
/**\r
IN UFS_PASS_THRU_PRIVATE_DATA *Private\r
);\r
\r
-extern EFI_COMPONENT_NAME_PROTOCOL gUfsPassThruComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gUfsPassThruComponentName2;\r
-extern EFI_DRIVER_BINDING_PROTOCOL gUfsPassThruDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gUfsPassThruComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gUfsPassThruComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL gUfsPassThruDriverBinding;\r
extern EDKII_UFS_HC_PLATFORM_PROTOCOL *mUfsHcPlatform;\r
\r
#endif\r