Drivers/DwMmcHcDxe: change BaseClkFreq from MHz to KHz
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
diff --git a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
index 875e13c..833304f 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
+++ b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHcDxe.c
@@ -671,7 +671,7 @@
Support64BitDma &= Private->Capability[Slot].SysBus64;
if (Private->Capability[Slot].BaseClkFreq == 0) {
- Private->Capability[Slot].BaseClkFreq = 0xff;
+ continue;
}
DumpCapabilityReg (Slot, &Private->Capability[Slot]);
diff --git a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
index 47e7415..2bd3adb 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
+++ b/Drivers/SdMmc/DwMmcHcDxe/DwMmcHci.c
@@ -655,20 +655,20 @@
return EFI_INVALID_PARAMETER;
}
- if (ClockFreq > (BaseClkFreq * 1000)) {
- ClockFreq = BaseClkFreq * 1000;
+ if (ClockFreq > BaseClkFreq) {
+ ClockFreq = BaseClkFreq;
}
//
// Calculate the divisor of base frequency.
//
Divisor = 0;
- SettingFreq = BaseClkFreq * 1000;
+ SettingFreq = BaseClkFreq;
while (ClockFreq < SettingFreq) {
Divisor++;
- SettingFreq = (BaseClkFreq * 1000) / (2 * Divisor);
- Remainder = (BaseClkFreq * 1000) % (2 * Divisor);
+ SettingFreq = BaseClkFreq / (2 * Divisor);
+ Remainder = BaseClkFreq % (2 * Divisor);
if ((ClockFreq == SettingFreq) && (Remainder == 0)) {
break;
}
@@ -677,7 +677,7 @@
}
}
- DEBUG ((DEBUG_INFO, "BaseClkFreq %dMHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq));
+ DEBUG ((DEBUG_INFO, "BaseClkFreq %dKHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq));
// Wait until MMC is idle
do {
@@ -825,7 +825,7 @@
//
// Supply 400KHz clock frequency at initialization phase.
//
- InitFreq = 400;
+ InitFreq = DWMMC_INIT_CLOCK_FREQ;
Status = DwMmcHcClockSupply (PciIo, Slot, InitFreq, Capability);
if (EFI_ERROR (Status)) {
return Status;
diff --git a/Drivers/SdMmc/DwMmcHcDxe/SdDevice.c b/Drivers/SdMmc/DwMmcHcDxe/SdDevice.c
index 8bff945..20867ef 100644
--- a/Drivers/SdMmc/DwMmcHcDxe/SdDevice.c
+++ b/Drivers/SdMmc/DwMmcHcDxe/SdDevice.c
@@ -1032,12 +1032,6 @@
return Status;
}
- Status = DwMmcHcClockSupply (PciIo, Slot, DWMMC_INIT_CLOCK_FREQ, Private->Capability[Slot]);
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "SdCardIdentification: Failing to set clock frequency %d, Status:%r\n", DWMMC_INIT_CLOCK_FREQ, Status));
- return Status;
- }
-
Status = SdCardGetScr (PassThru, Slot, Rca, &Scr);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "SdCardIdentification: Executing SdCardGetScr fails with %r\n", Status));
diff --git a/Include/Protocol/PlatformDwMmc.h b/Include/Protocol/PlatformDwMmc.h
index 20ac87d..fe2259b 100644
--- a/Include/Protocol/PlatformDwMmc.h
+++ b/Include/Protocol/PlatformDwMmc.h
@@ -39,13 +39,13 @@
UINT32 Sdr104:1; // bit 5
UINT32 Ddr50:1; // bit 6
UINT32 SysBus64:1; // bit 7
- UINT32 BaseClkFreq:8; // bit 15:8
- UINT32 BusWidth:4; // bit 20:16
- UINT32 SlotType:2; // bit 22:21
- UINT32 CardType:3; // bit 25:23
- UINT32 Voltage18:1; // bit 26
- UINT32 Voltage30:1; // bit 27
- UINT32 Voltage33:1; // bit 28
+ UINT32 BusWidth:4; // bit 11:8
+ UINT32 SlotType:2; // bit 13:12
+ UINT32 CardType:3; // bit 16:14
+ UINT32 Voltage18:1; // bit 17
+ UINT32 Voltage30:1; // bit 18
+ UINT32 Voltage33:1; // bit 19
+ UINT32 BaseClkFreq;
EFI_HANDLE Controller;
} DW_MMC_HC_SLOT_CAP;
diff --git a/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c b/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
index 09a9da3..0f58697 100644
--- a/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
+++ b/Platforms/Hisilicon/HiKey/HiKeyMmcDxe/HiKeyMmcDxe.c
@@ -38,14 +38,14 @@
.BusWidth = 8,
.SlotType = EmbeddedSlot,
.CardType = EmmcCardType,
- .BaseClkFreq = 100
+ .BaseClkFreq = 100000
}, {
.HighSpeed = 1,
.BusWidth = 4,
.SlotType = RemovableSlot,
.CardType = SdCardType,
- .BaseClkFreq = 100,
- .Voltage30 = 1
+ .Voltage30 = 1,
+ .BaseClkFreq = 100000
}
};
diff --git a/Platforms/Hisilicon/HiKey960/HiKey960MmcDxe/HiKey960MmcDxe.c b/Platforms/Hisilicon/HiKey960/HiKey960MmcDxe/HiKey960MmcDxe.c
index 342a198..3e52270 100644
--- a/Platforms/Hisilicon/HiKey960/HiKey960MmcDxe/HiKey960MmcDxe.c
+++ b/Platforms/Hisilicon/HiKey960/HiKey960MmcDxe/HiKey960MmcDxe.c
@@ -37,8 +37,8 @@
.BusWidth = 4,
.SlotType = RemovableSlot,
.CardType = SdCardType,
- .BaseClkFreq = 200,
- .Voltage30 = 1
+ .Voltage30 = 1,
+ .BaseClkFreq = 3200
}
};