arm: socfpga: set skew settings for ethernet phy
authorDinh Nguyen <dinguyen@opensource.altera.com>
Thu, 13 Nov 2014 17:23:41 +0000 (11:23 -0600)
committerMarek Vasut <marex@denx.de>
Sat, 6 Dec 2014 12:51:54 +0000 (13:51 +0100)
Set the PHY skew settings for the ethernet phy on the SOCFPGA Cyclone5
hardware.

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Vince Bridgers <vbridger@opensource.altera.com>
Cc: Pavel Machek <pavel@denx.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Tom Rini <trini@ti.com>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Wolfgang Denk <wd@denx.de>
board/altera/socfpga/socfpga_cyclone5.c

index ce625e54d06cd702385a16da27db03e3431b01cb..772a58ed9e84855bc409ecd5d3567b1af521de85 100644 (file)
@@ -12,7 +12,9 @@
 #include <usb/s3c_udc.h>
 #include <usb_mass_storage.h>
 
+#include <micrel.h>
 #include <netdev.h>
+#include <phy.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -44,6 +46,20 @@ int board_init(void)
        return 0;
 }
 
+int board_phy_config(struct phy_device *phydev)
+{
+       /*
+        * These skew settings for the KSZ9021 ethernet phy is required for ethernet
+        * to work reliably on most flavors of cyclone5 boards.
+        */
+       ksz9021_phy_extended_write(phydev, MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW,
+                                  0x0);
+       ksz9021_phy_extended_write(phydev, MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW,
+                                  0x0);
+       ksz9021_phy_extended_write(phydev, MII_KSZ9021_EXT_RGMII_CLOCK_SKEW,
+                                  0xf0f0);
+}
+
 #ifdef CONFIG_USB_GADGET
 struct s3c_plat_otg_data socfpga_otg_data = {
        .regs_otg       = CONFIG_USB_DWC2_REG_ADDR,