提交 1a10ccae 编写于 作者: J Jon Mason 提交者: David S. Miller

sky2: remove unnecessary reads of PCI_CAP_ID_EXP

The PCIE capability offset is saved during PCI bus walking.  It will
remove an unnecessary search in the PCI configuration space if this
value is referenced instead of reacquiring it.  Also, pci_is_pcie is a
better way of determining if the device is PCIE or not (as it uses the
same saved PCIE capability offset).
Signed-off-by: NJon Mason <jdmason@kudzu.us>
Acked-by: NStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 e44daade
...@@ -1449,7 +1449,7 @@ static void sky2_rx_start(struct sky2_port *sky2) ...@@ -1449,7 +1449,7 @@ static void sky2_rx_start(struct sky2_port *sky2)
sky2_qset(hw, rxq); sky2_qset(hw, rxq);
/* On PCI express lowering the watermark gives better performance */ /* On PCI express lowering the watermark gives better performance */
if (pci_find_capability(hw->pdev, PCI_CAP_ID_EXP)) if (pci_is_pcie(hw->pdev))
sky2_write32(hw, Q_ADDR(rxq, Q_WM), BMU_WM_PEX); sky2_write32(hw, Q_ADDR(rxq, Q_WM), BMU_WM_PEX);
/* These chips have no ram buffer? /* These chips have no ram buffer?
...@@ -3072,7 +3072,7 @@ static void sky2_reset(struct sky2_hw *hw) ...@@ -3072,7 +3072,7 @@ static void sky2_reset(struct sky2_hw *hw)
{ {
struct pci_dev *pdev = hw->pdev; struct pci_dev *pdev = hw->pdev;
u16 status; u16 status;
int i, cap; int i;
u32 hwe_mask = Y2_HWE_ALL_MASK; u32 hwe_mask = Y2_HWE_ALL_MASK;
/* disable ASF */ /* disable ASF */
...@@ -3108,8 +3108,7 @@ static void sky2_reset(struct sky2_hw *hw) ...@@ -3108,8 +3108,7 @@ static void sky2_reset(struct sky2_hw *hw)
sky2_write8(hw, B0_CTST, CS_MRST_CLR); sky2_write8(hw, B0_CTST, CS_MRST_CLR);
cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); if (pci_is_pcie(pdev)) {
if (cap) {
sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS, sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
0xfffffffful); 0xfffffffful);
...@@ -3171,11 +3170,11 @@ static void sky2_reset(struct sky2_hw *hw) ...@@ -3171,11 +3170,11 @@ static void sky2_reset(struct sky2_hw *hw)
/* check if PSMv2 was running before */ /* check if PSMv2 was running before */
reg = sky2_pci_read16(hw, PSM_CONFIG_REG3); reg = sky2_pci_read16(hw, PSM_CONFIG_REG3);
if (reg & PCI_EXP_LNKCTL_ASPMC) { if (reg & PCI_EXP_LNKCTL_ASPMC)
cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
/* restore the PCIe Link Control register */ /* restore the PCIe Link Control register */
sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg); sky2_pci_write16(hw, pdev->pcie_cap + PCI_EXP_LNKCTL,
} reg);
sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
/* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */ /* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册