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
   }
 };