From 71589bee68b1578ac9b94a7cb3e496b78d121cab Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Thu, 12 Jan 2017 21:23:56 +0000 Subject: [PATCH] This functionality was previously provided by an AS7716-specific patch. The changes are now controlled by module parameters and those modules parameters can be specified by the platform when necessary. --- ...ethernet-broadcom-tg3-preamble-reset.patch | 44 +++++++++++++++++++ .../base/any/kernels/3.16-lts/patches/series | 1 + 2 files changed, 45 insertions(+) create mode 100644 packages/base/any/kernels/3.16-lts/patches/drivers-net-ethernet-broadcom-tg3-preamble-reset.patch diff --git a/packages/base/any/kernels/3.16-lts/patches/drivers-net-ethernet-broadcom-tg3-preamble-reset.patch b/packages/base/any/kernels/3.16-lts/patches/drivers-net-ethernet-broadcom-tg3-preamble-reset.patch new file mode 100644 index 00000000..ffae736d --- /dev/null +++ b/packages/base/any/kernels/3.16-lts/patches/drivers-net-ethernet-broadcom-tg3-preamble-reset.patch @@ -0,0 +1,44 @@ +diff -urpN a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c +--- a/drivers/net/ethernet/broadcom/tg3.c 2016-11-20 01:17:41.000000000 +0000 ++++ b/drivers/net/ethernet/broadcom/tg3.c 2017-01-12 20:49:40.051901568 +0000 +@@ -234,6 +234,14 @@ static int tg3_debug = -1; /* -1 == use + module_param(tg3_debug, int, 0); + MODULE_PARM_DESC(tg3_debug, "Tigon3 bitmapped debugging message enable value"); + ++static int short_preamble = 0; ++module_param(short_preamble, int, 0); ++MODULE_PARM_DESC(short_preamble, "Enable short preamble."); ++ ++static int bcm5718s_reset = 0; ++module_param(bcm5718s_reset, int, 0); ++MODULE_PARM_DESC(bcm5718s_reset, "Enable BCM5718S reset support."); ++ + #define TG3_DRV_DATA_FLAG_10_100_ONLY 0x0001 + #define TG3_DRV_DATA_FLAG_5705_10_100 0x0002 + +@@ -1485,6 +1493,12 @@ static void tg3_mdio_config_5785(struct + static void tg3_mdio_start(struct tg3 *tp) + { + tp->mi_mode &= ~MAC_MI_MODE_AUTO_POLL; ++ ++ if(short_preamble) { ++ netdev_info(tp->dev, "Setting short preamble..."); ++ tp->mi_mode |= MAC_MI_MODE_SHORT_PREAMBLE; ++ } ++ + tw32_f(MAC_MI_MODE, tp->mi_mode); + udelay(80); + +@@ -2689,6 +2703,12 @@ static int tg3_phy_reset(struct tg3 *tp) + } + } + ++ if (bcm5718s_reset && tp->phy_id == TG3_PHY_ID_BCM5718S) { ++ netdev_info(tp->dev, "BCM5718S reset..."); ++ __tg3_writephy(tp, 0x8, 0x10, 0x1d0); /* set internal phy 0x8 to make linkup */ ++ __tg3_writephy(tp, 0x1f, 0x4, 0x5e1); /* enable 10/100 cability of external phy */ ++ } ++ + if (tg3_flag(tp, 5717_PLUS) && + (tp->phy_flags & TG3_PHYFLG_MII_SERDES)) + return 0; diff --git a/packages/base/any/kernels/3.16-lts/patches/series b/packages/base/any/kernels/3.16-lts/patches/series index 3fb26324..436aa4ed 100644 --- a/packages/base/any/kernels/3.16-lts/patches/series +++ b/packages/base/any/kernels/3.16-lts/patches/series @@ -20,3 +20,4 @@ driver-early-dma-allocator.patch driver-esdhc-p2020-broken-timeout.patch drivers-gpio-config-arch-nr-gpios.patch driver-hwmon-emerson-update-pmbus-core.patch +drivers-net-ethernet-broadcom-tg3-preamble-reset.patch