You've already forked slimbootloader
mirror of
https://github.com/Dasharo/slimbootloader.git
synced 2026-03-06 15:26:20 -08:00
fix:[common] Extend Ufs devices waiting for fDeviceInit.
- UFS device would clear fDeviceInit flag once the device initialization is completed. - This change is polling to check the flag is cleared or not with specific timeout (UFS_INIT_COMPLETION_TIMEOUT - 600ms). Signed-off-by: costel-ignat <costel.ignat@intel.com>
This commit is contained in:
@@ -1293,8 +1293,8 @@ UfsFinishDeviceInitialization (
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINT8 DeviceInitStatus;
|
||||
UINT8 Timeout;
|
||||
UINT8 DeviceInitStatus;
|
||||
UINT32 Timeout;
|
||||
|
||||
DeviceInitStatus = 0xFF;
|
||||
|
||||
@@ -1306,7 +1306,7 @@ UfsFinishDeviceInitialization (
|
||||
return Status;
|
||||
}
|
||||
|
||||
Timeout = 5;
|
||||
Timeout = UFS_INIT_COMPLETION_TIMEOUT;
|
||||
do {
|
||||
Status = UfsReadFlag (Private, UfsFlagDevInit, &DeviceInitStatus);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -1316,7 +1316,13 @@ UfsFinishDeviceInitialization (
|
||||
Timeout--;
|
||||
} while (DeviceInitStatus != 0 && Timeout != 0);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
if (Timeout == 0) {
|
||||
DEBUG ((DEBUG_ERROR, "%a: DeviceInitStatus = %x EFI_TIMEOUT \n", __func__, DeviceInitStatus));
|
||||
return EFI_TIMEOUT;
|
||||
} else {
|
||||
DEBUG ((DEBUG_INFO, "%a: Timeout left = %x EFI_SUCCESS \n", __func__, Timeout));
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1496,6 +1502,9 @@ InitializeUfs (
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Check the UFS device is initialized completed.
|
||||
//
|
||||
Status = UfsFinishDeviceInitialization (Private);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_ERROR, "Device failed to finish initialization, Status = %r\n", Status));
|
||||
|
||||
Reference in New Issue
Block a user