aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch')
-rw-r--r--target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch96
1 files changed, 0 insertions, 96 deletions
diff --git a/target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch b/target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
deleted file mode 100644
index 4a8f532aa3..0000000000
--- a/target/linux/generic/pending-3.18/735-net-phy-at803x-fix-at8033-sgmii-mode.patch
+++ /dev/null
@@ -1,96 +0,0 @@
---- a/drivers/net/phy/at803x.c
-+++ b/drivers/net/phy/at803x.c
-@@ -36,6 +36,9 @@
- #define AT803X_INER 0x0012
- #define AT803X_INER_INIT 0xec00
- #define AT803X_INSR 0x0013
-+#define AT803X_REG_CHIP_CONFIG 0x1f
-+#define AT803X_BT_BX_REG_SEL 0x8000
-+#define AT803X_SGMII_ANEG_EN 0x1000
-
- #define AT803X_PCS_SMART_EEE_CTRL3 0x805D
- #define AT803X_SMART_EEE_CTRL3_LPI_TX_DELAY_SEL_MASK 0x3
-@@ -49,9 +52,10 @@
- #define AT803X_DEBUG_SYSTEM_MODE_CTRL 0x05
- #define AT803X_DEBUG_RGMII_TX_CLK_DLY BIT(8)
-
--#define ATH8030_PHY_ID 0x004dd076
--#define ATH8031_PHY_ID 0x004dd074
--#define ATH8035_PHY_ID 0x004dd072
-+#define AT803X_PHY_ID_MASK 0xffffffef
-+#define ATH8030_PHY_ID 0x004dd076
-+#define ATH8031_PHY_ID 0x004dd074
-+#define ATH8035_PHY_ID 0x004dd072
-
- MODULE_DESCRIPTION("Atheros 803x PHY driver");
- MODULE_AUTHOR("Matus Ujhelyi");
-@@ -267,6 +271,27 @@ static int at803x_config_init(struct phy
- {
- struct at803x_platform_data *pdata;
- int ret;
-+ u32 v;
-+
-+ if (phydev->drv->phy_id == ATH8031_PHY_ID &&
-+ phydev->interface == PHY_INTERFACE_MODE_SGMII)
-+ {
-+ v = phy_read(phydev, AT803X_REG_CHIP_CONFIG);
-+ /* select SGMII/fiber page */
-+ ret = phy_write(phydev, AT803X_REG_CHIP_CONFIG,
-+ v & ~AT803X_BT_BX_REG_SEL);
-+ if (ret)
-+ return ret;
-+ /* enable SGMII autonegotiation */
-+ ret = phy_write(phydev, MII_BMCR, AT803X_SGMII_ANEG_EN);
-+ if (ret)
-+ return ret;
-+ /* select copper page */
-+ ret = phy_write(phydev, AT803X_REG_CHIP_CONFIG,
-+ v | AT803X_BT_BX_REG_SEL);
-+ if (ret)
-+ return ret;
-+ }
-
- ret = genphy_config_init(phydev);
- if (ret < 0)
-@@ -393,7 +418,7 @@ static struct phy_driver at803x_driver[]
- /* ATHEROS 8035 */
- .phy_id = ATH8035_PHY_ID,
- .name = "Atheros 8035 ethernet",
-- .phy_id_mask = 0xffffffef,
-+ .phy_id_mask = AT803X_PHY_ID_MASK,
- .probe = at803x_probe,
- .config_init = at803x_config_init,
- .link_change_notify = at803x_link_change_notify,
-@@ -412,7 +437,7 @@ static struct phy_driver at803x_driver[]
- /* ATHEROS 8030 */
- .phy_id = ATH8030_PHY_ID,
- .name = "Atheros 8030 ethernet",
-- .phy_id_mask = 0xffffffef,
-+ .phy_id_mask = AT803X_PHY_ID_MASK,
- .probe = at803x_probe,
- .config_init = at803x_config_init,
- .link_change_notify = at803x_link_change_notify,
-@@ -430,8 +455,8 @@ static struct phy_driver at803x_driver[]
- }, {
- /* ATHEROS 8031 */
- .phy_id = ATH8031_PHY_ID,
-- .name = "Atheros 8031 ethernet",
-- .phy_id_mask = 0xffffffef,
-+ .name = "Atheros 8031/8033 ethernet",
-+ .phy_id_mask = AT803X_PHY_ID_MASK,
- .probe = at803x_probe,
- .config_init = at803x_config_init,
- .link_change_notify = at803x_link_change_notify,
-@@ -465,9 +490,9 @@ module_init(atheros_init);
- module_exit(atheros_exit);
-
- static struct mdio_device_id __maybe_unused atheros_tbl[] = {
-- { ATH8030_PHY_ID, 0xffffffef },
-- { ATH8031_PHY_ID, 0xffffffef },
-- { ATH8035_PHY_ID, 0xffffffef },
-+ { ATH8030_PHY_ID, AT803X_PHY_ID_MASK },
-+ { ATH8031_PHY_ID, AT803X_PHY_ID_MASK },
-+ { ATH8035_PHY_ID, AT803X_PHY_ID_MASK },
- { }
- };
-