//\r
// Install BlkIo/BlkIo2/Ssp for the specified partition\r
//\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &Partition->Handle,\r
- &gEfiDevicePathProtocolGuid,\r
- Partition->DevicePath,\r
- &gEfiBlockIoProtocolGuid,\r
- &Partition->BlockIo,\r
- &gEfiBlockIo2ProtocolGuid,\r
- &Partition->BlockIo2,\r
- NULL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- goto Error;\r
- }\r
-\r
if (Partition->PartitionType != EmmcPartitionRPMB) {\r
- Status = gBS->InstallProtocolInterface (\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
&Partition->Handle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ Partition->DevicePath,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &Partition->BlockIo,\r
+ &gEfiBlockIo2ProtocolGuid,\r
+ &Partition->BlockIo2,\r
&gEfiEraseBlockProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- &Partition->EraseBlock\r
+ &Partition->EraseBlock,\r
+ NULL\r
);\r
if (EFI_ERROR (Status)) {\r
- gBS->UninstallMultipleProtocolInterfaces (\r
- &Partition->Handle,\r
- &gEfiDevicePathProtocolGuid,\r
- Partition->DevicePath,\r
- &gEfiBlockIoProtocolGuid,\r
- &Partition->BlockIo,\r
- &gEfiBlockIo2ProtocolGuid,\r
- &Partition->BlockIo2,\r
- NULL\r
- );\r
goto Error;\r
}\r
- }\r
\r
- if (((Partition->PartitionType == EmmcPartitionUserData) ||\r
- (Partition->PartitionType == EmmcPartitionBoot1) ||\r
- (Partition->PartitionType == EmmcPartitionBoot2)) &&\r
- ((Device->Csd.Ccc & BIT10) != 0)) {\r
- Status = gBS->InstallProtocolInterface (\r
- &Partition->Handle,\r
- &gEfiStorageSecurityCommandProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- &Partition->StorageSecurity\r
- );\r
- if (EFI_ERROR (Status)) {\r
- gBS->UninstallMultipleProtocolInterfaces (\r
- &Partition->Handle,\r
- &gEfiDevicePathProtocolGuid,\r
- Partition->DevicePath,\r
- &gEfiBlockIoProtocolGuid,\r
- &Partition->BlockIo,\r
- &gEfiBlockIo2ProtocolGuid,\r
- &Partition->BlockIo2,\r
- &gEfiEraseBlockProtocolGuid,\r
- &Partition->EraseBlock,\r
- NULL\r
- );\r
- goto Error;\r
+ if (((Partition->PartitionType == EmmcPartitionUserData) ||\r
+ (Partition->PartitionType == EmmcPartitionBoot1) ||\r
+ (Partition->PartitionType == EmmcPartitionBoot2)) &&\r
+ ((Device->Csd.Ccc & BIT10) != 0)) {\r
+ Status = gBS->InstallProtocolInterface (\r
+ &Partition->Handle,\r
+ &gEfiStorageSecurityCommandProtocolGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ &Partition->StorageSecurity\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ &Partition->Handle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ Partition->DevicePath,\r
+ &gEfiBlockIoProtocolGuid,\r
+ &Partition->BlockIo,\r
+ &gEfiBlockIo2ProtocolGuid,\r
+ &Partition->BlockIo2,\r
+ &gEfiEraseBlockProtocolGuid,\r
+ &Partition->EraseBlock,\r
+ NULL\r
+ );\r
+ goto Error;\r
+ }\r
}\r
+\r
+ gBS->OpenProtocol (\r
+ Device->Private->Controller,\r
+ &gEfiSdMmcPassThruProtocolGuid,\r
+ (VOID **) &(Device->Private->PassThru),\r
+ Device->Private->DriverBindingHandle,\r
+ Partition->Handle,\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ ); \r
}\r
\r
- gBS->OpenProtocol (\r
- Device->Private->Controller,\r
- &gEfiSdMmcPassThruProtocolGuid,\r
- (VOID **) &(Device->Private->PassThru),\r
- Device->Private->DriverBindingHandle,\r
- Partition->Handle,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
} else {\r
Status = EFI_INVALID_PARAMETER;\r
}\r
EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
EFI_BLOCK_IO2_PROTOCOL *BlockIo2;\r
EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *StorageSecurity;\r
- EFI_ERASE_BLOCK_PROTOCOL *EraseBlock;\r
LIST_ENTRY *Link;\r
LIST_ENTRY *NextLink;\r
EMMC_REQUEST *Request;\r
&Partition->BlockIo,\r
&gEfiBlockIo2ProtocolGuid,\r
&Partition->BlockIo2,\r
+ &gEfiEraseBlockProtocolGuid,\r
+ &Partition->EraseBlock,\r
NULL\r
);\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
\r
- //\r
- // If Erase Block Protocol is installed, then uninstall this protocol.\r
- //\r
- Status = gBS->OpenProtocol (\r
- ChildHandleBuffer[Index],\r
- &gEfiEraseBlockProtocolGuid,\r
- (VOID **) &EraseBlock,\r
- This->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
-\r
- if (!EFI_ERROR (Status)) {\r
- Status = gBS->UninstallProtocolInterface (\r
- ChildHandleBuffer[Index],\r
- &gEfiEraseBlockProtocolGuid,\r
- &Partition->EraseBlock\r
- );\r
- if (EFI_ERROR (Status)) {\r
- gBS->OpenProtocol (\r
- Controller,\r
- &gEfiSdMmcPassThruProtocolGuid,\r
- (VOID **) &Partition->Device->Private->PassThru,\r
- This->DriverBindingHandle,\r
- ChildHandleBuffer[Index],\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
- AllChildrenStopped = FALSE;\r
- continue;\r
- }\r
- }\r
-\r
//\r
// If Storage Security Command Protocol is installed, then uninstall this protocol.\r
//\r