It produces BlockIo and BlockIo2 protocols to allow upper layer\r
access the SD memory card device.\r
\r
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
// SdDxe Driver Binding Protocol Instance\r
//\r
-EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding = {\r
+EFI_DRIVER_BINDING_PROTOCOL gSdDxeDriverBinding = {\r
SdDxeDriverBindingSupported,\r
SdDxeDriverBindingStart,\r
SdDxeDriverBindingStop,\r
//\r
// Template for SD_DEVICE data structure.\r
//\r
-SD_DEVICE mSdDeviceTemplate = {\r
+SD_DEVICE mSdDeviceTemplate = {\r
SD_DEVICE_SIGNATURE, // Signature\r
NULL, // Handle\r
NULL, // DevicePath\r
1,\r
SdEraseBlocks\r
},\r
+ { // DiskInfo\r
+ EFI_DISK_INFO_SD_MMC_INTERFACE_GUID,\r
+ SdDiskInfoInquiry,\r
+ SdDiskInfoIdentify,\r
+ SdDiskInfoSenseData,\r
+ SdDiskInfoWhichIde\r
+ },\r
{ // Queue\r
NULL,\r
NULL\r
IN SD_CSD *Csd\r
)\r
{\r
- SD_CSD2 *Csd2;\r
-\r
- DEBUG((DEBUG_INFO, "== Dump Sd Csd Register==\n"));\r
- DEBUG((DEBUG_INFO, " CSD structure 0x%x\n", Csd->CsdStructure));\r
- DEBUG((DEBUG_INFO, " Data read access-time 1 0x%x\n", Csd->Taac));\r
- DEBUG((DEBUG_INFO, " Data read access-time 2 0x%x\n", Csd->Nsac));\r
- DEBUG((DEBUG_INFO, " Max. bus clock frequency 0x%x\n", Csd->TranSpeed));\r
- DEBUG((DEBUG_INFO, " Device command classes 0x%x\n", Csd->Ccc));\r
- DEBUG((DEBUG_INFO, " Max. read data block length 0x%x\n", Csd->ReadBlLen));\r
- DEBUG((DEBUG_INFO, " Partial blocks for read allowed 0x%x\n", Csd->ReadBlPartial));\r
- DEBUG((DEBUG_INFO, " Write block misalignment 0x%x\n", Csd->WriteBlkMisalign));\r
- DEBUG((DEBUG_INFO, " Read block misalignment 0x%x\n", Csd->ReadBlkMisalign));\r
- DEBUG((DEBUG_INFO, " DSR implemented 0x%x\n", Csd->DsrImp));\r
+ SD_CSD2 *Csd2;\r
+\r
+ DEBUG ((DEBUG_INFO, "== Dump Sd Csd Register==\n"));\r
+ DEBUG ((DEBUG_INFO, " CSD structure 0x%x\n", Csd->CsdStructure));\r
+ DEBUG ((DEBUG_INFO, " Data read access-time 1 0x%x\n", Csd->Taac));\r
+ DEBUG ((DEBUG_INFO, " Data read access-time 2 0x%x\n", Csd->Nsac));\r
+ DEBUG ((DEBUG_INFO, " Max. bus clock frequency 0x%x\n", Csd->TranSpeed));\r
+ DEBUG ((DEBUG_INFO, " Device command classes 0x%x\n", Csd->Ccc));\r
+ DEBUG ((DEBUG_INFO, " Max. read data block length 0x%x\n", Csd->ReadBlLen));\r
+ DEBUG ((DEBUG_INFO, " Partial blocks for read allowed 0x%x\n", Csd->ReadBlPartial));\r
+ DEBUG ((DEBUG_INFO, " Write block misalignment 0x%x\n", Csd->WriteBlkMisalign));\r
+ DEBUG ((DEBUG_INFO, " Read block misalignment 0x%x\n", Csd->ReadBlkMisalign));\r
+ DEBUG ((DEBUG_INFO, " DSR implemented 0x%x\n", Csd->DsrImp));\r
if (Csd->CsdStructure == 0) {\r
- DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd->CSizeLow | (Csd->CSizeHigh << 2)));\r
- DEBUG((DEBUG_INFO, " Max. read current @ VDD min 0x%x\n", Csd->VddRCurrMin));\r
- DEBUG((DEBUG_INFO, " Max. read current @ VDD max 0x%x\n", Csd->VddRCurrMax));\r
- DEBUG((DEBUG_INFO, " Max. write current @ VDD min 0x%x\n", Csd->VddWCurrMin));\r
- DEBUG((DEBUG_INFO, " Max. write current @ VDD max 0x%x\n", Csd->VddWCurrMax));\r
+ DEBUG ((DEBUG_INFO, " Device size 0x%x\n", Csd->CSizeLow | (Csd->CSizeHigh << 2)));\r
+ DEBUG ((DEBUG_INFO, " Max. read current @ VDD min 0x%x\n", Csd->VddRCurrMin));\r
+ DEBUG ((DEBUG_INFO, " Max. read current @ VDD max 0x%x\n", Csd->VddRCurrMax));\r
+ DEBUG ((DEBUG_INFO, " Max. write current @ VDD min 0x%x\n", Csd->VddWCurrMin));\r
+ DEBUG ((DEBUG_INFO, " Max. write current @ VDD max 0x%x\n", Csd->VddWCurrMax));\r
} else {\r
- Csd2 = (SD_CSD2*)(VOID*)Csd;\r
- DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd2->CSizeLow | (Csd->CSizeHigh << 16)));\r
+ Csd2 = (SD_CSD2 *)(VOID *)Csd;\r
+ DEBUG ((DEBUG_INFO, " Device size 0x%x\n", Csd2->CSizeLow | (Csd->CSizeHigh << 16)));\r
}\r
- DEBUG((DEBUG_INFO, " Erase sector size 0x%x\n", Csd->SectorSize));\r
- DEBUG((DEBUG_INFO, " Erase single block enable 0x%x\n", Csd->EraseBlkEn));\r
- DEBUG((DEBUG_INFO, " Write protect group size 0x%x\n", Csd->WpGrpSize));\r
- DEBUG((DEBUG_INFO, " Write protect group enable 0x%x\n", Csd->WpGrpEnable));\r
- DEBUG((DEBUG_INFO, " Write speed factor 0x%x\n", Csd->R2WFactor));\r
- DEBUG((DEBUG_INFO, " Max. write data block length 0x%x\n", Csd->WriteBlLen));\r
- DEBUG((DEBUG_INFO, " Partial blocks for write allowed 0x%x\n", Csd->WriteBlPartial));\r
- DEBUG((DEBUG_INFO, " File format group 0x%x\n", Csd->FileFormatGrp));\r
- DEBUG((DEBUG_INFO, " Copy flag (OTP) 0x%x\n", Csd->Copy));\r
- DEBUG((DEBUG_INFO, " Permanent write protection 0x%x\n", Csd->PermWriteProtect));\r
- DEBUG((DEBUG_INFO, " Temporary write protection 0x%x\n", Csd->TmpWriteProtect));\r
- DEBUG((DEBUG_INFO, " File format 0x%x\n", Csd->FileFormat));\r
+\r
+ DEBUG ((DEBUG_INFO, " Erase sector size 0x%x\n", Csd->SectorSize));\r
+ DEBUG ((DEBUG_INFO, " Erase single block enable 0x%x\n", Csd->EraseBlkEn));\r
+ DEBUG ((DEBUG_INFO, " Write protect group size 0x%x\n", Csd->WpGrpSize));\r
+ DEBUG ((DEBUG_INFO, " Write protect group enable 0x%x\n", Csd->WpGrpEnable));\r
+ DEBUG ((DEBUG_INFO, " Write speed factor 0x%x\n", Csd->R2WFactor));\r
+ DEBUG ((DEBUG_INFO, " Max. write data block length 0x%x\n", Csd->WriteBlLen));\r
+ DEBUG ((DEBUG_INFO, " Partial blocks for write allowed 0x%x\n", Csd->WriteBlPartial));\r
+ DEBUG ((DEBUG_INFO, " File format group 0x%x\n", Csd->FileFormatGrp));\r
+ DEBUG ((DEBUG_INFO, " Copy flag (OTP) 0x%x\n", Csd->Copy));\r
+ DEBUG ((DEBUG_INFO, " Permanent write protection 0x%x\n", Csd->PermWriteProtect));\r
+ DEBUG ((DEBUG_INFO, " Temporary write protection 0x%x\n", Csd->TmpWriteProtect));\r
+ DEBUG ((DEBUG_INFO, " File format 0x%x\n", Csd->FileFormat));\r
\r
return EFI_SUCCESS;\r
}\r
**/\r
EFI_STATUS\r
GetSdModelName (\r
- IN OUT SD_DEVICE *Device,\r
- IN SD_CID *Cid\r
+ IN OUT SD_DEVICE *Device,\r
+ IN SD_CID *Cid\r
)\r
{\r
CHAR8 String[SD_MODEL_NAME_MAX_LEN];\r
**/\r
EFI_STATUS\r
DiscoverUserArea (\r
- IN SD_DEVICE *Device\r
+ IN SD_DEVICE *Device\r
)\r
{\r
- EFI_STATUS Status;\r
- SD_CSD *Csd;\r
- SD_CSD2 *Csd2;\r
- SD_CID *Cid;\r
- UINT64 Capacity;\r
- UINT32 DevStatus;\r
- UINT16 Rca;\r
- UINT32 CSize;\r
- UINT32 CSizeMul;\r
- UINT32 ReadBlLen;\r
+ EFI_STATUS Status;\r
+ SD_CSD *Csd;\r
+ SD_CSD2 *Csd2;\r
+ SD_CID *Cid;\r
+ UINT64 Capacity;\r
+ UINT32 DevStatus;\r
+ UINT16 Rca;\r
+ UINT32 CSize;\r
+ UINT32 CSizeMul;\r
+ UINT32 ReadBlLen;\r
\r
//\r
// Deselect the device to force it enter stby mode.\r
\r
Status = SdSetRca (Device, &Rca);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "DiscoverUserArea(): Assign new Rca = 0x%x fails with %r\n", Rca, Status));\r
+ DEBUG ((DEBUG_ERROR, "DiscoverUserArea(): Assign new Rca = 0x%x fails with %r\n", Rca, Status));\r
return Status;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
DumpCsd (Csd);\r
\r
Cid = &Device->Cid;\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
GetSdModelName (Device, Cid);\r
\r
Status = SdSelect (Device, Rca);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "DiscoverUserArea(): Reselect the device 0x%x fails with %r\n", Rca, Status));\r
+ DEBUG ((DEBUG_ERROR, "DiscoverUserArea(): Reselect the device 0x%x fails with %r\n", Rca, Status));\r
return Status;\r
}\r
\r
\r
if (Csd->CsdStructure == 0) {\r
Device->SectorAddressing = FALSE;\r
- CSize = (Csd->CSizeHigh << 2 | Csd->CSizeLow) + 1;\r
- CSizeMul = (1 << (Csd->CSizeMul + 2));\r
- ReadBlLen = (1 << (Csd->ReadBlLen));\r
- Capacity = MultU64x32 (MultU64x32 ((UINT64)CSize, CSizeMul), ReadBlLen);\r
+ CSize = (Csd->CSizeHigh << 2 | Csd->CSizeLow) + 1;\r
+ CSizeMul = (1 << (Csd->CSizeMul + 2));\r
+ ReadBlLen = (1 << (Csd->ReadBlLen));\r
+ Capacity = MultU64x32 (MultU64x32 ((UINT64)CSize, CSizeMul), ReadBlLen);\r
} else {\r
Device->SectorAddressing = TRUE;\r
- Csd2 = (SD_CSD2*)(VOID*)Csd;\r
- CSize = (Csd2->CSizeHigh << 16 | Csd2->CSizeLow) + 1;\r
- Capacity = MultU64x32 ((UINT64)CSize, SIZE_512KB);\r
+ Csd2 = (SD_CSD2 *)(VOID *)Csd;\r
+ CSize = (Csd2->CSizeHigh << 16 | Csd2->CSizeLow) + 1;\r
+ Capacity = MultU64x32 ((UINT64)CSize, SIZE_512KB);\r
}\r
\r
Device->BlockIo.Media = &Device->BlockMedia;\r
EFI_STATUS\r
EFIAPI\r
DiscoverSdDevice (\r
- IN SD_DRIVER_PRIVATE_DATA *Private,\r
- IN UINT8 Slot\r
+ IN SD_DRIVER_PRIVATE_DATA *Private,\r
+ IN UINT8 Slot\r
)\r
{\r
- EFI_STATUS Status;\r
- SD_DEVICE *Device;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;\r
- EFI_HANDLE DeviceHandle;\r
- EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
+ EFI_STATUS Status;\r
+ SD_DEVICE *Device;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath;\r
+ EFI_HANDLE DeviceHandle;\r
+ EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
\r
Device = NULL;\r
DevicePath = NULL;\r
NewDevicePath = NULL;\r
RemainingDevicePath = NULL;\r
- PassThru = Private->PassThru;\r
+ PassThru = Private->PassThru;\r
\r
//\r
// Build Device Path\r
Slot,\r
&DevicePath\r
);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
goto Error;\r
}\r
\r
- DeviceHandle = NULL;\r
+ DeviceHandle = NULL;\r
RemainingDevicePath = NewDevicePath;\r
- Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &DeviceHandle);\r
- if (!EFI_ERROR (Status) && (DeviceHandle != NULL) && IsDevicePathEnd(RemainingDevicePath)) {\r
+ Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &DeviceHandle);\r
+ if (!EFI_ERROR (Status) && (DeviceHandle != NULL) && IsDevicePathEnd (RemainingDevicePath)) {\r
//\r
// The device has been started, directly return to fast boot.\r
//\r
// Expose user area in the Sd memory card to upper layer.\r
//\r
Status = DiscoverUserArea (Device);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto Error;\r
}\r
\r
);\r
AddUnicodeString2 (\r
"en",\r
- gSdDxeComponentName.SupportedLanguages,\r
+ gSdDxeComponentName2.SupportedLanguages,\r
&Device->ControllerNameTable,\r
Device->ModelName,\r
FALSE\r
&Device->BlockIo2,\r
&gEfiEraseBlockProtocolGuid,\r
&Device->EraseBlock,\r
+ &gEfiDiskInfoProtocolGuid,\r
+ &Device->DiskInfo,\r
NULL\r
);\r
\r
gBS->OpenProtocol (\r
Private->Controller,\r
&gEfiSdMmcPassThruProtocolGuid,\r
- (VOID **) &(Private->PassThru),\r
+ (VOID **)&(Private->PassThru),\r
Private->DriverBindingHandle,\r
Device->Handle,\r
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
EFI_STATUS\r
EFIAPI\r
SdDxeDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
- EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
- UINT8 Slot;\r
+ EFI_STATUS Status;\r
+ EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
+ EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
+ UINT8 Slot;\r
\r
//\r
// Test EFI_SD_MMC_PASS_THRU_PROTOCOL on the controller handle.\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiSdMmcPassThruProtocolGuid,\r
- (VOID**) &PassThru,\r
+ (VOID **)&PassThru,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &ParentDevicePath,\r
+ (VOID **)&ParentDevicePath,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
@retval EFI_SUCCESS The device was started.\r
@retval EFI_DEVICE_ERROR The device could not be started due to a device error.Currently not implemented.\r
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.\r
- @retval Others The driver failded to start the device.\r
+ @retval Others The driver failed to start the device.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
SdDxeDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
- SD_DRIVER_PRIVATE_DATA *Private;\r
- UINT8 Slot;\r
+ EFI_STATUS Status;\r
+ EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
+ EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
+ SD_DRIVER_PRIVATE_DATA *Private;\r
+ UINT8 Slot;\r
\r
Private = NULL;\r
PassThru = NULL;\r
- Status = gBS->OpenProtocol (\r
- Controller,\r
- &gEfiSdMmcPassThruProtocolGuid,\r
- (VOID **) &PassThru,\r
- This->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
+ Status = gBS->OpenProtocol (\r
+ Controller,\r
+ &gEfiSdMmcPassThruProtocolGuid,\r
+ (VOID **)&PassThru,\r
+ This->DriverBindingHandle,\r
+ Controller,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
if ((EFI_ERROR (Status)) && (Status != EFI_ALREADY_STARTED)) {\r
return Status;\r
}\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &ParentDevicePath,\r
+ (VOID **)&ParentDevicePath,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiCallerIdGuid,\r
- (VOID **) &Private,\r
+ (VOID **)&Private,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
\r
if (Private != NULL) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
- Controller,\r
- &gEfiCallerIdGuid,\r
- Private,\r
- NULL\r
- );\r
+ Controller,\r
+ &gEfiCallerIdGuid,\r
+ Private,\r
+ NULL\r
+ );\r
FreePool (Private);\r
}\r
}\r
+\r
return Status;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
SdDxeDriverBindingStop (\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
- EFI_STATUS Status;\r
- BOOLEAN AllChildrenStopped;\r
- UINTN Index;\r
- SD_DRIVER_PRIVATE_DATA *Private;\r
- SD_DEVICE *Device;\r
- EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
- EFI_BLOCK_IO2_PROTOCOL *BlockIo2;\r
- EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *NextLink;\r
- SD_REQUEST *Request;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ BOOLEAN AllChildrenStopped;\r
+ UINTN Index;\r
+ SD_DRIVER_PRIVATE_DATA *Private;\r
+ SD_DEVICE *Device;\r
+ EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;\r
+ EFI_BLOCK_IO2_PROTOCOL *BlockIo2;\r
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *NextLink;\r
+ SD_REQUEST *Request;\r
+ EFI_TPL OldTpl;\r
\r
if (NumberOfChildren == 0) {\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiCallerIdGuid,\r
- (VOID **) &Private,\r
+ (VOID **)&Private,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
}\r
\r
gBS->UninstallProtocolInterface (\r
- Controller,\r
- &gEfiCallerIdGuid,\r
- Private\r
- );\r
+ Controller,\r
+ &gEfiCallerIdGuid,\r
+ Private\r
+ );\r
gBS->CloseProtocol (\r
- Controller,\r
- &gEfiSdMmcPassThruProtocolGuid,\r
- This->DriverBindingHandle,\r
- Controller\r
- );\r
+ Controller,\r
+ &gEfiSdMmcPassThruProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Controller\r
+ );\r
\r
FreePool (Private);\r
\r
for (Index = 0; Index < NumberOfChildren; Index++) {\r
BlockIo = NULL;\r
BlockIo2 = NULL;\r
- Status = gBS->OpenProtocol (\r
- ChildHandleBuffer[Index],\r
- &gEfiBlockIoProtocolGuid,\r
- (VOID **) &BlockIo,\r
- This->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
+ Status = gBS->OpenProtocol (\r
+ ChildHandleBuffer[Index],\r
+ &gEfiBlockIoProtocolGuid,\r
+ (VOID **)&BlockIo,\r
+ This->DriverBindingHandle,\r
+ Controller,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
if (EFI_ERROR (Status)) {\r
Status = gBS->OpenProtocol (\r
ChildHandleBuffer[Index],\r
&gEfiBlockIo2ProtocolGuid,\r
- (VOID **) &BlockIo2,\r
+ (VOID **)&BlockIo2,\r
This->DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
for (Link = GetFirstNode (&Device->Queue);\r
!IsNull (&Device->Queue, Link);\r
- Link = NextLink) {\r
+ Link = NextLink)\r
+ {\r
NextLink = GetNextNode (&Device->Queue, Link);\r
RemoveEntryList (Link);\r
\r
\r
FreePool (Request);\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
\r
//\r
&Device->BlockIo2,\r
&gEfiEraseBlockProtocolGuid,\r
&Device->EraseBlock,\r
+ &gEfiDiskInfoProtocolGuid,\r
+ &Device->DiskInfo,\r
NULL\r
);\r
if (EFI_ERROR (Status)) {\r
AllChildrenStopped = FALSE;\r
- gBS->OpenProtocol (\r
- Controller,\r
- &gEfiSdMmcPassThruProtocolGuid,\r
- (VOID **)&PassThru,\r
- This->DriverBindingHandle,\r
- ChildHandleBuffer[Index],\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
+ gBS->OpenProtocol (\r
+ Controller,\r
+ &gEfiSdMmcPassThruProtocolGuid,\r
+ (VOID **)&PassThru,\r
+ This->DriverBindingHandle,\r
+ ChildHandleBuffer[Index],\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ );\r
} else {\r
FreePool (Device->DevicePath);\r
FreeUnicodeStringTable (Device->ControllerNameTable);\r
EFI_STATUS\r
EFIAPI\r
InitializeSdDxe (\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
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Install driver model protocol(s).\r
\r
return Status;\r
}\r
-\r