struct ftgmac100 *priv = netdev_priv(netdev);
        struct platform_device *pdev = to_platform_device(priv->dev);
        int i, err = 0;
+       u32 reg;
 
        /* initialize mdio bus */
        priv->mii_bus = mdiobus_alloc();
        if (!priv->mii_bus)
                return -EIO;
 
+       if (of_machine_is_compatible("aspeed,ast2400") ||
+           of_machine_is_compatible("aspeed,ast2500")) {
+               /* This driver supports the old MDIO interface */
+               reg = ioread32(priv->base + FTGMAC100_OFFSET_REVR);
+               reg &= ~FTGMAC100_REVR_NEW_MDIO_INTERFACE;
+               iowrite32(reg, priv->base + FTGMAC100_OFFSET_REVR);
+       };
+
        priv->mii_bus->name = "ftgmac100_mdio";
        snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%d",
                 pdev->name, pdev->id);
 
 #define FTGMAC100_DMAFIFOS_RXDMA_REQ           (1 << 30)
 #define FTGMAC100_DMAFIFOS_TXDMA_REQ           (1 << 31)
 
+/*
+ * Feature Register
+ */
+#define FTGMAC100_REVR_NEW_MDIO_INTERFACE      BIT(31)
+
 /*
  * Receive buffer size register
  */