09、PHY驱动框架
phy id
的定义位置:kernel-4.14\drivers\net\phy\realtek.c
一、phy_driver结构体分析
二、phy驱动的初始化
phy_driver_register
的参数就是 PHY
驱动的结构体,该结构体中包含了 PHY
驱动的名字、ID
、配置初始化函数等信息。
具体流程为:drive_register()
调用 drive_find()
通过驱动所属 bus
的 driver
容器drivers_kset
来查找 driver
,如果没有找到,调用 bus_add_driver()
将driver
加入到bus
的drivers_kset
,并生成些文件夹和链接文件。然后 执行driver_attach()
调用bus_for_each_dev()
遍历该总线上所有的 device
,也就是遍历bus
的 klist_devices
列表,对每个 device
使用回调函数__driver_attach()
,__driver_attach()
调用 driver_match_device()
来鉴别 driver
和 device
是否匹配,匹配上之后执行 driver_probe_device()
调用 really_probe()
中的 bus
的 match
函数,看 device
和 driver
是否真的匹配了,如果匹配上,才执行真正的 probe
函数来建立连接指向自己的在 sys
中的 driver
目录,最后调用 module_add_driver()
完成初始化。