aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch')
-rw-r--r--target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch b/target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch
new file mode 100644
index 0000000000..4be229b8fa
--- /dev/null
+++ b/target/linux/generic/patches-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch
@@ -0,0 +1,123 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Subject: [PATCH 2/4] net: phy: update Broadcom drivers to v4.6
+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
+@@ -24,7 +24,7 @@
+ #define MII_BCM7XXX_100TX_FALSE_CAR 0x13
+ #define MII_BCM7XXX_100TX_DISC 0x14
+ #define MII_BCM7XXX_AUX_MODE 0x1d
+-#define MII_BCM7XX_64CLK_MDIO BIT(12)
++#define MII_BCM7XXX_64CLK_MDIO BIT(12)
+ #define MII_BCM7XXX_TEST 0x1f
+ #define MII_BCM7XXX_SHD_MODE_2 BIT(2)
+
+@@ -247,7 +247,7 @@ static int bcm7xxx_config_init(struct ph
+ int ret;
+
+ /* Enable 64 clock MDIO */
+- phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XX_64CLK_MDIO);
++ phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XXX_64CLK_MDIO);
+ phy_read(phydev, MII_BCM7XXX_AUX_MODE);
+
+ /* set shadow mode 2 */
+@@ -318,6 +318,22 @@ static int bcm7xxx_suspend(struct phy_de
+ .driver = { .owner = THIS_MODULE }, \
+ }
+
++#define BCM7XXX_40NM_EPHY(_oui, _name) \
++{ \
++ .phy_id = (_oui), \
++ .phy_id_mask = 0xfffffff0, \
++ .name = _name, \
++ .features = PHY_BASIC_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 }, \
++}
++
+ static struct phy_driver bcm7xxx_driver[] = {
+ BCM7XXX_28NM_GPHY(PHY_ID_BCM7250, "Broadcom BCM7250"),
+ BCM7XXX_28NM_GPHY(PHY_ID_BCM7364, "Broadcom BCM7364"),
+@@ -325,51 +341,19 @@ static struct phy_driver bcm7xxx_driver[
+ BCM7XXX_28NM_GPHY(PHY_ID_BCM7439, "Broadcom BCM7439"),
+ BCM7XXX_28NM_GPHY(PHY_ID_BCM7439_2, "Broadcom BCM7439 (2)"),
+ BCM7XXX_28NM_GPHY(PHY_ID_BCM7445, "Broadcom BCM7445"),
+-{
+- .phy_id = PHY_ID_BCM7425,
+- .phy_id_mask = 0xfffffff0,
+- .name = "Broadcom BCM7425",
+- .features = PHY_BASIC_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_ID_BCM7429,
+- .phy_id_mask = 0xfffffff0,
+- .name = "Broadcom BCM7429",
+- .features = PHY_BASIC_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_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_config_init,
+- .config_aneg = genphy_config_aneg,
+- .read_status = genphy_read_status,
+- .suspend = bcm7xxx_suspend,
+- .resume = bcm7xxx_config_init,
+- .driver = { .owner = THIS_MODULE },
+-} };
++ BCM7XXX_40NM_EPHY(PHY_ID_BCM7346, "Broadcom BCM7346"),
++ BCM7XXX_40NM_EPHY(PHY_ID_BCM7362, "Broadcom BCM7362"),
++ BCM7XXX_40NM_EPHY(PHY_ID_BCM7425, "Broadcom BCM7425"),
++ BCM7XXX_40NM_EPHY(PHY_ID_BCM7429, "Broadcom BCM7429"),
++ BCM7XXX_40NM_EPHY(PHY_ID_BCM7435, "Broadcom BCM7435"),
++};
+
+ static struct mdio_device_id __maybe_unused bcm7xxx_tbl[] = {
+ { PHY_ID_BCM7250, 0xfffffff0, },
+ { PHY_ID_BCM7364, 0xfffffff0, },
+ { PHY_ID_BCM7366, 0xfffffff0, },
++ { PHY_ID_BCM7346, 0xfffffff0, },
++ { PHY_ID_BCM7362, 0xfffffff0, },
+ { PHY_ID_BCM7425, 0xfffffff0, },
+ { PHY_ID_BCM7429, 0xfffffff0, },
+ { PHY_ID_BCM7439, 0xfffffff0, },
+--- a/include/linux/brcmphy.h
++++ b/include/linux/brcmphy.h
+@@ -24,6 +24,8 @@
+ #define PHY_ID_BCM7250 0xae025280
+ #define PHY_ID_BCM7364 0xae025260
+ #define PHY_ID_BCM7366 0x600d8490
++#define PHY_ID_BCM7346 0x600d8650
++#define PHY_ID_BCM7362 0x600d84b0
+ #define PHY_ID_BCM7425 0x600d86b0
+ #define PHY_ID_BCM7429 0x600d8730
+ #define PHY_ID_BCM7435 0x600d8750