|
@@ -575,35 +575,8 @@ static inline u32 __er32(struct e1000_hw *hw, unsigned long reg)
|
|
|
|
|
|
#define er32(reg) __er32(hw, E1000_##reg)
|
|
|
|
|
|
-/**
|
|
|
- * __ew32_prepare - prepare to write to MAC CSR register on certain parts
|
|
|
- * @hw: pointer to the HW structure
|
|
|
- *
|
|
|
- * When updating the MAC CSR registers, the Manageability Engine (ME) could
|
|
|
- * be accessing the registers at the same time. Normally, this is handled in
|
|
|
- * h/w by an arbiter but on some parts there is a bug that acknowledges Host
|
|
|
- * accesses later than it should which could result in the register to have
|
|
|
- * an incorrect value. Workaround this by checking the FWSM register which
|
|
|
- * has bit 24 set while ME is accessing MAC CSR registers, wait if it is set
|
|
|
- * and try again a number of times.
|
|
|
- **/
|
|
|
-static inline s32 __ew32_prepare(struct e1000_hw *hw)
|
|
|
-{
|
|
|
- s32 i = E1000_ICH_FWSM_PCIM2PCI_COUNT;
|
|
|
-
|
|
|
- while ((er32(FWSM) & E1000_ICH_FWSM_PCIM2PCI) && --i)
|
|
|
- udelay(50);
|
|
|
-
|
|
|
- return i;
|
|
|
-}
|
|
|
-
|
|
|
-static inline void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val)
|
|
|
-{
|
|
|
- if (hw->adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA)
|
|
|
- __ew32_prepare(hw);
|
|
|
-
|
|
|
- writel(val, hw->hw_addr + reg);
|
|
|
-}
|
|
|
+s32 __ew32_prepare(struct e1000_hw *hw);
|
|
|
+void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val);
|
|
|
|
|
|
#define ew32(reg, val) __ew32(hw, E1000_##reg, (val))
|
|
|
|