};
 
 struct socfpga_dwmac {
-       int     interface;
        u32     reg_offset;
        u32     reg_shift;
        struct  device *dev;
        struct resource res_tse_pcs;
        struct resource res_sgmii_adapter;
 
-       dwmac->interface = of_get_phy_mode(np);
-
        sys_mgr_base_addr =
                altr_sysmgr_regmap_lookup_by_phandle(np, "altr,sysmgr-syscon");
        if (IS_ERR(sys_mgr_base_addr)) {
        return ret;
 }
 
+static int socfpga_get_plat_phymode(struct socfpga_dwmac *dwmac)
+{
+       struct net_device *ndev = dev_get_drvdata(dwmac->dev);
+       struct stmmac_priv *priv = netdev_priv(ndev);
+
+       return priv->plat->interface;
+}
+
 static int socfpga_set_phy_mode_common(int phymode, u32 *val)
 {
        switch (phymode) {
 static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
 {
        struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
-       int phymode = dwmac->interface;
+       int phymode = socfpga_get_plat_phymode(dwmac);
        u32 reg_offset = dwmac->reg_offset;
        u32 reg_shift = dwmac->reg_shift;
        u32 ctrl, val, module;
 static int socfpga_gen10_set_phy_mode(struct socfpga_dwmac *dwmac)
 {
        struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
-       int phymode = dwmac->interface;
+       int phymode = socfpga_get_plat_phymode(dwmac);
        u32 reg_offset = dwmac->reg_offset;
        u32 reg_shift = dwmac->reg_shift;
        u32 ctrl, val, module;