博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux phy驱动初始化2
阅读量:4068 次
发布时间:2019-05-25

本文共 1216 字,大约阅读时间需要 4 分钟。

慢慢欣赏linux phy驱动初始化2

mii_bus相当于phy_device控制器,很遗憾的是,它没有注册在mdio_bus总线上,这跟I2C总线不同。
内核如何获取PHY设备呢? 答案是只能从设备树获取。
fsl_pq_mdio_probe 函数从设备树解析platform_device获取phy_device信息

fsl_pq_mdio_probe 会注册mii_bus控制器,包括控制器的phy的读写方法

int fsl_pq_mdio_probe(struct platform_device *ofdev){	struct mii_bus *new_bus = mdiobus_alloc();	// 申请总线控制器空间		new_bus->name = "Freescale PowerQUICC MII Bus", // 填充控制器域成员, 包括下面的PHY的读写方法	new_bus->read = &fsl_pq_mdio_read,	new_bus->write = &fsl_pq_mdio_write,	new_bus->reset = &fsl_pq_mdio_reset,	new_bus->priv = priv;	fsl_pq_mdio_bus_name(new_bus->id, np);			err = of_mdiobus_register(new_bus, np);	// 注册控制器并且扫描下面的PHY生成phy_device并注册}

对比fixed_phy的控制器以及注册

int __init fixed_mdio_bus_init(void){	struct fixed_mdio_bus *fmb = &platform_fmb;	pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0);	fmb->mii_bus = mdiobus_alloc();		snprintf(fmb->mii_bus->id, MII_BUS_ID_SIZE, "0");	fmb->mii_bus->name = "Fixed MDIO Bus";	fmb->mii_bus->priv = fmb;	fmb->mii_bus->parent = &pdev->dev;	fmb->mii_bus->read = &fixed_mdio_read;	fmb->mii_bus->write = &fixed_mdio_write;	fmb->mii_bus->irq = fmb->irqs;		ret = mdiobus_register(fmb->mii_bus);}

Marvell交换芯片88E6321/88E6320驱动总结-寄存器篇
http://ifreehub.com/archives/22/

转载地址:http://iblji.baihongyu.com/

你可能感兴趣的文章
本科生的编程水平到底有多高
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>