]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
net: phy: Add support for NatSemi DP83867
authorMichal Simek <michal.simek@xilinx.com>
Thu, 24 Sep 2015 15:36:00 +0000 (17:36 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 25 Sep 2015 20:40:16 +0000 (22:40 +0200)
This is temporary version to get dc1 up and running without breaking
different boards.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/net/phy/natsemi.c

index ea9fe833ed8b07fb9c67752b29c75598af460407..d5c694011aba45f0361de59cca90923801fece06 100644 (file)
@@ -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;
 }