]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
UBUNTU: SAUCE: igb: add support for using Broadcom 54616 as PHY
authorWen-chien Jesse Sung <jesse.sung@canonical.com>
Mon, 21 Aug 2017 09:11:00 +0000 (11:11 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Thu, 24 Aug 2017 10:28:53 +0000 (12:28 +0200)
BugLink: https://launchpad.net/bugs/1712024
Ported from packages/base/any/kernels/3.18.25/patches/driver-support-intel-igb-bcm54616-phy.patch
in OpenNetworkLinux https://github.com/opencomputeproject/OpenNetworkLinux/

Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-By: AceLan Kao <acelan.kao@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/net/ethernet/intel/igb/e1000_82575.c
drivers/net/ethernet/intel/igb/e1000_defines.h
drivers/net/ethernet/intel/igb/e1000_hw.h
drivers/net/ethernet/intel/igb/igb_main.c

index a61447fd778eb579ef0b31d1a0d4c33a9e5386ee..45abf2c7855426a1dcd7fcc2eaeb7bf2c4ca6c37 100644 (file)
@@ -328,6 +328,9 @@ static s32 igb_init_phy_params_82575(struct e1000_hw *hw)
                phy->ops.set_d3_lplu_state = igb_set_d3_lplu_state_82580;
                phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88;
                break;
+       case BCM54616_E_PHY_ID:
+               phy->type = e1000_phy_bcm54616;
+               break;
        default:
                ret_val = -E1000_ERR_PHY;
                goto out;
@@ -1603,6 +1606,7 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw)
        case e1000_i350:
        case e1000_i210:
        case e1000_i211:
+       case e1000_i354:
                phpm_reg = rd32(E1000_82580_PHY_POWER_MGMT);
                phpm_reg &= ~E1000_82580_PM_GO_LINKD;
                wr32(E1000_82580_PHY_POWER_MGMT, phpm_reg);
@@ -1647,6 +1651,8 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw)
        case e1000_phy_82580:
                ret_val = igb_copper_link_setup_82580(hw);
                break;
+       case e1000_phy_bcm54616:
+               break;
        default:
                ret_val = -E1000_ERR_PHY;
                break;
index 8aee314332a87a9cfe696d8451aeb8b321b7411d..8a9f0af034c00d46ad2f3e213e3c667e3a5590c4 100644 (file)
 #define I210_I_PHY_ID        0x01410C00
 #define M88E1543_E_PHY_ID    0x01410EA0
 #define M88E1512_E_PHY_ID    0x01410DD0
+#define BCM54616_E_PHY_ID    0x03625D10
 
 /* M88E1000 Specific Registers */
 #define M88E1000_PHY_SPEC_CTRL     0x10  /* PHY Specific Control Register */
index 2fb2213cd562e84df0bcd42f55618e76133fe922..644d8f59debebd03c1035db2456dd3de049be89a 100644 (file)
@@ -128,6 +128,7 @@ enum e1000_phy_type {
        e1000_phy_ife,
        e1000_phy_82580,
        e1000_phy_i210,
+       e1000_phy_bcm54616,
 };
 
 enum e1000_bus_type {
index 1515abaa5ac9cab53ef4aab0ee05104c5bd2a61f..c0204b662c321225a80834c24cdec0eed1509602 100644 (file)
@@ -109,6 +109,7 @@ static const struct pci_device_id igb_pci_tbl[] = {
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_COPPER), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_FIBER_SERDES), board_82575 },
        { PCI_VDEVICE(INTEL, E1000_DEV_ID_82575GB_QUAD_COPPER), board_82575 },
+       { PCI_VDEVICE(INTEL, E1000_DEV_ID_I354_SGMII), board_82575 },
        /* required last entry */
        {0, }
 };