mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/Ufs: bRefClkFreq attribute be programmed after fDeviceInit
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3886 bRefClkFreq UFS card attribute need to be read and written after successful fDeviceInit and NOP response so that link will be stable. Cc: Wu Hao A <hao.a.wu@intel.com> Cc: Albecki Mateusz <mateusz.albecki@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Purna Chandra Rao Bandaru <purna.chandra.rao.bandaru@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
40004ff9d5
commit
7456990e8e
|
@ -919,6 +919,23 @@ UfsPassThruDriverBindingStart (
|
||||||
goto Error;
|
goto Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// UFS 2.0 spec Section 13.1.3.3:
|
||||||
|
// At the end of the UFS Interconnect Layer initialization on both host and device side,
|
||||||
|
// the host shall send a NOP OUT UPIU to verify that the device UTP Layer is ready.
|
||||||
|
//
|
||||||
|
Status = UfsExecNopCmds (Private);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
DEBUG ((DEBUG_ERROR, "Ufs Sending NOP IN command Error, Status = %r\n", Status));
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = UfsFinishDeviceInitialization (Private);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
DEBUG ((DEBUG_ERROR, "Device failed to finish initialization, Status = %r\n", Status));
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
|
||||||
if ((mUfsHcPlatform != NULL) &&
|
if ((mUfsHcPlatform != NULL) &&
|
||||||
((mUfsHcPlatform->RefClkFreq == EdkiiUfsCardRefClkFreq19p2Mhz) ||
|
((mUfsHcPlatform->RefClkFreq == EdkiiUfsCardRefClkFreq19p2Mhz) ||
|
||||||
(mUfsHcPlatform->RefClkFreq == EdkiiUfsCardRefClkFreq26Mhz) ||
|
(mUfsHcPlatform->RefClkFreq == EdkiiUfsCardRefClkFreq26Mhz) ||
|
||||||
|
@ -967,23 +984,6 @@ UfsPassThruDriverBindingStart (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// UFS 2.0 spec Section 13.1.3.3:
|
|
||||||
// At the end of the UFS Interconnect Layer initialization on both host and device side,
|
|
||||||
// the host shall send a NOP OUT UPIU to verify that the device UTP Layer is ready.
|
|
||||||
//
|
|
||||||
Status = UfsExecNopCmds (Private);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "Ufs Sending NOP IN command Error, Status = %r\n", Status));
|
|
||||||
goto Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = UfsFinishDeviceInitialization (Private);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "Device failed to finish initialization, Status = %r\n", Status));
|
|
||||||
goto Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check if 8 common luns are active and set corresponding bit mask.
|
// Check if 8 common luns are active and set corresponding bit mask.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue