Commit 2c2668f97132da44516a3847d365269b41bee9d7

Authored by Roy Zang
Committed by Wolfgang Denk
1 parent 39768f7715

Net: Add Intel E1000 82574L PCIe card support

Add Intel E1000 82574L PCIe card support. Test on MPC8544DS
and MPC8572 board.
Add the missing contact information for future support.

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>

Showing 3 changed files with 32 additions and 8 deletions Side-by-side Diff

... ... @@ -40,6 +40,8 @@
40 40 * Copyright (C) Linux Networx.
41 41 * Massive upgrade to work with the new intel gigabit NICs.
42 42 * <ebiederman at lnxi dot com>
  43 + *
  44 + * Copyright 2011 Freescale Semiconductor, Inc.
43 45 */
44 46  
45 47 #include "e1000.h"
... ... @@ -100,6 +102,7 @@
100 102 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82573E},
101 103 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82573E_IAMT},
102 104 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82573L},
  105 + {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82574L},
103 106 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82546GB_QUAD_COPPER_KSP3},
104 107 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80003ES2LAN_COPPER_DPT},
105 108 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80003ES2LAN_SERDES_DPT},
... ... @@ -331,7 +334,7 @@
331 334 if (hw->mac_type == e1000_ich8lan)
332 335 return FALSE;
333 336  
334   - if (hw->mac_type == e1000_82573) {
  337 + if (hw->mac_type == e1000_82573 || hw->mac_type == e1000_82574) {
335 338 eecd = E1000_READ_REG(hw, EECD);
336 339  
337 340 /* Isolate bits 15 & 16 */
... ... @@ -364,7 +367,7 @@
364 367 return -E1000_ERR_SWFW_SYNC;
365 368 eecd = E1000_READ_REG(hw, EECD);
366 369  
367   - if (hw->mac_type != e1000_82573) {
  370 + if (hw->mac_type != e1000_82573 || hw->mac_type != e1000_82574) {
368 371 /* Request EEPROM Access */
369 372 if (hw->mac_type > e1000_82544) {
370 373 eecd |= E1000_EECD_REQ;
... ... @@ -498,6 +501,7 @@
498 501 eeprom->use_eewr = FALSE;
499 502 break;
500 503 case e1000_82573:
  504 + case e1000_82574:
501 505 eeprom->type = e1000_eeprom_spi;
502 506 eeprom->opcode_bits = 8;
503 507 eeprom->delay_usec = 1;
... ... @@ -1317,6 +1321,9 @@
1317 1321 case E1000_DEV_ID_82573L:
1318 1322 hw->mac_type = e1000_82573;
1319 1323 break;
  1324 + case E1000_DEV_ID_82574L:
  1325 + hw->mac_type = e1000_82574;
  1326 + break;
1320 1327 case E1000_DEV_ID_80003ES2LAN_COPPER_SPT:
1321 1328 case E1000_DEV_ID_80003ES2LAN_SERDES_SPT:
1322 1329 case E1000_DEV_ID_80003ES2LAN_COPPER_DPT:
... ... @@ -1487,6 +1494,7 @@
1487 1494 E1000_WRITE_REG(hw, TARC1, reg_tarc1);
1488 1495 break;
1489 1496 case e1000_82573:
  1497 + case e1000_82574:
1490 1498 reg_ctrl_ext = E1000_READ_REG(hw, CTRL_EXT);
1491 1499 reg_ctrl_ext &= ~(1 << 23);
1492 1500 reg_ctrl_ext |= (1 << 22);
1493 1501  
... ... @@ -1728,14 +1736,13 @@
1728 1736 | E1000_TXDCTL_FULL_TX_DESC_WB;
1729 1737 E1000_WRITE_REG(hw, TXDCTL1, ctrl);
1730 1738 break;
  1739 + case e1000_82573:
  1740 + case e1000_82574:
  1741 + reg_data = E1000_READ_REG(hw, GCR);
  1742 + reg_data |= E1000_GCR_L1_ACT_WITHOUT_L0S_RX;
  1743 + E1000_WRITE_REG(hw, GCR, reg_data);
1731 1744 }
1732 1745  
1733   - if (hw->mac_type == e1000_82573) {
1734   - uint32_t gcr = E1000_READ_REG(hw, GCR);
1735   - gcr |= E1000_GCR_L1_ACT_WITHOUT_L0S_RX;
1736   - E1000_WRITE_REG(hw, GCR, gcr);
1737   - }
1738   -
1739 1746 #if 0
1740 1747 /* Clear all of the statistics registers (clear on read). It is
1741 1748 * important that we do this after we have tried to establish link
... ... @@ -1812,6 +1819,7 @@
1812 1819 switch (hw->mac_type) {
1813 1820 case e1000_ich8lan:
1814 1821 case e1000_82573:
  1822 + case e1000_82574:
1815 1823 hw->fc = e1000_fc_full;
1816 1824 break;
1817 1825 default:
... ... @@ -4560,6 +4568,9 @@
4560 4568 hw->phy_type = e1000_phy_gg82563;
4561 4569 break;
4562 4570 }
  4571 + case BME1000_E_PHY_ID:
  4572 + hw->phy_type = e1000_phy_bm;
  4573 + break;
4563 4574 /* Fall Through */
4564 4575 default:
4565 4576 /* Should never have loaded on this device */
... ... @@ -4646,6 +4657,10 @@
4646 4657 if (hw->phy_id == M88E1111_I_PHY_ID)
4647 4658 match = TRUE;
4648 4659 break;
  4660 + case e1000_82574:
  4661 + if (hw->phy_id == BME1000_E_PHY_ID)
  4662 + match = TRUE;
  4663 + break;
4649 4664 case e1000_80003es2lan:
4650 4665 if (hw->phy_id == GG82563_E_PHY_ID)
4651 4666 match = TRUE;
... ... @@ -4710,6 +4725,7 @@
4710 4725 break;
4711 4726 case e1000_ich8lan:
4712 4727 case e1000_82573:
  4728 + case e1000_82574:
4713 4729 /* The STATUS_TBIMODE bit is reserved or reused
4714 4730 * for the this device.
4715 4731 */
... ... @@ -5125,6 +5141,7 @@
5125 5141 case e1000_82571:
5126 5142 case e1000_82572:
5127 5143 case e1000_82573:
  5144 + case e1000_82574:
5128 5145 case e1000_80003es2lan:
5129 5146 hw->bus_type = e1000_bus_type_pci_express;
5130 5147 break;
... ... @@ -2,6 +2,7 @@
2 2  
3 3  
4 4 Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
  5 + Copyright 2011 Freescale Semiconductor, Inc.
5 6  
6 7 This program is free software; you can redistribute it and/or modify it
7 8 under the terms of the GNU General Public License as published by the Free
... ... @@ -81,6 +82,7 @@
81 82 e1000_82571,
82 83 e1000_82572,
83 84 e1000_82573,
  85 + e1000_82574,
84 86 e1000_80003es2lan,
85 87 e1000_ich8lan,
86 88 e1000_num_macs
... ... @@ -200,6 +202,7 @@
200 202 e1000_phy_gg82563,
201 203 e1000_phy_igp_3,
202 204 e1000_phy_ife,
  205 + e1000_phy_bm,
203 206 e1000_phy_undefined = 0xFF
204 207 } e1000_phy_type;
205 208  
... ... @@ -286,6 +289,7 @@
286 289 #define E1000_DEV_ID_82573E 0x108B
287 290 #define E1000_DEV_ID_82573E_IAMT 0x108C
288 291 #define E1000_DEV_ID_82573L 0x109A
  292 +#define E1000_DEV_ID_82574L 0x10D3
289 293 #define E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 0x10B5
290 294 #define E1000_DEV_ID_80003ES2LAN_COPPER_DPT 0x1096
291 295 #define E1000_DEV_ID_80003ES2LAN_SERDES_DPT 0x1098
... ... @@ -2416,6 +2420,8 @@
2416 2420 #define M88E1111_I_PHY_ID 0x01410CC0
2417 2421 #define L1LXT971A_PHY_ID 0x001378E0
2418 2422 #define GG82563_E_PHY_ID 0x01410CA0
  2423 +
  2424 +#define BME1000_E_PHY_ID 0x01410CB0
2419 2425  
2420 2426 /* Miscellaneous PHY bit definitions. */
2421 2427 #define PHY_PREAMBLE 0xFFFFFFFF
... ... @@ -1853,6 +1853,7 @@
1853 1853 #define PCI_DEVICE_ID_INTEL_82573E 0x108B
1854 1854 #define PCI_DEVICE_ID_INTEL_82573E_IAMT 0x108C
1855 1855 #define PCI_DEVICE_ID_INTEL_82573L 0x109A
  1856 +#define PCI_DEVICE_ID_INTEL_82574L 0x10D3
1856 1857 #define PCI_DEVICE_ID_INTEL_82546GB_QUAD_COPPER_KSP3 0x10B5
1857 1858 #define PCI_DEVICE_ID_INTEL_80003ES2LAN_COPPER_DPT 0x1096
1858 1859 #define PCI_DEVICE_ID_INTEL_80003ES2LAN_SERDES_DPT 0x1098