Linux phy system
PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII与数据链路层的MAC芯片相连,对于MAC与PHY之间的一些知识可以查看Mac与Phy组成原理的简单分析,这篇文章进行熟悉。
PHY与MAC整体的连接框架:

PHY的硬件系统算是比较复杂的,PHY与MAC相连,MAC与CPU相通,PHY与MAC通过MII和MDIO/MDC相连,MII是走网络数据的,MDIO/MDC是用来与PHY的寄存器通讯的,对PHY进行配置。类似的SWITCH芯片一般也有两种接口,MII用来走网络数据,SPI用来设置SWITCH的寄存器。
跟以前分析I2C/SPI的驱动一样,分为控制器驱动和设备器驱动。
1、控制器驱动
控制器的驱动使用的一样是platform总线的连接方式,在arch或dts下面进行对phy的platform进行add,platform_driver的register一般也放在/driver/net/phy/下面,device和driver的name匹配后就会执行platform_driver结构体所对应的probe接口,都大同小异,如下:
static struct platform_driver pfe_platform_driver = {
.probe = pfe_platform_probe,
.remove = pfe_platform_remove,
.driver = {
.name = "pfe",
#ifdef CONFIG_PM
.pm = &pfe_platform_pm_ops,
#endif
},
};
static int __init pfe_module_init(void)
{
return platform_driver_register(&pfe_platform_driver);
}
static void __exit pfe_module_exit(void)
{
platform_driver_unregister(&pfe_platform_driver);
}
MODULE_LICENSE("GPL");
module_init(pfe_module_init)

本文介绍了PHY芯片在Linux系统中的驱动实现,包括控制器驱动和设备器驱动的注册流程,并详细解析了PHY设备的识别与配置过程。
最低0.47元/天 解锁文章
1038

被折叠的 条评论
为什么被折叠?



