内核版本:linux-3.14.16
基于imx6
一、文件fec_main.c分析
路径:drivers\net\ethernet\freescale\fec_main.c
1、platform总线
标准的平台总线使用方式
设备树匹配
设备树节点
2、平台总线probe
1)分配net_device相关结构
分配
与平台设备指向同一个device(struct device)
初始化net_device私有数据指针
2)获取硬件资源
获取平台设备的寄存器地址,映射出来,放到net_device私有数据保存
??Linux 内核:设备驱动模型(6)设备资源管理
???devm_regulator_get
硬件复位phy芯片,gpio
net_device初始化
请求注册中断
3)初始化mdio总线
4)注册网络设备
注册网络设备
初始化工作队列
3、net_device初始化
1)dma相关内存分配
2)设置mac地址
3)执行接收和发送的缓存地址
刚刚dma分配的地址分成2部分使用
4)初始化操作函数集
做一些寄存器的设置操作
4、初始化mdio总线
设置了一些寄存器,比如speed
创建mdio总线并注册
对于phy来说就可以用mdio总线了