aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2017-01-26 11:27:50 +0100
committerRafał Miłecki <rafal@milecki.pl>2017-01-26 12:24:09 +0100
commitf67b0276b6438c7ac29349bad43787cfc74a3937 (patch)
tree926ceb1c539e13dfff8614fdd8596657615a350c /target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch
parentfa0ac030f538448fcb3e4aac5d158128e9df9560 (diff)
downloadupstream-f67b0276b6438c7ac29349bad43787cfc74a3937.tar.gz
upstream-f67b0276b6438c7ac29349bad43787cfc74a3937.tar.bz2
upstream-f67b0276b6438c7ac29349bad43787cfc74a3937.zip
kernel: update Broadcom PHY drivers
This commit adds 4 patches, one per kernel version that was used for picking updates. This adds support for few new PHYs. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch')
-rw-r--r--target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch125
1 files changed, 125 insertions, 0 deletions
diff --git a/target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch b/target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch
new file mode 100644
index 0000000000..222d126f69
--- /dev/null
+++ b/target/linux/generic/patches-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch
@@ -0,0 +1,125 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Subject: [PATCH 1/4] net: phy: update Broadcom drivers to v4.5
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+
+--- a/drivers/net/phy/bcm7xxx.c
++++ b/drivers/net/phy/bcm7xxx.c
+@@ -250,10 +250,6 @@ static int bcm7xxx_config_init(struct ph
+ phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XX_64CLK_MDIO);
+ phy_read(phydev, MII_BCM7XXX_AUX_MODE);
+
+- /* Workaround only required for 100Mbits/sec capable PHYs */
+- if (phydev->supported & PHY_GBIT_FEATURES)
+- return 0;
+-
+ /* set shadow mode 2 */
+ ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST,
+ MII_BCM7XXX_SHD_MODE_2, MII_BCM7XXX_SHD_MODE_2);
+@@ -270,7 +266,7 @@ static int bcm7xxx_config_init(struct ph
+ phy_write(phydev, MII_BCM7XXX_100TX_FALSE_CAR, 0x7555);
+
+ /* reset shadow mode 2 */
+- ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST, MII_BCM7XXX_SHD_MODE_2, 0);
++ ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST, 0, MII_BCM7XXX_SHD_MODE_2);
+ if (ret < 0)
+ return ret;
+
+@@ -307,11 +303,6 @@ static int bcm7xxx_suspend(struct phy_de
+ return 0;
+ }
+
+-static int bcm7xxx_dummy_config_init(struct phy_device *phydev)
+-{
+- return 0;
+-}
+-
+ #define BCM7XXX_28NM_GPHY(_oui, _name) \
+ { \
+ .phy_id = (_oui), \
+@@ -338,7 +329,7 @@ static struct phy_driver bcm7xxx_driver[
+ .phy_id = PHY_ID_BCM7425,
+ .phy_id_mask = 0xfffffff0,
+ .name = "Broadcom BCM7425",
+- .features = PHY_GBIT_FEATURES |
++ .features = PHY_BASIC_FEATURES |
+ SUPPORTED_Pause | SUPPORTED_Asym_Pause,
+ .flags = PHY_IS_INTERNAL,
+ .config_init = bcm7xxx_config_init,
+@@ -351,7 +342,7 @@ static struct phy_driver bcm7xxx_driver[
+ .phy_id = PHY_ID_BCM7429,
+ .phy_id_mask = 0xfffffff0,
+ .name = "Broadcom BCM7429",
+- .features = PHY_GBIT_FEATURES |
++ .features = PHY_BASIC_FEATURES |
+ SUPPORTED_Pause | SUPPORTED_Asym_Pause,
+ .flags = PHY_IS_INTERNAL,
+ .config_init = bcm7xxx_config_init,
+@@ -361,31 +352,18 @@ static struct phy_driver bcm7xxx_driver[
+ .resume = bcm7xxx_config_init,
+ .driver = { .owner = THIS_MODULE },
+ }, {
+- .phy_id = PHY_BCM_OUI_4,
+- .phy_id_mask = 0xffff0000,
+- .name = "Broadcom BCM7XXX 40nm",
+- .features = PHY_GBIT_FEATURES |
+- SUPPORTED_Pause | SUPPORTED_Asym_Pause,
+- .flags = PHY_IS_INTERNAL,
+- .config_init = bcm7xxx_config_init,
+- .config_aneg = genphy_config_aneg,
+- .read_status = genphy_read_status,
+- .suspend = bcm7xxx_suspend,
+- .resume = bcm7xxx_config_init,
+- .driver = { .owner = THIS_MODULE },
+-}, {
+- .phy_id = PHY_BCM_OUI_5,
+- .phy_id_mask = 0xffffff00,
+- .name = "Broadcom BCM7XXX 65nm",
+- .features = PHY_BASIC_FEATURES |
++ .phy_id = PHY_ID_BCM7435,
++ .phy_id_mask = 0xfffffff0,
++ .name = "Broadcom BCM7435",
++ .features = PHY_BASIC_FEATURES |
+ SUPPORTED_Pause | SUPPORTED_Asym_Pause,
+- .flags = PHY_IS_INTERNAL,
+- .config_init = bcm7xxx_dummy_config_init,
+- .config_aneg = genphy_config_aneg,
+- .read_status = genphy_read_status,
+- .suspend = bcm7xxx_suspend,
+- .resume = bcm7xxx_config_init,
+- .driver = { .owner = THIS_MODULE },
++ .flags = PHY_IS_INTERNAL,
++ .config_init = bcm7xxx_config_init,
++ .config_aneg = genphy_config_aneg,
++ .read_status = genphy_read_status,
++ .suspend = bcm7xxx_suspend,
++ .resume = bcm7xxx_config_init,
++ .driver = { .owner = THIS_MODULE },
+ } };
+
+ static struct mdio_device_id __maybe_unused bcm7xxx_tbl[] = {
+@@ -395,9 +373,8 @@ static struct mdio_device_id __maybe_unu
+ { PHY_ID_BCM7425, 0xfffffff0, },
+ { PHY_ID_BCM7429, 0xfffffff0, },
+ { PHY_ID_BCM7439, 0xfffffff0, },
++ { PHY_ID_BCM7435, 0xfffffff0, },
+ { PHY_ID_BCM7445, 0xfffffff0, },
+- { PHY_BCM_OUI_4, 0xffff0000 },
+- { PHY_BCM_OUI_5, 0xffffff00 },
+ { }
+ };
+
+--- a/include/linux/brcmphy.h
++++ b/include/linux/brcmphy.h
+@@ -26,6 +26,7 @@
+ #define PHY_ID_BCM7366 0x600d8490
+ #define PHY_ID_BCM7425 0x600d86b0
+ #define PHY_ID_BCM7429 0x600d8730
++#define PHY_ID_BCM7435 0x600d8750
+ #define PHY_ID_BCM7439 0x600d8480
+ #define PHY_ID_BCM7439_2 0xae025080
+ #define PHY_ID_BCM7445 0x600d8510