aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/realtek
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-07-16 17:09:34 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-16 17:09:34 -0400
commit1a98c69af1ecd97bfd1f4e4539924a9192434e36 (patch)
treea243defcf921ea174f8e43fce11d06830a6a9c36 /drivers/net/ethernet/realtek
parent7a575f6b907ea5d207d2b5010293c189616eae34 (diff)
parentb6603fe574af289dbe9eb9fb4c540bca04f5a053 (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.c25
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
4887static 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
5275static void rtl_hw_start_8168g_2(struct rtl8169_private *tp) 5294static 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
5527static void rtl_hw_start_8105e_2(struct rtl8169_private *tp) 5548static 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
5562static void rtl_hw_start_8106(struct rtl8169_private *tp) 5585static 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
5574static void rtl_hw_start_8101(struct net_device *dev) 5599static void rtl_hw_start_8101(struct net_device *dev)