Could this be done at lower layer rather than changing existing interface?
Thanks Feng -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Haojian Zhuang Sent: Friday, January 6, 2017 2:52 PM To: Tian, Feng <[email protected]>; [email protected]; [email protected]; [email protected] Cc: Haojian Zhuang <[email protected]> Subject: [edk2] [PATCH 6/9] Ufs: add PhyInit Add PhyInit() to support designware UFS controller. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Haojian Zhuang <[email protected]> --- MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c | 2 ++ MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c | 8 ++++++++ MdeModulePkg/Include/Protocol/UfsHostController.h | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c index 7c831e9..761dc8e 100644 --- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c +++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThru.c @@ -853,6 +853,8 @@ UfsPassThruDriverBindingStart ( goto Error; } + MicroSecondDelay (100000); + // // Get Ufs Device's Lun Info by reading Configuration Descriptor. // diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c index 218e9f5..7c01d57 100644 --- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c +++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c @@ -2089,6 +2089,7 @@ UfsControllerInit ( ) { EFI_STATUS Status; + EDKII_UFS_HOST_CONTROLLER_PROTOCOL *UfsHc; Status = UfsEnableHostController (Private); if (EFI_ERROR (Status)) { @@ -2096,6 +2097,13 @@ UfsControllerInit ( return Status; } + UfsHc = Private->UfsHostController; + Status = UfsHc->PhyInit (UfsHc); + if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "UfsControllerInit: Phy Init Fails, Status = %r\n", Status)); + return Status; + } + Status = UfsDeviceDetection (Private); if (EFI_ERROR (Status)) { DEBUG ((EFI_D_ERROR, "UfsControllerInit: Device Detection Fails, Status = %r\n", Status)); diff --git a/MdeModulePkg/Include/Protocol/UfsHostController.h b/MdeModulePkg/Include/Protocol/UfsHostController.h index 909c981..1f3605f 100644 --- a/MdeModulePkg/Include/Protocol/UfsHostController.h +++ b/MdeModulePkg/Include/Protocol/UfsHostController.h @@ -221,6 +221,12 @@ EFI_STATUS IN OUT VOID *Buffer ); +typedef +EFI_STATUS +(EFIAPI *EDKII_UFS_HC_PHY_INIT)( + IN EDKII_UFS_HOST_CONTROLLER_PROTOCOL *This + ); + /// /// UFS Host Controller Protocol structure. /// @@ -233,6 +239,7 @@ struct _EDKII_UFS_HOST_CONTROLLER_PROTOCOL { EDKII_UFS_HC_FLUSH Flush; EDKII_UFS_HC_MMIO_READ_WRITE Read; EDKII_UFS_HC_MMIO_READ_WRITE Write; + EDKII_UFS_HC_PHY_INIT PhyInit; }; /// -- 2.7.4 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

