mirror of
https://github.com/edk2-porting/edk2-rk3588.git
synced 2026-01-06 17:22:38 +08:00
Silicon/Rockchip: DwcSdhciDxe: Fix PHY DLL configuration
HS400 appears to work reliably now.
This commit is contained in:
@@ -100,6 +100,7 @@ EmmcSdMmcNotifyPhase (
|
||||
SD_MMC_BUS_MODE *Timing;
|
||||
UINTN MaxClockFreq;
|
||||
UINT32 Value, i;
|
||||
UINT32 TxClkTapNum;
|
||||
|
||||
DEBUG ((DEBUG_INFO, "%a\n", __FUNCTION__));
|
||||
|
||||
@@ -185,12 +186,26 @@ EmmcSdMmcNotifyPhase (
|
||||
gBS->Stall (1);
|
||||
}
|
||||
|
||||
MmioWrite32(EMMC_DLL_RXCLK, EMMC_DLL_DLYENA |
|
||||
EMMC_DLL_RXCLK_NO_INVERTER);
|
||||
TxClkTapNum = EMMC_DLL_TXCLK_TAPNUM_DEFAULT;
|
||||
|
||||
if (*Timing == SdMmcMmcHs400) {
|
||||
TxClkTapNum = EMMC_DLL_TXCLK_TAPNUM_90_DEGREES;
|
||||
|
||||
MmioWrite32 (EMMC_DLL_CMDOUT, EMMC_DLL_CMDOUT_SRC_CLK_NEG |
|
||||
EMMC_DLL_CMDOUT_EN_SRC_CLK_NEG |
|
||||
EMMC_DLL_DLYENA |
|
||||
EMMC_DLL_CMDOUT_TAPNUM_90_DEGREES |
|
||||
EMMC_DLL_TAPNUM_FROM_SW);
|
||||
}
|
||||
|
||||
MmioWrite32(EMMC_DLL_RXCLK, EMMC_DLL_DLYENA);
|
||||
|
||||
MmioWrite32(EMMC_DLL_TXCLK, EMMC_DLL_DLYENA |
|
||||
EMMC_DLL_TXCLK_TAPNUM_DEFAULT | EMMC_DLL_TXCLK_TAPNUM_FROM_SW);
|
||||
TxClkTapNum | EMMC_DLL_TAPNUM_FROM_SW |
|
||||
EMMC_DLL_NO_INVERTER);
|
||||
|
||||
MmioWrite32(EMMC_DLL_STRBIN, EMMC_DLL_DLYENA |
|
||||
EMMC_DLL_STRBIN_TAPNUM_DEFAULT);
|
||||
EMMC_DLL_STRBIN_TAPNUM_DEFAULT | EMMC_DLL_TAPNUM_FROM_SW);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -39,18 +39,22 @@
|
||||
#define EMMC_DLL_CTRL_START_POINT_DEFAULT (5 << 16)
|
||||
#define EMMC_DLL_CTRL_INCREMENT_DEFAULT (2 << 8)
|
||||
|
||||
#define EMMC_DLL_NO_INVERTER BIT29
|
||||
#define EMMC_DLL_DLYENA BIT27
|
||||
|
||||
#define EMMC_DLL_RXCLK_NO_INVERTER BIT29
|
||||
#define EMMC_DLL_TAPNUM_FROM_SW BIT24
|
||||
|
||||
#define EMMC_DLL_TXCLK_TAPNUM_DEFAULT (0x10 << 0)
|
||||
#define EMMC_DLL_TXCLK_TAPNUM_FROM_SW BIT24
|
||||
#define EMMC_DLL_TXCLK_TAPNUM_90_DEGREES 0x9
|
||||
|
||||
#define EMMC_DLL_STRBIN_TAPNUM_DEFAULT (0x3 << 0)
|
||||
#define EMMC_DLL_STRBIN_DELAY_NUM_SEL BIT26
|
||||
#define EMMC_DLL_STRBIN_DELAY_NUM_OFFSET 16
|
||||
#define EMMC_DLL_STRBIN_DELAY_NUM_DEFAULT 0x10
|
||||
|
||||
#define EMMC_DLL_CMDOUT_TAPNUM_90_DEGREES 0x8
|
||||
#define EMMC_DLL_CMDOUT_SRC_CLK_NEG BIT28
|
||||
#define EMMC_DLL_CMDOUT_EN_SRC_CLK_NEG BIT29
|
||||
|
||||
#define EMMC_DLL_STATUS0_DLL_LOCK BIT8
|
||||
#define EMMC_DLL_STATUS0_DLL_TIMEOUT BIT9
|
||||
|
||||
|
||||
Reference in New Issue
Block a user