]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118DxeUtil.c
EmbeddedPkg/Lan9118Dxe: rename TimeOut to Retries
[mirror_edk2.git] / EmbeddedPkg / Drivers / Lan9118Dxe / Lan9118DxeUtil.c
index d271dcd0dd52252c2323fe18dfd94b46f575dd53..3ef98ef901b9a9d0fbea88ff54e6b3d395256d3c 100644 (file)
@@ -236,7 +236,7 @@ IndirectEEPROMRead32 (
 \r
   // Write to Eeprom command register\r
   MmioWrite32 (LAN9118_E2P_CMD, EepromCmd);\r
-  gBS->Stall (LAN9118_STALL);\r
+  MemoryFence();\r
 \r
   // Wait until operation has completed\r
   while (MmioRead32 (LAN9118_E2P_CMD) & E2P_EPC_BUSY);\r
@@ -284,7 +284,7 @@ IndirectEEPROMWrite32 (
 \r
   // Write to Eeprom command register\r
   MmioWrite32 (LAN9118_E2P_CMD, EepromCmd);\r
-  gBS->Stall (LAN9118_STALL);\r
+  MemoryFence();\r
 \r
   // Wait until operation has completed\r
   while (MmioRead32 (LAN9118_E2P_CMD) & E2P_EPC_BUSY);\r
@@ -320,8 +320,6 @@ Lan9118SetMacAddress (
                       (UINT32)(Mac->Addr[4] & 0xFF) |\r
                       ((Mac->Addr[5] & 0xFF) << 8)\r
                     );\r
-\r
-  CopyMem (&Snp->Mode->CurrentAddress, &Mac, NET_ETHER_ADDR_LEN);\r
 }\r
 \r
 VOID\r
@@ -357,31 +355,33 @@ Lan9118Initialize (
   IN  EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
   )\r
 {\r
-  UINTN  Timeout;\r
+  UINTN  Retries;\r
   UINT64 DefaultMacAddress;\r
 \r
   // Attempt to wake-up the device if it is in a lower power state\r
   if (((MmioRead32 (LAN9118_PMT_CTRL) & MPTCTRL_PM_MODE_MASK) >> 12) != 0) {\r
     DEBUG ((DEBUG_NET, "Waking from reduced power state.\n"));\r
     MmioWrite32 (LAN9118_BYTE_TEST, 0xFFFFFFFF);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
 \r
   // Check that device is active\r
-  Timeout = 20;\r
-  while ((MmioRead32 (LAN9118_PMT_CTRL) & MPTCTRL_READY) == 0 && --Timeout) {\r
+  Retries = 20;\r
+  while ((MmioRead32 (LAN9118_PMT_CTRL) & MPTCTRL_READY) == 0 && --Retries) {\r
     gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
-  if (!Timeout) {\r
+  if (!Retries) {\r
     return EFI_TIMEOUT;\r
   }\r
 \r
   // Check that EEPROM isn't active\r
-  Timeout = 20;\r
-  while ((MmioRead32 (LAN9118_E2P_CMD) & E2P_EPC_BUSY) && --Timeout){\r
+  Retries = 20;\r
+  while ((MmioRead32 (LAN9118_E2P_CMD) & E2P_EPC_BUSY) && --Retries){\r
     gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
-  if (!Timeout) {\r
+  if (!Retries) {\r
     return EFI_TIMEOUT;\r
   }\r
 \r
@@ -398,6 +398,7 @@ Lan9118Initialize (
       DEBUG ((EFI_D_WARN, "Warning: using driver-default MAC address\n"));\r
       DefaultMacAddress = FixedPcdGet64 (PcdLan9118DefaultMacAddress);\r
       Lan9118SetMacAddress((EFI_MAC_ADDRESS *) &DefaultMacAddress, Snp);\r
+      CopyMem (&Snp->Mode->CurrentAddress, &DefaultMacAddress, NET_ETHER_ADDR_LEN);\r
     }\r
   } else {\r
     // Store the MAC address that was loaded from EEPROM\r
@@ -448,11 +449,12 @@ SoftReset (
 \r
   // Write the configuration\r
   MmioWrite32 (LAN9118_HW_CFG, HwConf);\r
-  gBS->Stall (LAN9118_STALL);\r
+  MemoryFence();\r
 \r
   // Wait for reset to complete\r
   while (MmioRead32 (LAN9118_HW_CFG) & HWCFG_SRST) {\r
 \r
+    MemoryFence();\r
     gBS->Stall (LAN9118_STALL);\r
     ResetTime += 1;\r
 \r
@@ -485,14 +487,13 @@ SoftReset (
 \r
 \r
 // Perform PHY software reset\r
-INT32\r
+EFI_STATUS\r
 PhySoftReset (\r
   UINT32 Flags,\r
   EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
   )\r
 {\r
   UINT32 PmtCtrl = 0;\r
-  UINT32 LinkTo = 0;\r
 \r
   // PMT PHY reset takes precedence over BCR\r
   if (Flags & PHY_RESET_PMT) {\r
@@ -502,29 +503,15 @@ PhySoftReset (
 \r
     // Wait for completion\r
     while (MmioRead32 (LAN9118_PMT_CTRL) & MPTCTRL_PHY_RST) {\r
-      gBS->Stall (LAN9118_STALL);\r
+      MemoryFence();\r
     }\r
   // PHY Basic Control Register reset\r
-  } else if (Flags & PHY_RESET_PMT) {\r
+  } else if (Flags & PHY_RESET_BCR) {\r
     IndirectPHYWrite32 (PHY_INDEX_BASIC_CTRL, PHYCR_RESET);\r
 \r
     // Wait for completion\r
     while (IndirectPHYRead32 (PHY_INDEX_BASIC_CTRL) & PHYCR_RESET) {\r
-      gBS->Stall (LAN9118_STALL);\r
-    }\r
-  }\r
-\r
-  // Check the link status\r
-  if (Flags & PHY_RESET_CHECK_LINK) {\r
-    LinkTo = 100000; // 2 second (could be 50% more)\r
-    while (EFI_ERROR (CheckLinkStatus (0, Snp)) && (LinkTo > 0)) {\r
-      gBS->Stall (LAN9118_STALL);\r
-      LinkTo--;\r
-    }\r
-\r
-    // Timed out\r
-    if (LinkTo <= 0) {\r
-      return -1;\r
+      MemoryFence();\r
     }\r
   }\r
 \r
@@ -535,7 +522,7 @@ PhySoftReset (
     MmioWrite32 (LAN9118_INT_STS, 0xFFFFFFFF);\r
   }\r
 \r
-  return 0;\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 \r
@@ -558,7 +545,7 @@ ConfigureHardware (
 \r
     // Write the configuration\r
     MmioWrite32 (LAN9118_GPIO_CFG, GpioConf);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -587,7 +574,7 @@ AutoNegotiate (
   UINT32 PhyControl;\r
   UINT32 PhyStatus;\r
   UINT32 Features;\r
-  UINT32 TimeOut;\r
+  UINT32 Retries;\r
 \r
   // First check that auto-negotiation is supported\r
   PhyStatus = IndirectPHYRead32 (PHY_INDEX_BASIC_STATUS);\r
@@ -599,11 +586,12 @@ AutoNegotiate (
   // Check that link is up first\r
   if ((PhyStatus & PHYSTS_LINK_STS) == 0) {\r
     // Wait until it is up or until Time Out\r
-    TimeOut = 2000;\r
+    Retries = FixedPcdGet32 (PcdLan9118DefaultNegotiationTimeout) / LAN9118_STALL;\r
     while ((IndirectPHYRead32 (PHY_INDEX_BASIC_STATUS) & PHYSTS_LINK_STS) == 0) {\r
+      MemoryFence();\r
       gBS->Stall (LAN9118_STALL);\r
-      TimeOut--;\r
-      if (!TimeOut) {\r
+      Retries--;\r
+      if (!Retries) {\r
         DEBUG ((EFI_D_ERROR, "Link timeout in auto-negotiation.\n"));\r
         return EFI_TIMEOUT;\r
       }\r
@@ -687,7 +675,7 @@ StopTx (
     TxCfg = MmioRead32 (LAN9118_TX_CFG);\r
     TxCfg |= TXCFG_TXS_DUMP | TXCFG_TXD_DUMP;\r
     MmioWrite32 (LAN9118_TX_CFG, TxCfg);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
 \r
   // Check if already stopped\r
@@ -706,7 +694,7 @@ StopTx (
     if (TxCfg & TXCFG_TX_ON) {\r
       TxCfg |= TXCFG_STOP_TX;\r
       MmioWrite32 (LAN9118_TX_CFG, TxCfg);\r
-      gBS->Stall (LAN9118_STALL);\r
+      MemoryFence();\r
 \r
       // Wait for Tx to finish transmitting\r
       while (MmioRead32 (LAN9118_TX_CFG) & TXCFG_STOP_TX);\r
@@ -741,7 +729,7 @@ StopRx (
     RxCfg = MmioRead32 (LAN9118_RX_CFG);\r
     RxCfg |= RXCFG_RX_DUMP;\r
     MmioWrite32 (LAN9118_RX_CFG, RxCfg);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
 \r
     while (MmioRead32 (LAN9118_RX_CFG) & RXCFG_RX_DUMP);\r
   }\r
@@ -767,28 +755,28 @@ StartTx (
     TxCfg = MmioRead32 (LAN9118_TX_CFG);\r
     TxCfg |= TXCFG_TXS_DUMP | TXCFG_TXD_DUMP;\r
     MmioWrite32 (LAN9118_TX_CFG, TxCfg);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
 \r
   // Check if tx was started from MAC and enable if not\r
   if (Flags & START_TX_MAC) {\r
     MacCsr = IndirectMACRead32 (INDIRECT_MAC_INDEX_CR);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
     if ((MacCsr & MACCR_TX_EN) == 0) {\r
       MacCsr |= MACCR_TX_EN;\r
       IndirectMACWrite32 (INDIRECT_MAC_INDEX_CR, MacCsr);\r
-      gBS->Stall (LAN9118_STALL);\r
+      MemoryFence();\r
     }\r
   }\r
 \r
   // Check if tx was started from TX_CFG and enable if not\r
   if (Flags & START_TX_CFG) {\r
     TxCfg = MmioRead32 (LAN9118_TX_CFG);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
     if ((TxCfg & TXCFG_TX_ON) == 0) {\r
       TxCfg |= TXCFG_TX_ON;\r
       MmioWrite32 (LAN9118_TX_CFG, TxCfg);\r
-      gBS->Stall (LAN9118_STALL);\r
+      MemoryFence();\r
     }\r
   }\r
 \r
@@ -818,14 +806,14 @@ StartRx (
       RxCfg = MmioRead32 (LAN9118_RX_CFG);\r
       RxCfg |= RXCFG_RX_DUMP;\r
       MmioWrite32 (LAN9118_RX_CFG, RxCfg);\r
-      gBS->Stall (LAN9118_STALL);\r
+      MemoryFence();\r
 \r
       while (MmioRead32 (LAN9118_RX_CFG) & RXCFG_RX_DUMP);\r
     }\r
 \r
     MacCsr |= MACCR_RX_EN;\r
     IndirectMACWrite32 (INDIRECT_MAC_INDEX_CR, MacCsr);\r
-    gBS->Stall (LAN9118_STALL);\r
+    MemoryFence();\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -1015,7 +1003,7 @@ ChangeFifoAllocation (
   HwConf &= ~(0xF0000);\r
   HwConf |= ((TxFifoOption & 0xF) << 16);\r
   MmioWrite32 (LAN9118_HW_CFG, HwConf);\r
-  gBS->Stall (LAN9118_STALL);\r
+  MemoryFence();\r
 \r
   return EFI_SUCCESS;\r
 }\r