MdeModulePkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
committed by
mergify[bot]
parent
7c7184e201
commit
1436aea4d5
@@ -11,17 +11,17 @@
|
||||
//
|
||||
// Driver name table
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSdDxeDriverNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSdDxeDriverNameTable[] = {
|
||||
{ "eng;en", L"Edkii Sd Memory Card Device Driver" },
|
||||
{ NULL , NULL }
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
//
|
||||
// Controller name table
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSdDxeControllerNameTable[] = {
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSdDxeControllerNameTable[] = {
|
||||
{ "eng;en", L"Edkii Sd Host Controller" },
|
||||
{ NULL , NULL }
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
//
|
||||
@@ -36,9 +36,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gSdDxeComponentName =
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gSdDxeComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) SdDxeComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) SdDxeComponentNameGetControllerName,
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gSdDxeComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME)SdDxeComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)SdDxeComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
@@ -96,7 +96,6 @@ SdDxeComponentNameGetDriverName (
|
||||
DriverName,
|
||||
(BOOLEAN)(This == &gSdDxeComponentName)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,11 +169,11 @@ SdDxeComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -204,13 +203,14 @@ SdDxeComponentNameGetControllerName (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Get the child context
|
||||
//
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandle,
|
||||
&gEfiBlockIoProtocolGuid,
|
||||
(VOID **) &BlockIo,
|
||||
(VOID **)&BlockIo,
|
||||
gSdDxeDriverBinding.DriverBindingHandle,
|
||||
ChildHandle,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -219,7 +219,7 @@ SdDxeComponentNameGetControllerName (
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO (BlockIo);
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO (BlockIo);
|
||||
ControllerNameTable = Device->ControllerNameTable;
|
||||
}
|
||||
|
||||
@@ -231,4 +231,3 @@ SdDxeComponentNameGetControllerName (
|
||||
(BOOLEAN)(This == &gSdDxeComponentName)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -19,20 +19,24 @@
|
||||
VOID
|
||||
EFIAPI
|
||||
AsyncIoCallback (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
{
|
||||
SD_REQUEST *Request;
|
||||
SD_REQUEST *Request;
|
||||
|
||||
gBS->CloseEvent (Event);
|
||||
|
||||
Request = (SD_REQUEST *) Context;
|
||||
Request = (SD_REQUEST *)Context;
|
||||
|
||||
DEBUG_CODE_BEGIN ();
|
||||
DEBUG ((DEBUG_INFO, "Sd Async Request: CmdIndex[%d] Arg[%08x] %r\n",
|
||||
Request->SdMmcCmdBlk.CommandIndex, Request->SdMmcCmdBlk.CommandArgument,
|
||||
Request->Packet.TransactionStatus));
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
"Sd Async Request: CmdIndex[%d] Arg[%08x] %r\n",
|
||||
Request->SdMmcCmdBlk.CommandIndex,
|
||||
Request->SdMmcCmdBlk.CommandArgument,
|
||||
Request->Packet.TransactionStatus
|
||||
));
|
||||
DEBUG_CODE_END ();
|
||||
|
||||
if (EFI_ERROR (Request->Packet.TransactionStatus)) {
|
||||
@@ -61,8 +65,8 @@ AsyncIoCallback (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSetRca (
|
||||
IN SD_DEVICE *Device,
|
||||
OUT UINT16 *Rca
|
||||
IN SD_DEVICE *Device,
|
||||
OUT UINT16 *Rca
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -106,8 +110,8 @@ SdSetRca (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSelect (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -130,6 +134,7 @@ SdSelect (
|
||||
if (Rca != 0) {
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR1b;
|
||||
}
|
||||
|
||||
SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
|
||||
|
||||
Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
|
||||
@@ -151,9 +156,9 @@ SdSelect (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSendStatus (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT UINT32 *DevStatus
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT UINT32 *DevStatus
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -171,15 +176,16 @@ SdSendStatus (
|
||||
Packet.SdMmcStatusBlk = &SdMmcStatusBlk;
|
||||
Packet.Timeout = SD_GENERIC_TIMEOUT;
|
||||
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_STATUS;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR1;
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_STATUS;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR1;
|
||||
SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
|
||||
|
||||
Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
CopyMem (DevStatus, &SdMmcStatusBlk.Resp0, sizeof (UINT32));
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -197,9 +203,9 @@ SdSendStatus (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdGetCsd (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CSD *Csd
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CSD *Csd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -219,9 +225,9 @@ SdGetCsd (
|
||||
Packet.SdMmcStatusBlk = &SdMmcStatusBlk;
|
||||
Packet.Timeout = SD_GENERIC_TIMEOUT;
|
||||
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_CSD;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR2;
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_CSD;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR2;
|
||||
SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
|
||||
|
||||
Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
|
||||
@@ -230,7 +236,7 @@ SdGetCsd (
|
||||
//
|
||||
// For details, refer to SD Host Controller Simplified Spec 3.0 Table 2-12.
|
||||
//
|
||||
CopyMem (((UINT8*)Csd) + 1, &SdMmcStatusBlk.Resp0, sizeof (SD_CSD) - 1);
|
||||
CopyMem (((UINT8 *)Csd) + 1, &SdMmcStatusBlk.Resp0, sizeof (SD_CSD) - 1);
|
||||
}
|
||||
|
||||
return Status;
|
||||
@@ -250,9 +256,9 @@ SdGetCsd (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdGetCid (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CID *Cid
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CID *Cid
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -272,9 +278,9 @@ SdGetCid (
|
||||
Packet.SdMmcStatusBlk = &SdMmcStatusBlk;
|
||||
Packet.Timeout = SD_GENERIC_TIMEOUT;
|
||||
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_CID;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR2;
|
||||
SdMmcCmdBlk.CommandIndex = SD_SEND_CID;
|
||||
SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
|
||||
SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR2;
|
||||
SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
|
||||
|
||||
Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
|
||||
@@ -283,7 +289,7 @@ SdGetCid (
|
||||
//
|
||||
// For details, refer to SD Host Controller Simplified Spec 3.0 Table 2-12.
|
||||
//
|
||||
CopyMem (((UINT8*)Cid) + 1, &SdMmcStatusBlk.Resp0, sizeof (SD_CID) - 1);
|
||||
CopyMem (((UINT8 *)Cid) + 1, &SdMmcStatusBlk.Resp0, sizeof (SD_CID) - 1);
|
||||
}
|
||||
|
||||
return Status;
|
||||
@@ -310,19 +316,19 @@ SdGetCid (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdRwSingleBlock (
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA Lba,
|
||||
IN VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA Lba,
|
||||
IN VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *RwSingleBlkReq;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *RwSingleBlkReq;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
RwSingleBlkReq = NULL;
|
||||
PassThru = Device->Private->PassThru;
|
||||
@@ -334,7 +340,7 @@ SdRwSingleBlock (
|
||||
}
|
||||
|
||||
RwSingleBlkReq->Signature = SD_REQUEST_SIGNATURE;
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
InsertTailList (&Device->Queue, &RwSingleBlkReq->Link);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
RwSingleBlkReq->Packet.SdMmcCmdBlk = &RwSingleBlkReq->SdMmcCmdBlk;
|
||||
@@ -403,6 +409,7 @@ Error:
|
||||
if (RwSingleBlkReq->Event != NULL) {
|
||||
gBS->CloseEvent (RwSingleBlkReq->Event);
|
||||
}
|
||||
|
||||
FreePool (RwSingleBlkReq);
|
||||
}
|
||||
} else {
|
||||
@@ -441,19 +448,19 @@ Error:
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdRwMultiBlocks (
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA Lba,
|
||||
IN VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA Lba,
|
||||
IN VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_REQUEST *RwMultiBlkReq;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
SD_REQUEST *RwMultiBlkReq;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
RwMultiBlkReq = NULL;
|
||||
|
||||
@@ -466,7 +473,7 @@ SdRwMultiBlocks (
|
||||
}
|
||||
|
||||
RwMultiBlkReq->Signature = SD_REQUEST_SIGNATURE;
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
InsertTailList (&Device->Queue, &RwMultiBlkReq->Link);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
RwMultiBlkReq->Packet.SdMmcCmdBlk = &RwMultiBlkReq->SdMmcCmdBlk;
|
||||
@@ -535,6 +542,7 @@ Error:
|
||||
if (RwMultiBlkReq->Event != NULL) {
|
||||
gBS->CloseEvent (RwMultiBlkReq->Event);
|
||||
}
|
||||
|
||||
FreePool (RwMultiBlkReq);
|
||||
}
|
||||
} else {
|
||||
@@ -577,23 +585,23 @@ Error:
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdReadWrite (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT VOID *Buffer,
|
||||
IN UINTN BufferSize,
|
||||
IN BOOLEAN IsRead,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_BLOCK_IO_MEDIA *Media;
|
||||
UINTN BlockSize;
|
||||
UINTN BlockNum;
|
||||
UINTN IoAlign;
|
||||
UINTN Remaining;
|
||||
UINT32 MaxBlock;
|
||||
BOOLEAN LastRw;
|
||||
EFI_STATUS Status;
|
||||
EFI_BLOCK_IO_MEDIA *Media;
|
||||
UINTN BlockSize;
|
||||
UINTN BlockNum;
|
||||
UINTN IoAlign;
|
||||
UINTN Remaining;
|
||||
UINT32 MaxBlock;
|
||||
BOOLEAN LastRw;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
Media = &Device->BlockMedia;
|
||||
@@ -619,6 +627,7 @@ SdReadWrite (
|
||||
Token->TransactionStatus = EFI_SUCCESS;
|
||||
gBS->SignalEvent (Token->Event);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -627,13 +636,13 @@ SdReadWrite (
|
||||
return EFI_BAD_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
BlockNum = BufferSize / BlockSize;
|
||||
BlockNum = BufferSize / BlockSize;
|
||||
if ((Lba + BlockNum - 1) > Media->LastBlock) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
IoAlign = Media->IoAlign;
|
||||
if (IoAlign > 0 && (((UINTN) Buffer & (IoAlign - 1)) != 0)) {
|
||||
if ((IoAlign > 0) && (((UINTN)Buffer & (IoAlign - 1)) != 0)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
@@ -661,14 +670,22 @@ SdReadWrite (
|
||||
} else {
|
||||
Status = SdRwMultiBlocks (Device, Lba, Buffer, BufferSize, IsRead, Token, LastRw);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
DEBUG ((DEBUG_BLKIO, "Sd%a(): Lba 0x%x BlkNo 0x%x Event %p with %r\n",
|
||||
IsRead ? "Read" : "Write", Lba, BlockNum,
|
||||
(Token != NULL) ? Token->Event : NULL, Status));
|
||||
Lba += BlockNum;
|
||||
Buffer = (UINT8*)Buffer + BufferSize;
|
||||
|
||||
DEBUG ((
|
||||
DEBUG_BLKIO,
|
||||
"Sd%a(): Lba 0x%x BlkNo 0x%x Event %p with %r\n",
|
||||
IsRead ? "Read" : "Write",
|
||||
Lba,
|
||||
BlockNum,
|
||||
(Token != NULL) ? Token->Event : NULL,
|
||||
Status
|
||||
));
|
||||
Lba += BlockNum;
|
||||
Buffer = (UINT8 *)Buffer + BufferSize;
|
||||
Remaining -= BlockNum;
|
||||
}
|
||||
|
||||
@@ -689,13 +706,13 @@ SdReadWrite (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdReset (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO (This);
|
||||
|
||||
@@ -734,11 +751,11 @@ SdReadBlocks (
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO (This);
|
||||
|
||||
@@ -769,15 +786,15 @@ SdReadBlocks (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdWriteBlocks (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO (This);
|
||||
|
||||
@@ -798,7 +815,7 @@ SdWriteBlocks (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdFlushBlocks (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This
|
||||
)
|
||||
{
|
||||
//
|
||||
@@ -825,18 +842,19 @@ SdResetEx (
|
||||
IN BOOLEAN ExtendedVerification
|
||||
)
|
||||
{
|
||||
SD_DEVICE *Device;
|
||||
LIST_ENTRY *Link;
|
||||
LIST_ENTRY *NextLink;
|
||||
SD_REQUEST *Request;
|
||||
EFI_TPL OldTpl;
|
||||
SD_DEVICE *Device;
|
||||
LIST_ENTRY *Link;
|
||||
LIST_ENTRY *NextLink;
|
||||
SD_REQUEST *Request;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO2 (This);
|
||||
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
for (Link = GetFirstNode (&Device->Queue);
|
||||
!IsNull (&Device->Queue, Link);
|
||||
Link = NextLink) {
|
||||
Link = NextLink)
|
||||
{
|
||||
NextLink = GetNextNode (&Device->Queue, Link);
|
||||
RemoveEntryList (Link);
|
||||
|
||||
@@ -851,6 +869,7 @@ SdResetEx (
|
||||
|
||||
FreePool (Request);
|
||||
}
|
||||
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
@@ -885,16 +904,16 @@ SdResetEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdReadBlocksEx (
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO2 (This);
|
||||
|
||||
@@ -927,16 +946,16 @@ SdReadBlocksEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdWriteBlocksEx (
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_BLKIO2 (This);
|
||||
|
||||
@@ -965,7 +984,7 @@ SdFlushBlocksEx (
|
||||
//
|
||||
// Signal event and return directly.
|
||||
//
|
||||
if (Token != NULL && Token->Event != NULL) {
|
||||
if ((Token != NULL) && (Token->Event != NULL)) {
|
||||
Token->TransactionStatus = EFI_SUCCESS;
|
||||
gBS->SignalEvent (Token->Event);
|
||||
}
|
||||
@@ -989,16 +1008,16 @@ SdFlushBlocksEx (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdEraseBlockStart (
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA StartLba,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA StartLba,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlockStart;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlockStart;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
EraseBlockStart = NULL;
|
||||
PassThru = Device->Private->PassThru;
|
||||
@@ -1010,7 +1029,7 @@ SdEraseBlockStart (
|
||||
}
|
||||
|
||||
EraseBlockStart->Signature = SD_REQUEST_SIGNATURE;
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
InsertTailList (&Device->Queue, &EraseBlockStart->Link);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
EraseBlockStart->Packet.SdMmcCmdBlk = &EraseBlockStart->SdMmcCmdBlk;
|
||||
@@ -1060,6 +1079,7 @@ Error:
|
||||
if (EraseBlockStart->Event != NULL) {
|
||||
gBS->CloseEvent (EraseBlockStart->Event);
|
||||
}
|
||||
|
||||
FreePool (EraseBlockStart);
|
||||
}
|
||||
} else {
|
||||
@@ -1093,16 +1113,16 @@ Error:
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdEraseBlockEnd (
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA EndLba,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_LBA EndLba,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlockEnd;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlockEnd;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
EraseBlockEnd = NULL;
|
||||
PassThru = Device->Private->PassThru;
|
||||
@@ -1114,7 +1134,7 @@ SdEraseBlockEnd (
|
||||
}
|
||||
|
||||
EraseBlockEnd->Signature = SD_REQUEST_SIGNATURE;
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
InsertTailList (&Device->Queue, &EraseBlockEnd->Link);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
EraseBlockEnd->Packet.SdMmcCmdBlk = &EraseBlockEnd->SdMmcCmdBlk;
|
||||
@@ -1164,6 +1184,7 @@ Error:
|
||||
if (EraseBlockEnd->Event != NULL) {
|
||||
gBS->CloseEvent (EraseBlockEnd->Event);
|
||||
}
|
||||
|
||||
FreePool (EraseBlockEnd);
|
||||
}
|
||||
} else {
|
||||
@@ -1196,15 +1217,15 @@ Error:
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdEraseBlock (
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
IN SD_DEVICE *Device,
|
||||
IN EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN BOOLEAN IsEnd
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlock;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
SD_REQUEST *EraseBlock;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
EraseBlock = NULL;
|
||||
PassThru = Device->Private->PassThru;
|
||||
@@ -1216,7 +1237,7 @@ SdEraseBlock (
|
||||
}
|
||||
|
||||
EraseBlock->Signature = SD_REQUEST_SIGNATURE;
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
InsertTailList (&Device->Queue, &EraseBlock->Link);
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
EraseBlock->Packet.SdMmcCmdBlk = &EraseBlock->SdMmcCmdBlk;
|
||||
@@ -1260,6 +1281,7 @@ Error:
|
||||
if (EraseBlock->Event != NULL) {
|
||||
gBS->CloseEvent (EraseBlock->Event);
|
||||
}
|
||||
|
||||
FreePool (EraseBlock);
|
||||
}
|
||||
} else {
|
||||
@@ -1307,19 +1329,19 @@ Error:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdEraseBlocks (
|
||||
IN EFI_ERASE_BLOCK_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
||||
IN UINTN Size
|
||||
IN EFI_ERASE_BLOCK_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
||||
IN UINTN Size
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_BLOCK_IO_MEDIA *Media;
|
||||
UINTN BlockSize;
|
||||
UINTN BlockNum;
|
||||
EFI_LBA LastLba;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
EFI_BLOCK_IO_MEDIA *Media;
|
||||
UINTN BlockSize;
|
||||
UINTN BlockNum;
|
||||
EFI_LBA LastLba;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
Device = SD_DEVICE_DATA_FROM_ERASEBLK (This);
|
||||
@@ -1341,7 +1363,7 @@ SdEraseBlocks (
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
BlockNum = Size / BlockSize;
|
||||
BlockNum = Size / BlockSize;
|
||||
if ((Lba + BlockNum - 1) > Media->LastBlock) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
@@ -1352,17 +1374,17 @@ SdEraseBlocks (
|
||||
|
||||
LastLba = Lba + BlockNum - 1;
|
||||
|
||||
Status = SdEraseBlockStart (Device, Lba, (EFI_BLOCK_IO2_TOKEN*)Token, FALSE);
|
||||
Status = SdEraseBlockStart (Device, Lba, (EFI_BLOCK_IO2_TOKEN *)Token, FALSE);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = SdEraseBlockEnd (Device, LastLba, (EFI_BLOCK_IO2_TOKEN*)Token, FALSE);
|
||||
Status = SdEraseBlockEnd (Device, LastLba, (EFI_BLOCK_IO2_TOKEN *)Token, FALSE);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = SdEraseBlock (Device, (EFI_BLOCK_IO2_TOKEN*)Token, TRUE);
|
||||
Status = SdEraseBlock (Device, (EFI_BLOCK_IO2_TOKEN *)Token, TRUE);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
@@ -26,8 +26,8 @@
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdReset (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -56,7 +56,7 @@ SdReadBlocks (
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -82,11 +82,11 @@ SdReadBlocks (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdWriteBlocks (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -102,7 +102,7 @@ SdWriteBlocks (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdFlushBlocks (
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This
|
||||
IN EFI_BLOCK_IO_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -152,12 +152,12 @@ SdResetEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdReadBlocksEx (
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -185,12 +185,12 @@ SdReadBlocksEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdWriteBlocksEx (
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||
IN UINTN BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -241,12 +241,11 @@ SdFlushBlocksEx (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdEraseBlocks (
|
||||
IN EFI_ERASE_BLOCK_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
||||
IN UINTN Size
|
||||
IN EFI_ERASE_BLOCK_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA Lba,
|
||||
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
||||
IN UINTN Size
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -32,8 +32,8 @@ SdDiskInfoInquiry (
|
||||
IN OUT UINT32 *InquiryDataSize
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
|
||||
Device = SD_DEVICE_DATA_FROM_DISKINFO (This);
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
//
|
||||
// SdDxe Driver Binding Protocol Instance
|
||||
//
|
||||
EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding = {
|
||||
EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding = {
|
||||
SdDxeDriverBindingSupported,
|
||||
SdDxeDriverBindingStart,
|
||||
SdDxeDriverBindingStop,
|
||||
@@ -26,7 +26,7 @@ EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding = {
|
||||
//
|
||||
// Template for SD_DEVICE data structure.
|
||||
//
|
||||
SD_DEVICE mSdDeviceTemplate = {
|
||||
SD_DEVICE mSdDeviceTemplate = {
|
||||
SD_DEVICE_SIGNATURE, // Signature
|
||||
NULL, // Handle
|
||||
NULL, // DevicePath
|
||||
@@ -99,41 +99,42 @@ DumpCsd (
|
||||
IN SD_CSD *Csd
|
||||
)
|
||||
{
|
||||
SD_CSD2 *Csd2;
|
||||
SD_CSD2 *Csd2;
|
||||
|
||||
DEBUG((DEBUG_INFO, "== Dump Sd Csd Register==\n"));
|
||||
DEBUG((DEBUG_INFO, " CSD structure 0x%x\n", Csd->CsdStructure));
|
||||
DEBUG((DEBUG_INFO, " Data read access-time 1 0x%x\n", Csd->Taac));
|
||||
DEBUG((DEBUG_INFO, " Data read access-time 2 0x%x\n", Csd->Nsac));
|
||||
DEBUG((DEBUG_INFO, " Max. bus clock frequency 0x%x\n", Csd->TranSpeed));
|
||||
DEBUG((DEBUG_INFO, " Device command classes 0x%x\n", Csd->Ccc));
|
||||
DEBUG((DEBUG_INFO, " Max. read data block length 0x%x\n", Csd->ReadBlLen));
|
||||
DEBUG((DEBUG_INFO, " Partial blocks for read allowed 0x%x\n", Csd->ReadBlPartial));
|
||||
DEBUG((DEBUG_INFO, " Write block misalignment 0x%x\n", Csd->WriteBlkMisalign));
|
||||
DEBUG((DEBUG_INFO, " Read block misalignment 0x%x\n", Csd->ReadBlkMisalign));
|
||||
DEBUG((DEBUG_INFO, " DSR implemented 0x%x\n", Csd->DsrImp));
|
||||
DEBUG ((DEBUG_INFO, "== Dump Sd Csd Register==\n"));
|
||||
DEBUG ((DEBUG_INFO, " CSD structure 0x%x\n", Csd->CsdStructure));
|
||||
DEBUG ((DEBUG_INFO, " Data read access-time 1 0x%x\n", Csd->Taac));
|
||||
DEBUG ((DEBUG_INFO, " Data read access-time 2 0x%x\n", Csd->Nsac));
|
||||
DEBUG ((DEBUG_INFO, " Max. bus clock frequency 0x%x\n", Csd->TranSpeed));
|
||||
DEBUG ((DEBUG_INFO, " Device command classes 0x%x\n", Csd->Ccc));
|
||||
DEBUG ((DEBUG_INFO, " Max. read data block length 0x%x\n", Csd->ReadBlLen));
|
||||
DEBUG ((DEBUG_INFO, " Partial blocks for read allowed 0x%x\n", Csd->ReadBlPartial));
|
||||
DEBUG ((DEBUG_INFO, " Write block misalignment 0x%x\n", Csd->WriteBlkMisalign));
|
||||
DEBUG ((DEBUG_INFO, " Read block misalignment 0x%x\n", Csd->ReadBlkMisalign));
|
||||
DEBUG ((DEBUG_INFO, " DSR implemented 0x%x\n", Csd->DsrImp));
|
||||
if (Csd->CsdStructure == 0) {
|
||||
DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd->CSizeLow | (Csd->CSizeHigh << 2)));
|
||||
DEBUG((DEBUG_INFO, " Max. read current @ VDD min 0x%x\n", Csd->VddRCurrMin));
|
||||
DEBUG((DEBUG_INFO, " Max. read current @ VDD max 0x%x\n", Csd->VddRCurrMax));
|
||||
DEBUG((DEBUG_INFO, " Max. write current @ VDD min 0x%x\n", Csd->VddWCurrMin));
|
||||
DEBUG((DEBUG_INFO, " Max. write current @ VDD max 0x%x\n", Csd->VddWCurrMax));
|
||||
DEBUG ((DEBUG_INFO, " Device size 0x%x\n", Csd->CSizeLow | (Csd->CSizeHigh << 2)));
|
||||
DEBUG ((DEBUG_INFO, " Max. read current @ VDD min 0x%x\n", Csd->VddRCurrMin));
|
||||
DEBUG ((DEBUG_INFO, " Max. read current @ VDD max 0x%x\n", Csd->VddRCurrMax));
|
||||
DEBUG ((DEBUG_INFO, " Max. write current @ VDD min 0x%x\n", Csd->VddWCurrMin));
|
||||
DEBUG ((DEBUG_INFO, " Max. write current @ VDD max 0x%x\n", Csd->VddWCurrMax));
|
||||
} else {
|
||||
Csd2 = (SD_CSD2*)(VOID*)Csd;
|
||||
DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd2->CSizeLow | (Csd->CSizeHigh << 16)));
|
||||
Csd2 = (SD_CSD2 *)(VOID *)Csd;
|
||||
DEBUG ((DEBUG_INFO, " Device size 0x%x\n", Csd2->CSizeLow | (Csd->CSizeHigh << 16)));
|
||||
}
|
||||
DEBUG((DEBUG_INFO, " Erase sector size 0x%x\n", Csd->SectorSize));
|
||||
DEBUG((DEBUG_INFO, " Erase single block enable 0x%x\n", Csd->EraseBlkEn));
|
||||
DEBUG((DEBUG_INFO, " Write protect group size 0x%x\n", Csd->WpGrpSize));
|
||||
DEBUG((DEBUG_INFO, " Write protect group enable 0x%x\n", Csd->WpGrpEnable));
|
||||
DEBUG((DEBUG_INFO, " Write speed factor 0x%x\n", Csd->R2WFactor));
|
||||
DEBUG((DEBUG_INFO, " Max. write data block length 0x%x\n", Csd->WriteBlLen));
|
||||
DEBUG((DEBUG_INFO, " Partial blocks for write allowed 0x%x\n", Csd->WriteBlPartial));
|
||||
DEBUG((DEBUG_INFO, " File format group 0x%x\n", Csd->FileFormatGrp));
|
||||
DEBUG((DEBUG_INFO, " Copy flag (OTP) 0x%x\n", Csd->Copy));
|
||||
DEBUG((DEBUG_INFO, " Permanent write protection 0x%x\n", Csd->PermWriteProtect));
|
||||
DEBUG((DEBUG_INFO, " Temporary write protection 0x%x\n", Csd->TmpWriteProtect));
|
||||
DEBUG((DEBUG_INFO, " File format 0x%x\n", Csd->FileFormat));
|
||||
|
||||
DEBUG ((DEBUG_INFO, " Erase sector size 0x%x\n", Csd->SectorSize));
|
||||
DEBUG ((DEBUG_INFO, " Erase single block enable 0x%x\n", Csd->EraseBlkEn));
|
||||
DEBUG ((DEBUG_INFO, " Write protect group size 0x%x\n", Csd->WpGrpSize));
|
||||
DEBUG ((DEBUG_INFO, " Write protect group enable 0x%x\n", Csd->WpGrpEnable));
|
||||
DEBUG ((DEBUG_INFO, " Write speed factor 0x%x\n", Csd->R2WFactor));
|
||||
DEBUG ((DEBUG_INFO, " Max. write data block length 0x%x\n", Csd->WriteBlLen));
|
||||
DEBUG ((DEBUG_INFO, " Partial blocks for write allowed 0x%x\n", Csd->WriteBlPartial));
|
||||
DEBUG ((DEBUG_INFO, " File format group 0x%x\n", Csd->FileFormatGrp));
|
||||
DEBUG ((DEBUG_INFO, " Copy flag (OTP) 0x%x\n", Csd->Copy));
|
||||
DEBUG ((DEBUG_INFO, " Permanent write protection 0x%x\n", Csd->PermWriteProtect));
|
||||
DEBUG ((DEBUG_INFO, " Temporary write protection 0x%x\n", Csd->TmpWriteProtect));
|
||||
DEBUG ((DEBUG_INFO, " File format 0x%x\n", Csd->FileFormat));
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -149,8 +150,8 @@ DumpCsd (
|
||||
**/
|
||||
EFI_STATUS
|
||||
GetSdModelName (
|
||||
IN OUT SD_DEVICE *Device,
|
||||
IN SD_CID *Cid
|
||||
IN OUT SD_DEVICE *Device,
|
||||
IN SD_CID *Cid
|
||||
)
|
||||
{
|
||||
CHAR8 String[SD_MODEL_NAME_MAX_LEN];
|
||||
@@ -178,19 +179,19 @@ GetSdModelName (
|
||||
**/
|
||||
EFI_STATUS
|
||||
DiscoverUserArea (
|
||||
IN SD_DEVICE *Device
|
||||
IN SD_DEVICE *Device
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_CSD *Csd;
|
||||
SD_CSD2 *Csd2;
|
||||
SD_CID *Cid;
|
||||
UINT64 Capacity;
|
||||
UINT32 DevStatus;
|
||||
UINT16 Rca;
|
||||
UINT32 CSize;
|
||||
UINT32 CSizeMul;
|
||||
UINT32 ReadBlLen;
|
||||
EFI_STATUS Status;
|
||||
SD_CSD *Csd;
|
||||
SD_CSD2 *Csd2;
|
||||
SD_CID *Cid;
|
||||
UINT64 Capacity;
|
||||
UINT32 DevStatus;
|
||||
UINT16 Rca;
|
||||
UINT32 CSize;
|
||||
UINT32 CSizeMul;
|
||||
UINT32 ReadBlLen;
|
||||
|
||||
//
|
||||
// Deselect the device to force it enter stby mode.
|
||||
@@ -210,6 +211,7 @@ DiscoverUserArea (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
DumpCsd (Csd);
|
||||
|
||||
Cid = &Device->Cid;
|
||||
@@ -217,6 +219,7 @@ DiscoverUserArea (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
GetSdModelName (Device, Cid);
|
||||
|
||||
Status = SdSelect (Device, Rca);
|
||||
@@ -232,15 +235,15 @@ DiscoverUserArea (
|
||||
|
||||
if (Csd->CsdStructure == 0) {
|
||||
Device->SectorAddressing = FALSE;
|
||||
CSize = (Csd->CSizeHigh << 2 | Csd->CSizeLow) + 1;
|
||||
CSizeMul = (1 << (Csd->CSizeMul + 2));
|
||||
ReadBlLen = (1 << (Csd->ReadBlLen));
|
||||
Capacity = MultU64x32 (MultU64x32 ((UINT64)CSize, CSizeMul), ReadBlLen);
|
||||
CSize = (Csd->CSizeHigh << 2 | Csd->CSizeLow) + 1;
|
||||
CSizeMul = (1 << (Csd->CSizeMul + 2));
|
||||
ReadBlLen = (1 << (Csd->ReadBlLen));
|
||||
Capacity = MultU64x32 (MultU64x32 ((UINT64)CSize, CSizeMul), ReadBlLen);
|
||||
} else {
|
||||
Device->SectorAddressing = TRUE;
|
||||
Csd2 = (SD_CSD2*)(VOID*)Csd;
|
||||
CSize = (Csd2->CSizeHigh << 16 | Csd2->CSizeLow) + 1;
|
||||
Capacity = MultU64x32 ((UINT64)CSize, SIZE_512KB);
|
||||
Csd2 = (SD_CSD2 *)(VOID *)Csd;
|
||||
CSize = (Csd2->CSizeHigh << 16 | Csd2->CSizeLow) + 1;
|
||||
Capacity = MultU64x32 ((UINT64)CSize, SIZE_512KB);
|
||||
}
|
||||
|
||||
Device->BlockIo.Media = &Device->BlockMedia;
|
||||
@@ -279,23 +282,23 @@ DiscoverUserArea (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
DiscoverSdDevice (
|
||||
IN SD_DRIVER_PRIVATE_DATA *Private,
|
||||
IN UINT8 Slot
|
||||
IN SD_DRIVER_PRIVATE_DATA *Private,
|
||||
IN UINT8 Slot
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
|
||||
EFI_HANDLE DeviceHandle;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_STATUS Status;
|
||||
SD_DEVICE *Device;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;
|
||||
EFI_HANDLE DeviceHandle;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
|
||||
Device = NULL;
|
||||
DevicePath = NULL;
|
||||
NewDevicePath = NULL;
|
||||
RemainingDevicePath = NULL;
|
||||
PassThru = Private->PassThru;
|
||||
PassThru = Private->PassThru;
|
||||
|
||||
//
|
||||
// Build Device Path
|
||||
@@ -305,7 +308,7 @@ DiscoverSdDevice (
|
||||
Slot,
|
||||
&DevicePath
|
||||
);
|
||||
if (EFI_ERROR(Status)) {
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -324,10 +327,10 @@ DiscoverSdDevice (
|
||||
goto Error;
|
||||
}
|
||||
|
||||
DeviceHandle = NULL;
|
||||
DeviceHandle = NULL;
|
||||
RemainingDevicePath = NewDevicePath;
|
||||
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &DeviceHandle);
|
||||
if (!EFI_ERROR (Status) && (DeviceHandle != NULL) && IsDevicePathEnd(RemainingDevicePath)) {
|
||||
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &DeviceHandle);
|
||||
if (!EFI_ERROR (Status) && (DeviceHandle != NULL) && IsDevicePathEnd (RemainingDevicePath)) {
|
||||
//
|
||||
// The device has been started, directly return to fast boot.
|
||||
//
|
||||
@@ -353,7 +356,7 @@ DiscoverSdDevice (
|
||||
// Expose user area in the Sd memory card to upper layer.
|
||||
//
|
||||
Status = DiscoverUserArea (Device);
|
||||
if (EFI_ERROR(Status)) {
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Error;
|
||||
}
|
||||
|
||||
@@ -392,7 +395,7 @@ DiscoverSdDevice (
|
||||
gBS->OpenProtocol (
|
||||
Private->Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID **) &(Private->PassThru),
|
||||
(VOID **)&(Private->PassThru),
|
||||
Private->DriverBindingHandle,
|
||||
Device->Handle,
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
@@ -458,15 +461,15 @@ Error:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
UINT8 Slot;
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
UINT8 Slot;
|
||||
|
||||
//
|
||||
// Test EFI_SD_MMC_PASS_THRU_PROTOCOL on the controller handle.
|
||||
@@ -474,7 +477,7 @@ SdDxeDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID**) &PassThru,
|
||||
(VOID **)&PassThru,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
@@ -523,7 +526,7 @@ SdDxeDriverBindingSupported (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath,
|
||||
(VOID **)&ParentDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -569,27 +572,27 @@ SdDxeDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
UINT8 Slot;
|
||||
EFI_STATUS Status;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
UINT8 Slot;
|
||||
|
||||
Private = NULL;
|
||||
PassThru = NULL;
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID **) &PassThru,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
);
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID **)&PassThru,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||
);
|
||||
if ((EFI_ERROR (Status)) && (Status != EFI_ALREADY_STARTED)) {
|
||||
return Status;
|
||||
}
|
||||
@@ -607,7 +610,7 @@ SdDxeDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID **) &ParentDevicePath,
|
||||
(VOID **)&ParentDevicePath,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -631,7 +634,7 @@ SdDxeDriverBindingStart (
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
(VOID **) &Private,
|
||||
(VOID **)&Private,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -676,14 +679,15 @@ Error:
|
||||
|
||||
if (Private != NULL) {
|
||||
gBS->UninstallMultipleProtocolInterfaces (
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
Private,
|
||||
NULL
|
||||
);
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
Private,
|
||||
NULL
|
||||
);
|
||||
FreePool (Private);
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
@@ -716,30 +720,30 @@ Error:
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
BOOLEAN AllChildrenStopped;
|
||||
UINTN Index;
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
SD_DEVICE *Device;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_BLOCK_IO2_PROTOCOL *BlockIo2;
|
||||
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
||||
LIST_ENTRY *Link;
|
||||
LIST_ENTRY *NextLink;
|
||||
SD_REQUEST *Request;
|
||||
EFI_TPL OldTpl;
|
||||
EFI_STATUS Status;
|
||||
BOOLEAN AllChildrenStopped;
|
||||
UINTN Index;
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
SD_DEVICE *Device;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_BLOCK_IO2_PROTOCOL *BlockIo2;
|
||||
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
||||
LIST_ENTRY *Link;
|
||||
LIST_ENTRY *NextLink;
|
||||
SD_REQUEST *Request;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
if (NumberOfChildren == 0) {
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
(VOID **) &Private,
|
||||
(VOID **)&Private,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -749,16 +753,16 @@ SdDxeDriverBindingStop (
|
||||
}
|
||||
|
||||
gBS->UninstallProtocolInterface (
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
Private
|
||||
);
|
||||
Controller,
|
||||
&gEfiCallerIdGuid,
|
||||
Private
|
||||
);
|
||||
gBS->CloseProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
This->DriverBindingHandle,
|
||||
Controller
|
||||
);
|
||||
|
||||
FreePool (Private);
|
||||
|
||||
@@ -770,19 +774,19 @@ SdDxeDriverBindingStop (
|
||||
for (Index = 0; Index < NumberOfChildren; Index++) {
|
||||
BlockIo = NULL;
|
||||
BlockIo2 = NULL;
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandleBuffer[Index],
|
||||
&gEfiBlockIoProtocolGuid,
|
||||
(VOID **) &BlockIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
);
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandleBuffer[Index],
|
||||
&gEfiBlockIoProtocolGuid,
|
||||
(VOID **)&BlockIo,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Status = gBS->OpenProtocol (
|
||||
ChildHandleBuffer[Index],
|
||||
&gEfiBlockIo2ProtocolGuid,
|
||||
(VOID **) &BlockIo2,
|
||||
(VOID **)&BlockIo2,
|
||||
This->DriverBindingHandle,
|
||||
Controller,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||
@@ -806,7 +810,8 @@ SdDxeDriverBindingStop (
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
for (Link = GetFirstNode (&Device->Queue);
|
||||
!IsNull (&Device->Queue, Link);
|
||||
Link = NextLink) {
|
||||
Link = NextLink)
|
||||
{
|
||||
NextLink = GetNextNode (&Device->Queue, Link);
|
||||
RemoveEntryList (Link);
|
||||
|
||||
@@ -821,6 +826,7 @@ SdDxeDriverBindingStop (
|
||||
|
||||
FreePool (Request);
|
||||
}
|
||||
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
|
||||
//
|
||||
@@ -849,14 +855,14 @@ SdDxeDriverBindingStop (
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
AllChildrenStopped = FALSE;
|
||||
gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID **)&PassThru,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index],
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
);
|
||||
gBS->OpenProtocol (
|
||||
Controller,
|
||||
&gEfiSdMmcPassThruProtocolGuid,
|
||||
(VOID **)&PassThru,
|
||||
This->DriverBindingHandle,
|
||||
ChildHandleBuffer[Index],
|
||||
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
|
||||
);
|
||||
} else {
|
||||
FreePool (Device->DevicePath);
|
||||
FreeUnicodeStringTable (Device->ControllerNameTable);
|
||||
@@ -884,11 +890,11 @@ SdDxeDriverBindingStop (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeSdDxe (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Install driver model protocol(s).
|
||||
|
@@ -39,11 +39,11 @@
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gSdDxeComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gSdDxeComponentName2;
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gSdDxeComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gSdDxeComponentName2;
|
||||
|
||||
#define SD_DEVICE_SIGNATURE SIGNATURE_32 ('S', 'D', 't', 'f')
|
||||
#define SD_DEVICE_SIGNATURE SIGNATURE_32 ('S', 'D', 't', 'f')
|
||||
|
||||
#define SD_DEVICE_DATA_FROM_BLKIO(a) \
|
||||
CR(a, SD_DEVICE, BlockIo, SD_DEVICE_SIGNATURE)
|
||||
@@ -60,11 +60,11 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gSdDxeComponentName2;
|
||||
//
|
||||
// Take 2.5 seconds as generic time out value, 1 microsecond as unit.
|
||||
//
|
||||
#define SD_GENERIC_TIMEOUT 2500 * 1000
|
||||
#define SD_GENERIC_TIMEOUT 2500 * 1000
|
||||
|
||||
#define SD_REQUEST_SIGNATURE SIGNATURE_32 ('S', 'D', 'R', 'E')
|
||||
#define SD_REQUEST_SIGNATURE SIGNATURE_32 ('S', 'D', 'R', 'E')
|
||||
|
||||
#define SD_MODEL_NAME_MAX_LEN 32
|
||||
#define SD_MODEL_NAME_MAX_LEN 32
|
||||
|
||||
typedef struct _SD_DEVICE SD_DEVICE;
|
||||
typedef struct _SD_DRIVER_PRIVATE_DATA SD_DRIVER_PRIVATE_DATA;
|
||||
@@ -73,40 +73,40 @@ typedef struct _SD_DRIVER_PRIVATE_DATA SD_DRIVER_PRIVATE_DATA;
|
||||
// Asynchronous I/O request.
|
||||
//
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
LIST_ENTRY Link;
|
||||
UINT32 Signature;
|
||||
LIST_ENTRY Link;
|
||||
|
||||
EFI_SD_MMC_COMMAND_BLOCK SdMmcCmdBlk;
|
||||
EFI_SD_MMC_STATUS_BLOCK SdMmcStatusBlk;
|
||||
EFI_SD_MMC_PASS_THRU_COMMAND_PACKET Packet;
|
||||
EFI_SD_MMC_COMMAND_BLOCK SdMmcCmdBlk;
|
||||
EFI_SD_MMC_STATUS_BLOCK SdMmcStatusBlk;
|
||||
EFI_SD_MMC_PASS_THRU_COMMAND_PACKET Packet;
|
||||
|
||||
BOOLEAN IsEnd;
|
||||
BOOLEAN IsEnd;
|
||||
|
||||
EFI_BLOCK_IO2_TOKEN *Token;
|
||||
EFI_BLOCK_IO2_TOKEN *Token;
|
||||
|
||||
EFI_EVENT Event;
|
||||
EFI_EVENT Event;
|
||||
} SD_REQUEST;
|
||||
|
||||
#define SD_REQUEST_FROM_LINK(a) \
|
||||
CR(a, SD_REQUEST, Link, SD_REQUEST_SIGNATURE)
|
||||
|
||||
struct _SD_DEVICE {
|
||||
UINT32 Signature;
|
||||
EFI_HANDLE Handle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
UINT8 Slot;
|
||||
BOOLEAN SectorAddressing;
|
||||
EFI_BLOCK_IO_PROTOCOL BlockIo;
|
||||
EFI_BLOCK_IO2_PROTOCOL BlockIo2;
|
||||
EFI_BLOCK_IO_MEDIA BlockMedia;
|
||||
EFI_ERASE_BLOCK_PROTOCOL EraseBlock;
|
||||
EFI_DISK_INFO_PROTOCOL DiskInfo;
|
||||
UINT32 Signature;
|
||||
EFI_HANDLE Handle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
UINT8 Slot;
|
||||
BOOLEAN SectorAddressing;
|
||||
EFI_BLOCK_IO_PROTOCOL BlockIo;
|
||||
EFI_BLOCK_IO2_PROTOCOL BlockIo2;
|
||||
EFI_BLOCK_IO_MEDIA BlockMedia;
|
||||
EFI_ERASE_BLOCK_PROTOCOL EraseBlock;
|
||||
EFI_DISK_INFO_PROTOCOL DiskInfo;
|
||||
|
||||
LIST_ENTRY Queue;
|
||||
LIST_ENTRY Queue;
|
||||
|
||||
SD_CSD Csd;
|
||||
SD_CID Cid;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
SD_CSD Csd;
|
||||
SD_CID Cid;
|
||||
EFI_UNICODE_STRING_TABLE *ControllerNameTable;
|
||||
//
|
||||
// The model name consists of three fields in CID register
|
||||
// 1) OEM/Application ID (2 bytes)
|
||||
@@ -114,19 +114,19 @@ struct _SD_DEVICE {
|
||||
// 3) Product Serial Number (4 bytes)
|
||||
// The delimiters of these fields are whitespace.
|
||||
//
|
||||
CHAR16 ModelName[SD_MODEL_NAME_MAX_LEN];
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
} ;
|
||||
CHAR16 ModelName[SD_MODEL_NAME_MAX_LEN];
|
||||
SD_DRIVER_PRIVATE_DATA *Private;
|
||||
};
|
||||
|
||||
//
|
||||
// SD DXE driver private data structure
|
||||
//
|
||||
struct _SD_DRIVER_PRIVATE_DATA {
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_HANDLE Controller;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_HANDLE DriverBindingHandle;
|
||||
} ;
|
||||
EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
|
||||
EFI_HANDLE Controller;
|
||||
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
|
||||
EFI_HANDLE DriverBindingHandle;
|
||||
};
|
||||
|
||||
/**
|
||||
Tests to see if this driver supports a given controller. If a child device is provided,
|
||||
@@ -173,9 +173,9 @@ struct _SD_DRIVER_PRIVATE_DATA {
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -216,9 +216,9 @@ SdDxeDriverBindingSupported (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -250,10 +250,10 @@ SdDxeDriverBindingStart (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -374,11 +374,11 @@ SdDxeComponentNameGetDriverName (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SdDxeComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -394,8 +394,8 @@ SdDxeComponentNameGetControllerName (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSetRca (
|
||||
IN SD_DEVICE *Device,
|
||||
OUT UINT16 *Rca
|
||||
IN SD_DEVICE *Device,
|
||||
OUT UINT16 *Rca
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -411,8 +411,8 @@ SdSetRca (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSelect (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -428,9 +428,9 @@ SdSelect (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdSendStatus (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT UINT32 *DevStatus
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT UINT32 *DevStatus
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -447,9 +447,9 @@ SdSendStatus (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdGetCsd (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CSD *Csd
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CSD *Csd
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -466,10 +466,9 @@ SdGetCsd (
|
||||
**/
|
||||
EFI_STATUS
|
||||
SdGetCid (
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CID *Cid
|
||||
IN SD_DEVICE *Device,
|
||||
IN UINT16 Rca,
|
||||
OUT SD_CID *Cid
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user