aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Wei <liwei213@huawei.com>2018-01-25 20:51:27 +0800
committerHaojian Zhuang <haojian.zhuang@linaro.org>2018-02-01 14:59:48 +0800
commitdf12473802c39c93ab648c9fd958ecdd13760ae4 (patch)
tree1c59e4db949d80cc77b6204ed3bb5c2e2f9999e3
parent6dfa27969674e134876b5ae544b797b1ac5bfc74 (diff)
downloadOpenPlatformPkg-df12473802c39c93ab648c9fd958ecdd13760ae4.tar.gz
hynix ufs have some bugs for fixed
-rw-r--r--Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.c12
-rw-r--r--Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.h5
2 files changed, 15 insertions, 2 deletions
diff --git a/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.c b/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.c
index 562218e..3fac2d3 100644
--- a/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.c
+++ b/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.c
@@ -508,13 +508,23 @@ UfsHcPhyInit (
EFI_STATUS
EFIAPI
UfsHcPhySetPowerMode (
- IN EDKII_UFS_HOST_CONTROLLER_PROTOCOL *This
+ IN EDKII_UFS_HOST_CONTROLLER_PROTOCOL *This,
+ IN UINT32 DevQuirks
)
{
UFS_HOST_CONTROLLER_PRIVATE_DATA *Private;
UINT32 Data, TxLanes, RxLanes;
Private = UFS_HOST_CONTROLLER_PRIVATE_DATA_FROM_UFSHC (This);
+
+ if (DevQuirks & UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME) {
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "ufs: H**** device must set VS_DebugSaveConfigTime 0x10\n"));
+ /* VS_DebugSaveConfigTime */
+ DwUfsDmeSet (Private->RegBase, 0xD0A0, 0x0, 0x10);
+ /* sync length */
+ DwUfsDmeSet (Private->RegBase, 0x1556, 0x0, 0x48);
+ }
+
// PA_Tactive
DwUfsDmeGet (Private->RegBase, 0x15A8, 0, &Data);
if (Data < 7) {
diff --git a/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.h b/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.h
index 8c8476c..6c2fe34 100644
--- a/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.h
+++ b/Drivers/Block/DwUfsHcDxe/DwUfsHcDxe.h
@@ -113,6 +113,8 @@ extern EFI_DRIVER_BINDING_PROTOCOL gUfsHcDriverBinding;
extern EFI_COMPONENT_NAME_PROTOCOL gUfsHcComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL gUfsHcComponentName2;
+#define UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME (1 << 0)
+
//
// Unique signature for private data structure.
//
@@ -591,6 +593,7 @@ UfsHcPhyInit (
EFI_STATUS
EFIAPI
UfsHcPhySetPowerMode (
- IN EDKII_UFS_HOST_CONTROLLER_PROTOCOL *This
+ IN EDKII_UFS_HOST_CONTROLLER_PROTOCOL *This,
+ IN UINT32 DevQuirks
);
#endif /* _DW_UFS_HOST_CONTROLLER_H_ */