From 6027384a69a7e671e810ae65b690dbfb25d5da81 Mon Sep 17 00:00:00 2001 From: Xie Xiaobo Date: Wed, 10 Apr 2013 16:23:39 +0800 Subject: phylib: Add Atheros AR8035 GETH PHY support Signed-off-by: Xie Xiaobo --- drivers/net/phy/atheros.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'drivers/net/phy/atheros.c') diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c index 9b3808bfa..4691f8570 100644 --- a/drivers/net/phy/atheros.c +++ b/drivers/net/phy/atheros.c @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright 2011 Freescale Semiconductor, Inc. + * Copyright 2011, 2013 Freescale Semiconductor, Inc. * author Andy Fleming * */ @@ -30,6 +30,27 @@ static int ar8021_config(struct phy_device *phydev) return 0; } +static int ar8035_config(struct phy_device *phydev) +{ + int regval; + + phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x0007); + phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016); + phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007); + regval = phy_read(phydev, MDIO_DEVAD_NONE, 0xe); + phy_write(phydev, MDIO_DEVAD_NONE, 0xe, (regval|0x0018)); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); + regval = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, (regval|0x0100)); + + genphy_config_aneg(phydev); + + phy_reset(phydev); + + return 0; +} + static struct phy_driver AR8021_driver = { .name = "AR8021", .uid = 0x4dd040, @@ -40,9 +61,20 @@ static struct phy_driver AR8021_driver = { .shutdown = genphy_shutdown, }; +struct phy_driver AR8035_driver = { + .name = "AR8035", + .uid = 0x4dd072, + .mask = 0x4fffff, + .features = PHY_GBIT_FEATURES, + .config = ar8035_config, + .startup = genphy_startup, + .shutdown = genphy_shutdown, +}; + int phy_atheros_init(void) { phy_register(&AR8021_driver); + phy_register(&AR8035_driver); return 0; } -- cgit v1.2.3-70-g09d2 From 433a2c5325b982b49b099e526d373d07d0cc5e97 Mon Sep 17 00:00:00 2001 From: Heiko Schocher Date: Tue, 4 Jun 2013 10:58:00 +0200 Subject: phylib: add atheros ar803x phy add atheros ar803x phy, used on the upcoming siemens boards. Signed-off-by: Heiko Schocher Cc: Andy Fleming Cc: Joe Hershberger --- drivers/net/phy/atheros.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'drivers/net/phy/atheros.c') diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c index 4691f8570..09d487971 100644 --- a/drivers/net/phy/atheros.c +++ b/drivers/net/phy/atheros.c @@ -61,7 +61,17 @@ static struct phy_driver AR8021_driver = { .shutdown = genphy_shutdown, }; -struct phy_driver AR8035_driver = { +static struct phy_driver AR8031_driver = { + .name = "AR8031", + .uid = 0x4dd074, + .mask = 0xfffff0, + .features = PHY_GBIT_FEATURES, + .config = genphy_config, + .startup = genphy_startup, + .shutdown = genphy_shutdown, +}; + +static struct phy_driver AR8035_driver = { .name = "AR8035", .uid = 0x4dd072, .mask = 0x4fffff, @@ -74,6 +84,7 @@ struct phy_driver AR8035_driver = { int phy_atheros_init(void) { phy_register(&AR8021_driver); + phy_register(&AR8031_driver); phy_register(&AR8035_driver); return 0; -- cgit v1.2.3-70-g09d2