diff options
author | David S. Miller <davem@davemloft.net> | 2014-07-16 17:09:34 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-16 17:09:34 -0400 |
commit | 1a98c69af1ecd97bfd1f4e4539924a9192434e36 (patch) | |
tree | a243defcf921ea174f8e43fce11d06830a6a9c36 /drivers/net/ethernet/realtek | |
parent | 7a575f6b907ea5d207d2b5010293c189616eae34 (diff) | |
parent | b6603fe574af289dbe9eb9fb4c540bca04f5a053 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/realtek')
-rw-r--r-- | drivers/net/ethernet/realtek/r8169.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index 51c78ce27b37..6175bd59190a 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c | |||
@@ -540,6 +540,7 @@ enum rtl_register_content { | |||
540 | MagicPacket = (1 << 5), /* Wake up when receives a Magic Packet */ | 540 | MagicPacket = (1 << 5), /* Wake up when receives a Magic Packet */ |
541 | LinkUp = (1 << 4), /* Wake up when the cable connection is re-established */ | 541 | LinkUp = (1 << 4), /* Wake up when the cable connection is re-established */ |
542 | Jumbo_En0 = (1 << 2), /* 8168 only. Reserved in the 8168b */ | 542 | Jumbo_En0 = (1 << 2), /* 8168 only. Reserved in the 8168b */ |
543 | Rdy_to_L23 = (1 << 1), /* L23 Enable */ | ||
543 | Beacon_en = (1 << 0), /* 8168 only. Reserved in the 8168b */ | 544 | Beacon_en = (1 << 0), /* 8168 only. Reserved in the 8168b */ |
544 | 545 | ||
545 | /* Config4 register */ | 546 | /* Config4 register */ |
@@ -4883,6 +4884,21 @@ static void rtl_enable_clock_request(struct pci_dev *pdev) | |||
4883 | PCI_EXP_LNKCTL_CLKREQ_EN); | 4884 | PCI_EXP_LNKCTL_CLKREQ_EN); |
4884 | } | 4885 | } |
4885 | 4886 | ||
4887 | static void rtl_pcie_state_l2l3_enable(struct rtl8169_private *tp, bool enable) | ||
4888 | { | ||
4889 | void __iomem *ioaddr = tp->mmio_addr; | ||
4890 | u8 data; | ||
4891 | |||
4892 | data = RTL_R8(Config3); | ||
4893 | |||
4894 | if (enable) | ||
4895 | data |= Rdy_to_L23; | ||
4896 | else | ||
4897 | data &= ~Rdy_to_L23; | ||
4898 | |||
4899 | RTL_W8(Config3, data); | ||
4900 | } | ||
4901 | |||
4886 | #define R8168_CPCMD_QUIRK_MASK (\ | 4902 | #define R8168_CPCMD_QUIRK_MASK (\ |
4887 | EnableBist | \ | 4903 | EnableBist | \ |
4888 | Mac_dbgo_oe | \ | 4904 | Mac_dbgo_oe | \ |
@@ -5232,6 +5248,7 @@ static void rtl_hw_start_8411(struct rtl8169_private *tp) | |||
5232 | }; | 5248 | }; |
5233 | 5249 | ||
5234 | rtl_hw_start_8168f(tp); | 5250 | rtl_hw_start_8168f(tp); |
5251 | rtl_pcie_state_l2l3_enable(tp, false); | ||
5235 | 5252 | ||
5236 | rtl_ephy_init(tp, e_info_8168f_1, ARRAY_SIZE(e_info_8168f_1)); | 5253 | rtl_ephy_init(tp, e_info_8168f_1, ARRAY_SIZE(e_info_8168f_1)); |
5237 | 5254 | ||
@@ -5270,6 +5287,8 @@ static void rtl_hw_start_8168g_1(struct rtl8169_private *tp) | |||
5270 | 5287 | ||
5271 | rtl_w1w0_eri(tp, 0x2fc, ERIAR_MASK_0001, 0x01, 0x06, ERIAR_EXGMAC); | 5288 | rtl_w1w0_eri(tp, 0x2fc, ERIAR_MASK_0001, 0x01, 0x06, ERIAR_EXGMAC); |
5272 | rtl_w1w0_eri(tp, 0x1b0, ERIAR_MASK_0011, 0x0000, 0x1000, ERIAR_EXGMAC); | 5289 | rtl_w1w0_eri(tp, 0x1b0, ERIAR_MASK_0011, 0x0000, 0x1000, ERIAR_EXGMAC); |
5290 | |||
5291 | rtl_pcie_state_l2l3_enable(tp, false); | ||
5273 | } | 5292 | } |
5274 | 5293 | ||
5275 | static void rtl_hw_start_8168g_2(struct rtl8169_private *tp) | 5294 | static void rtl_hw_start_8168g_2(struct rtl8169_private *tp) |
@@ -5522,6 +5541,8 @@ static void rtl_hw_start_8105e_1(struct rtl8169_private *tp) | |||
5522 | RTL_W8(DLLPR, RTL_R8(DLLPR) | PFM_EN); | 5541 | RTL_W8(DLLPR, RTL_R8(DLLPR) | PFM_EN); |
5523 | 5542 | ||
5524 | rtl_ephy_init(tp, e_info_8105e_1, ARRAY_SIZE(e_info_8105e_1)); | 5543 | rtl_ephy_init(tp, e_info_8105e_1, ARRAY_SIZE(e_info_8105e_1)); |
5544 | |||
5545 | rtl_pcie_state_l2l3_enable(tp, false); | ||
5525 | } | 5546 | } |
5526 | 5547 | ||
5527 | static void rtl_hw_start_8105e_2(struct rtl8169_private *tp) | 5548 | static void rtl_hw_start_8105e_2(struct rtl8169_private *tp) |
@@ -5557,6 +5578,8 @@ static void rtl_hw_start_8402(struct rtl8169_private *tp) | |||
5557 | rtl_eri_write(tp, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); | 5578 | rtl_eri_write(tp, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); |
5558 | rtl_eri_write(tp, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); | 5579 | rtl_eri_write(tp, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); |
5559 | rtl_w1w0_eri(tp, 0x0d4, ERIAR_MASK_0011, 0x0e00, 0xff00, ERIAR_EXGMAC); | 5580 | rtl_w1w0_eri(tp, 0x0d4, ERIAR_MASK_0011, 0x0e00, 0xff00, ERIAR_EXGMAC); |
5581 | |||
5582 | rtl_pcie_state_l2l3_enable(tp, false); | ||
5560 | } | 5583 | } |
5561 | 5584 | ||
5562 | static void rtl_hw_start_8106(struct rtl8169_private *tp) | 5585 | static void rtl_hw_start_8106(struct rtl8169_private *tp) |
@@ -5569,6 +5592,8 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp) | |||
5569 | RTL_W32(MISC, (RTL_R32(MISC) | DISABLE_LAN_EN) & ~EARLY_TALLY_EN); | 5592 | RTL_W32(MISC, (RTL_R32(MISC) | DISABLE_LAN_EN) & ~EARLY_TALLY_EN); |
5570 | RTL_W8(MCU, RTL_R8(MCU) | EN_NDP | EN_OOB_RESET); | 5593 | RTL_W8(MCU, RTL_R8(MCU) | EN_NDP | EN_OOB_RESET); |
5571 | RTL_W8(DLLPR, RTL_R8(DLLPR) & ~PFM_EN); | 5594 | RTL_W8(DLLPR, RTL_R8(DLLPR) & ~PFM_EN); |
5595 | |||
5596 | rtl_pcie_state_l2l3_enable(tp, false); | ||
5572 | } | 5597 | } |
5573 | 5598 | ||
5574 | static void rtl_hw_start_8101(struct net_device *dev) | 5599 | static void rtl_hw_start_8101(struct net_device *dev) |