Commit 2c2668f97132da44516a3847d365269b41bee9d7
Committed by
Wolfgang Denk
1 parent
39768f7715
Exists in
master
and in
54 other branches
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
drivers/net/e1000.c
... | ... | @@ -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; |
drivers/net/e1000.h
... | ... | @@ -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 |
include/pci_ids.h
... | ... | @@ -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 |