const struct stmmac_dma_ops     *dma;
        struct mii_regs mii;    /* MII register Addresses */
        struct mac_link link;
+       unsigned int synopsys_uid;
 };
 
 struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr);
 
 struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr)
 {
        struct mac_device_info *mac;
-       u32 uid = readl(ioaddr + GMAC_VERSION);
-
-       pr_info("\tDWMAC1000 - user ID: 0x%x, Synopsys ID: 0x%x\n",
-               ((uid & 0x0000ff00) >> 8), (uid & 0x000000ff));
+       u32 hwid = readl(ioaddr + GMAC_VERSION);
 
        mac = kzalloc(sizeof(const struct mac_device_info), GFP_KERNEL);
        if (!mac)
        mac->link.speed = GMAC_CONTROL_FES;
        mac->mii.addr = GMAC_MII_ADDR;
        mac->mii.data = GMAC_MII_DATA;
+       mac->synopsys_uid = hwid;
 
        return mac;
 }
 
        memset(&priv->mmc, 0, sizeof(struct stmmac_counters));
 }
 
+static u32 stmmac_get_synopsys_id(struct stmmac_priv *priv)
+{
+       u32 hwid = priv->hw->synopsys_uid;
+
+       /* Only check valid Synopsys Id because old MAC chips
+        * have no HW registers where get the ID */
+       if (likely(hwid)) {
+               u32 uid = ((hwid & 0x0000ff00) >> 8);
+               u32 synid = (hwid & 0x000000ff);
+
+               pr_info("STMMAC - user ID: 0x%x, Synopsys ID: 0x%x\n",
+                       uid, synid);
+
+               return synid;
+       }
+       return 0;
+}
 /**
  *  stmmac_open - open entry point of the driver
  *  @dev : pointer to the device structure.
        /* Initialize the MAC Core */
        priv->hw->mac->core_init(priv->ioaddr);
 
-       priv->rx_coe = priv->hw->mac->rx_coe(priv->ioaddr);
+       stmmac_get_synopsys_id(priv);
+
        if (priv->rx_coe)
                pr_info("stmmac: Rx Checksum Offload Engine supported\n");
        if (priv->plat->tx_coe)