|
@@ -3,7 +3,7 @@
|
|
|
*
|
|
|
* 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
|
|
@@ -61,32 +61,42 @@ MODULE_DESCRIPTION("Vitesse PHY driver");
|
|
|
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)
|
|
|
{
|