*
  * Author: Kriston Carson
  *
- * Copyright (c) 2005 Freescale Semiconductor, Inc.
+ * Copyright (c) 2005, 2009 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
 MODULE_AUTHOR("Kriston Carson");
 MODULE_LICENSE("GPL");
 
-static int vsc824x_config_init(struct phy_device *phydev)
+int vsc824x_add_skew(struct phy_device *phydev)
 {
-       int extcon;
        int err;
-
-       err = phy_write(phydev, MII_VSC8244_AUX_CONSTAT,
-                       MII_VSC8244_AUXCONSTAT_INIT);
-       if (err < 0)
-               return err;
+       int extcon;
 
        extcon = phy_read(phydev, MII_VSC8244_EXT_CON1);
 
        if (extcon < 0)
-               return err;
+               return extcon;
 
        extcon &= ~(MII_VSC8244_EXTCON1_TX_SKEW_MASK |
                        MII_VSC8244_EXTCON1_RX_SKEW_MASK);
 
-       if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
-               extcon |= (MII_VSC8244_EXTCON1_TX_SKEW |
-                               MII_VSC8244_EXTCON1_RX_SKEW);
+       extcon |= (MII_VSC8244_EXTCON1_TX_SKEW |
+                       MII_VSC8244_EXTCON1_RX_SKEW);
 
        err = phy_write(phydev, MII_VSC8244_EXT_CON1, extcon);
 
        return err;
 }
+EXPORT_SYMBOL(vsc824x_add_skew);
+
+static int vsc824x_config_init(struct phy_device *phydev)
+{
+       int err;
+
+       err = phy_write(phydev, MII_VSC8244_AUX_CONSTAT,
+                       MII_VSC8244_AUXCONSTAT_INIT);
+       if (err < 0)
+               return err;
+
+       if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
+               err = vsc824x_add_skew(phydev);
+
+       return err;
+}
 
 static int vsc824x_ack_interrupt(struct phy_device *phydev)
 {