From bba49814a3280f7385adc37bcb89550ba966f8cf Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Thu, 24 Sep 2015 17:36:00 +0200 Subject: [PATCH] net: phy: Add support for NatSemi DP83867 This is temporary version to get dc1 up and running without breaking different boards. Signed-off-by: Michal Simek --- drivers/net/phy/natsemi.c | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/drivers/net/phy/natsemi.c b/drivers/net/phy/natsemi.c index ea9fe833ed8..d5c694011ab 100644 --- a/drivers/net/phy/natsemi.c +++ b/drivers/net/phy/natsemi.c @@ -110,10 +110,57 @@ static struct phy_driver DP83865_driver = { .shutdown = &genphy_shutdown, }; +int dp83867_config(struct phy_device *phydev) +{ + /* FIXME - describe this sequence in better way */ + phy_write(phydev, MDIO_DEVAD_NONE, 0x10, 0x5048); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x1F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0x86); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x401F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0xA8); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x1F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0x86); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x401F); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x1F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0x32); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x401F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0xD3); + + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x1F); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0E, 0x32); + phy_write(phydev, MDIO_DEVAD_NONE, 0x0D, 0x401F); + + genphy_config_aneg(phydev); + + return 0; +} + +int dp83867_startup(struct phy_device *phydev) +{ + genphy_update_link(phydev); + genphy_parse_link(phydev); + + return 0; +} + +static struct phy_driver DP83867_driver = { + .name = "NatSemi DP83867", + .uid = 0x2000a231, + .mask = 0xfffffff0, + .features = PHY_GBIT_FEATURES, + .config = &dp83867_config, + .startup = &dp83867_startup, + .shutdown = &genphy_shutdown, +}; + int phy_natsemi_init(void) { phy_register(&DP83630_driver); phy_register(&DP83865_driver); + phy_register(&DP83867_driver); return 0; } -- 2.47.3