> +static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id *id) > +{ > + struct plat_stmmacenet_data *plat; > + struct stmmac_resources res; > + int ret, i, mdio; > + struct device_node *np; > + > + np = dev_of_node(&pdev->dev); > + > + if (!np) { > + pr_info("dwmac_loongson_pci: No OF node\n"); > + return -ENODEV; > + } > + > + if (!of_device_is_compatible(np, "loongson, pci-gmac")) { > + pr_info("dwmac_loongson_pci: Incompatible OF node\n"); > + return -ENODEV; > + } > + > + plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL); > + if (!plat) > + return -ENOMEM; > + > + if (plat->mdio_node) { > + dev_err(&pdev->dev, "Found MDIO subnode\n"); It is an error is an MDIO node is found? > + mdio = true; > + } > + ... > + > + plat->phy_interface = device_get_phy_mode(&pdev->dev); > + if (plat->phy_interface < 0) > + dev_err(&pdev->dev, "phy_mode not found\n"); > + > + plat->interface = PHY_INTERFACE_MODE_GMII; Seems odd you call device_get_phy_mode() but then have this hard coded PHY_INTERFACE_MODE_GMII? Andrew