]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/phy/micrel.c
Merge branch 'topic/arm/socfpga-20141006' of git://git.denx.de/u-boot-socfpga
[u-boot] / drivers / net / phy / micrel.c
index f3e3054eff138eac0bf4e9af2035c603b7fd04bd..507b9a368be72e6d24fea6da9f169cbc2c4cb579 100644 (file)
@@ -25,8 +25,7 @@ static struct phy_driver KSZ804_driver = {
 #ifndef CONFIG_PHY_MICREL_KSZ9021
 /*
  * I can't believe Micrel used the exact same part number
- * for the KSZ9021
- * Shame Micrel, Shame!!!!!
+ * for the KSZ9021. Shame Micrel, Shame!
  */
 static struct phy_driver KS8721_driver = {
        .name = "Micrel KS8721BL",
@@ -40,7 +39,7 @@ static struct phy_driver KS8721_driver = {
 #endif
 
 
-/**
+/*
  * KSZ9021 - KSZ9031 common
  */
 
@@ -69,8 +68,8 @@ static int ksz90xx_startup(struct phy_device *phydev)
                phydev->speed = SPEED_10;
        return 0;
 }
-#ifdef CONFIG_PHY_MICREL_KSZ9021
 
+#ifdef CONFIG_PHY_MICREL_KSZ9021
 /*
  * KSZ9021
  */
@@ -100,6 +99,19 @@ int ksz9021_phy_extended_read(struct phy_device *phydev, int regnum)
        return phy_read(phydev, MDIO_DEVAD_NONE, MII_KSZ9021_EXTENDED_DATAR);
 }
 
+
+static int ksz9021_phy_extread(struct phy_device *phydev, int addr, int devaddr,
+                             int regnum)
+{
+       return ksz9021_phy_extended_read(phydev, regnum);
+}
+
+static int ksz9021_phy_extwrite(struct phy_device *phydev, int addr,
+                              int devaddr, int regnum, u16 val)
+{
+       return ksz9021_phy_extended_write(phydev, regnum, val);
+}
+
 /* Micrel ksz9021 */
 static int ksz9021_config(struct phy_device *phydev)
 {
@@ -131,6 +143,8 @@ static struct phy_driver ksz9021_driver = {
        .config = &ksz9021_config,
        .startup = &ksz90xx_startup,
        .shutdown = &genphy_shutdown,
+       .writeext = &ksz9021_phy_extwrite,
+       .readext = &ksz9021_phy_extread,
 };
 #endif
 
@@ -171,6 +185,21 @@ int ksz9031_phy_extended_read(struct phy_device *phydev, int devaddr,
        return phy_read(phydev, MDIO_DEVAD_NONE, MII_KSZ9031_MMD_REG_DATA);
 }
 
+static int ksz9031_phy_extread(struct phy_device *phydev, int addr, int devaddr,
+                              int regnum)
+{
+       return ksz9031_phy_extended_read(phydev, devaddr, regnum,
+                                        MII_KSZ9031_MOD_DATA_NO_POST_INC);
+};
+
+static int ksz9031_phy_extwrite(struct phy_device *phydev, int addr,
+                               int devaddr, int regnum, u16 val)
+{
+       return ksz9031_phy_extended_write(phydev, devaddr, regnum,
+                                        MII_KSZ9031_MOD_DATA_POST_INC_RW, val);
+};
+
+
 static struct phy_driver ksz9031_driver = {
        .name = "Micrel ksz9031",
        .uid  = 0x221620,
@@ -179,6 +208,8 @@ static struct phy_driver ksz9031_driver = {
        .config   = &genphy_config,
        .startup  = &ksz90xx_startup,
        .shutdown = &genphy_shutdown,
+       .writeext = &ksz9031_phy_extwrite,
+       .readext = &ksz9031_phy_extread,
 };
 
 int phy_micrel_init(void)