Message ID | 1503306680-5592-1-git-send-email-jesse.sung@canonical.com |
---|---|
State | New |
Headers | show |
On 21.08.2017 11:11, Wen-chien Jesse Sung wrote: > 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> > --- For X/Z this needs some SRU justification in the bug report. Generally SRU would be better after that went into upstream, but looks to be isolated enough that it is testable and has a low chance to cause regressions. -Stefan > drivers/net/ethernet/intel/igb/e1000_82575.c | 6 ++++++ > drivers/net/ethernet/intel/igb/e1000_defines.h | 1 + > drivers/net/ethernet/intel/igb/e1000_hw.h | 1 + > drivers/net/ethernet/intel/igb/igb_main.c | 1 + > 4 files changed, 9 insertions(+) > > diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c > index 9a1a9c7..337c8e2 100644 > --- a/drivers/net/ethernet/intel/igb/e1000_82575.c > +++ b/drivers/net/ethernet/intel/igb/e1000_82575.c > @@ -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; > diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h > index e9f23ee..143bcf0 100644 > --- a/drivers/net/ethernet/intel/igb/e1000_defines.h > +++ b/drivers/net/ethernet/intel/igb/e1000_defines.h > @@ -867,6 +867,7 @@ > #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 */ > diff --git a/drivers/net/ethernet/intel/igb/e1000_hw.h b/drivers/net/ethernet/intel/igb/e1000_hw.h > index f0c416e..783914e 100644 > --- a/drivers/net/ethernet/intel/igb/e1000_hw.h > +++ b/drivers/net/ethernet/intel/igb/e1000_hw.h > @@ -128,6 +128,7 @@ enum e1000_phy_type { > e1000_phy_ife, > e1000_phy_82580, > e1000_phy_i210, > + e1000_phy_bcm54616, > }; > > enum e1000_bus_type { > diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c > index b01382f..3325dab 100644 > --- a/drivers/net/ethernet/intel/igb/igb_main.c > +++ b/drivers/net/ethernet/intel/igb/igb_main.c > @@ -108,6 +108,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, } > }; >
Acked-By: AceLan Kao <acelan.kao@canonical.com>
On Mon, Aug 21, 2017 at 05:11:20PM +0800, Wen-chien Jesse Sung wrote: > 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> Applied to artful/master-next and unstable/master, thanks.
Applied to xenial/master-next and zesty/master-next branches. Please add the SRU justification in the bug report as pointed out by Stefan. Thanks.
diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c index 9a1a9c7..337c8e2 100644 --- a/drivers/net/ethernet/intel/igb/e1000_82575.c +++ b/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -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; diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h index e9f23ee..143bcf0 100644 --- a/drivers/net/ethernet/intel/igb/e1000_defines.h +++ b/drivers/net/ethernet/intel/igb/e1000_defines.h @@ -867,6 +867,7 @@ #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 */ diff --git a/drivers/net/ethernet/intel/igb/e1000_hw.h b/drivers/net/ethernet/intel/igb/e1000_hw.h index f0c416e..783914e 100644 --- a/drivers/net/ethernet/intel/igb/e1000_hw.h +++ b/drivers/net/ethernet/intel/igb/e1000_hw.h @@ -128,6 +128,7 @@ enum e1000_phy_type { e1000_phy_ife, e1000_phy_82580, e1000_phy_i210, + e1000_phy_bcm54616, }; enum e1000_bus_type { diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index b01382f..3325dab 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -108,6 +108,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, } };
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> --- drivers/net/ethernet/intel/igb/e1000_82575.c | 6 ++++++ drivers/net/ethernet/intel/igb/e1000_defines.h | 1 + drivers/net/ethernet/intel/igb/e1000_hw.h | 1 + drivers/net/ethernet/intel/igb/igb_main.c | 1 + 4 files changed, 9 insertions(+)