int phyaddr;
        u32 emio;
        int init;
+       phy_interface_t interface;
        struct phy_device *phydev;
        struct mii_dev *bus;
 };
 
        /* interface - look at tsec */
        phydev = phy_connect(priv->bus, priv->phyaddr, dev,
-                            PHY_INTERFACE_MODE_MII);
+                            priv->interface);
 
        phydev->supported = supported | ADVERTISED_Pause |
                            ADVERTISED_Asym_Pause;
        priv->phyaddr = phy_addr;
        priv->emio = emio;
 
+#ifndef CONFIG_ZYNQ_GEM_INTERFACE
+       priv->interface = PHY_INTERFACE_MODE_MII;
+#else
+       priv->interface = CONFIG_ZYNQ_GEM_INTERFACE;
+#endif
+
        sprintf(dev->name, "Gem.%lx", base_addr);
 
        dev->iobase = base_addr;