> +static struct phy_driver adin_driver[] = { > + { > + .phy_id = PHY_ID_ADIN1200, > + .name = "ADIN1200", > + .phy_id_mask = 0xfffffff0, > + .features = PHY_BASIC_FEATURES, Do you need this? If the device implements the registers correctly, phylib can determine this from the registers. > + .config_init = adin_config_init, > + .config_aneg = genphy_config_aneg, > + .read_status = genphy_read_status, > + }, > + { > + .phy_id = PHY_ID_ADIN1300, > + .name = "ADIN1300", > + .phy_id_mask = 0xfffffff0, > + .features = PHY_GBIT_FEATURES, same here. > + .config_init = adin_config_init, > + .config_aneg = genphy_config_aneg, > + .read_status = genphy_read_status, > + }, > +}; > + > +module_phy_driver(adin_driver); > + > +static struct mdio_device_id __maybe_unused adin_tbl[] = { > + { PHY_ID_ADIN1200, 0xfffffff0 }, > + { PHY_ID_ADIN1300, 0xfffffff0 }, PHY_ID_MATCH_VENDOR(). Andrew