PHY:
1、phy_init(drivers/net/phy/phy_device.c):
mdio_bus_init
bus_register(&mdio_bus_type);
phy_driver_register(&genphy_driver); 通用驱动
2、各厂商网卡的驱动初始化,以micrel为例(drivers/net/phy/micrel.c):
ksphy_init
phy_driver_register(&ksphy_driver);//注册micrel厂商下的所有网卡驱动
new_driver->driver.name = new_driver->name;
new_driver->driver.bus= &mdio_bus_type
new_driver->driver.probe= phy_probe;//所有网卡驱动最终会执行同一个probe(若网卡驱动自身有probe的话也会执行)
new_driver->driver.remove= phy_remove;
driver_register
MAC:
1、fec_main.c(以nxp为例)
platform_driver_register(fec_driver)
fec_probe
fec_enet_init
fec_get/set_mac
(net_dev