]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/SdMmcPciHcDxe: Use BaseClk if the target clock is larger
authorFeng Tian <feng.tian@intel.com>
Fri, 29 Apr 2016 06:39:30 +0000 (14:39 +0800)
committerFeng Tian <feng.tian@intel.com>
Fri, 6 May 2016 08:09:59 +0000 (16:09 +0800)
The original code has a bug to calculate which clock freq should be
used when the target clock freq is larger than the BaseClock Freq
provided by the system.

Cc: Wu, Hao A <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <feng.tian@intel.com>
MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c
MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c
MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c

index baa12f44eeacea52453f5c01ea687f665ad72d2d..72af1e7a1b1dbc2c40b7512f96e83616a4132d19 100644 (file)
@@ -706,9 +706,14 @@ SdMmcHcClockSupply (
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
-  if ((ClockFreq > (BaseClkFreq * 1000)) || (ClockFreq == 0)) {\r
+  if (ClockFreq == 0) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
+  if (ClockFreq > (BaseClkFreq * 1000)) {\r
+    ClockFreq = BaseClkFreq * 1000;\r
+  }\r
+\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r
index 050d843176e1dce35b6248fdddc2d96c5ae62b70..569a86a6e14af2652d183ab76157db5973acb7a2 100644 (file)
@@ -535,9 +535,15 @@ EmmcPeimHcClockSupply (
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
-  if ((ClockFreq > (BaseClkFreq * 1000)) || (ClockFreq == 0)) {\r
+\r
+  if (ClockFreq == 0) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
+  if (ClockFreq > (BaseClkFreq * 1000)) {\r
+    ClockFreq = BaseClkFreq * 1000;\r
+  }\r
+\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r
index cbee947993a5d3f8d561ac64c698373ab1318099..48e4ae68caa7d9bf2d0e29d45149ecac874a3cd3 100644 (file)
@@ -535,9 +535,15 @@ SdPeimHcClockSupply (
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
   ASSERT (Capability.BaseClkFreq != 0);\r
 \r
   BaseClkFreq = Capability.BaseClkFreq;\r
-  if ((ClockFreq > (BaseClkFreq * 1000)) || (ClockFreq == 0)) {\r
+\r
+  if (ClockFreq == 0) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
+  if (ClockFreq > (BaseClkFreq * 1000)) {\r
+    ClockFreq = BaseClkFreq * 1000;\r
+  }\r
+\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r
   //\r
   // Calculate the divisor of base frequency.\r
   //\r