return !strncmp(header.config, "SKU#02", 6);
 }
 
+static int board_is_gp_evm(void)
+{
+       return !strncmp("A33515BB", header.name, 8);
+}
+
 int board_is_evm_15_or_later(void)
 {
        return (!strncmp("A33515BB", header.name, 8) &&
                printf("Error %d registering CPSW switch\n", rv);
        else
                n += rv;
+
+       /*
+        *
+        * CPSW RGMII Internal Delay Mode is not supported in all PVT
+        * operating points.  So we must set the TX clock delay feature
+        * in the AR8051 PHY.  Since we only support a single ethernet
+        * device in U-Boot, we only do this for the first instance.
+        */
+#define AR8051_PHY_DEBUG_ADDR_REG      0x1d
+#define AR8051_PHY_DEBUG_DATA_REG      0x1e
+#define AR8051_DEBUG_RGMII_CLK_DLY_REG 0x5
+#define AR8051_RGMII_TX_CLK_DLY                0x100
+
+       if (board_is_evm_sk() || board_is_gp_evm()) {
+               const char *devname;
+               devname = miiphy_get_current_dev();
+
+               miiphy_write(devname, 0x0, AR8051_PHY_DEBUG_ADDR_REG,
+                               AR8051_DEBUG_RGMII_CLK_DLY_REG);
+               miiphy_write(devname, 0x0, AR8051_PHY_DEBUG_DATA_REG,
+                               AR8051_RGMII_TX_CLK_DLY);
+       }
 #endif
 try_usbether:
 #if defined(CONFIG_USB_ETHER) && !defined(CONFIG_SPL_BUILD)