\r
// Write the current configuration to the register\r
MmioWrite32 (LAN9118_PMT_CTRL, PmConf);\r
- gBS->Stall (LAN9118_STALL);\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
\r
// Configure GPIO and HW\r
Status = ConfigureHardware (HW_CONF_USE_LEDS, Snp);\r
\r
// Write the current configuration to the register\r
MmioWrite32 (LAN9118_PMT_CTRL, PmConf);\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
\r
// Reactivate the LEDs\r
Status = ConfigureHardware (HW_CONF_USE_LEDS, Snp);\r
HwConf |= HW_CFG_TX_FIFO_SIZE(gTxBuffer); // assign size chosen in SnpInitialize\r
\r
MmioWrite32 (LAN9118_HW_CFG, HwConf); // Write the conf\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
}\r
\r
// Enable the receiver and transmitter and clear their contents\r
// Write the options to the MAC_CSR\r
//\r
IndirectMACWrite32 (INDIRECT_MAC_INDEX_CR, MacCSRValue);\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
\r
//\r
// If we have to retrieve something, start packet reception.\r
\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
\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
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
gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
}\r
if (!Timeout) {\r
return EFI_TIMEOUT;\r
Timeout = 20;\r
while ((MmioRead32 (LAN9118_E2P_CMD) & E2P_EPC_BUSY) && --Timeout){\r
gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
}\r
if (!Timeout) {\r
return EFI_TIMEOUT;\r
\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
\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_BCR) {\r
\r
// Wait for completion\r
while (IndirectPHYRead32 (PHY_INDEX_BASIC_CTRL) & PHYCR_RESET) {\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
}\r
}\r
\r
\r
// Write the configuration\r
MmioWrite32 (LAN9118_GPIO_CFG, GpioConf);\r
- gBS->Stall (LAN9118_STALL);\r
+ MemoryFence();\r
}\r
\r
return EFI_SUCCESS;\r
// Wait until it is up or until Time Out\r
TimeOut = 2000;\r
while ((IndirectPHYRead32 (PHY_INDEX_BASIC_STATUS) & PHYSTS_LINK_STS) == 0) {\r
+ MemoryFence();\r
gBS->Stall (LAN9118_STALL);\r
TimeOut--;\r
if (!TimeOut) {\r
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
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
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
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
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
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