zturn开发板网口驱动的注册过程
来源:互联网 发布:林州豫广网络客服电话 编辑:程序博客网 时间:2024/06/05 03:43
zturn开发板网口驱动的注册过程
网址:http://www.sjsjw.com/100/001606MYM012680/
2015-01-31 10:28:31 z-turn网口设备树: 在zynq-7000.dtis文件:
gem0: ethernet@e000b000 {
compatible = "xlnx,ps7-ethernet-1.00.a";
reg = <0xe000b000 0x1000>;
status = "disabled";
interrupts = <0 22 4>;
clocks = <&clkc 13>, <&clkc 30>;
clock-names = "ref_clk", "aper_clk";
local-mac-address = [00 0a 35 00 00 00];
xlnx,has-mdio = <0x1>;
#address-cells = <1>;
#size-cells = <0>;
};
在zynq-zturn.dts将gen0设备修改成:
&gem0 {
compatible = "cdns,gem";
reg = <0xe000b000 0x4000>;
status = "okay";
interrupts = <0 22 4>;
interrupt-parent = <&intc>;
clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
clock-names = "pclk", "hclk", "tx_clk";
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
phy0: phy@0 {
compatible = "atheros,ar8035";
device_type = "ethernet-phy";
reg = <0>;
};
};
所以网口使用的是cadence的驱动,驱动源码位于drivers/net/ethernet/cadence/macb.c.
在macb_probe函数中分配net_device设备并初始化,设置mdio的clk:
/* Set MII management clock divider */
config = macb_mdc_clk_div(bp);
config |= macb_dbw(bp);
macb_writel(bp, NCFGR, config);
然后调用macb_mii_init进行phy设备的初始化.
phy设备挂在mdio bus下,所以先调用of_mdiobus_register注册了mdio bus设备,接着调用of_mdiobus_register_phy注册phy设备,
在of_mdiobus_register注册了phy设备之后,调用macb_mii_probe检测phy设备是否已经跟驱动关联,如果没有,调用phy_connect_direct
将phy设备的跟generic phy驱动关联.
函数调用关系:
macb_mii_init phy设备的初始化
-->of_mdiobus_register 注册mdio_bus
-->of_mdiobus_register_phy 注册phy_device,如果相关phy_driver驱动已经注册,测将phy_driver跟phy_device关联
-->macb_mii_probe
如果phy_devide还没有驱动
-->phy_connect_direct 将phy_device跟generic phy驱动关联
所以z-turn开发板的phy芯片驱动是drivers\net\phy\phy_device.c.
内核相关配置:
Device Drivers > Network device support > Ethernet driver support
[*] Cadence devices
<*> Cadence MACB/GEM support
Device Drivers > Network device support
-*- PHY Device support and infrastructure ---> 上面的选上后,该项自动选上,里边的其他驱动不用选
阅读全文
0 0
- zturn开发板网口驱动的注册过程
- zturn开发板网口驱动的注册过程
- Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程
- Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程
- 设备驱动注册过程
- I2C驱动注册过程
- ath9K 驱动注册过程
- linux I2C 驱动之----i2c驱动的注册过程
- 驱动的注册过程和设备的注册过程(转载)
- linux platform驱动注册过程
- 从编译和链接来看kernel驱动注册的过程
- 从编译和链接来看kernel驱动注册的过程
- LINUX驱动注册过程失败处理不当引起的恶果
- 从编译和链接来看kernel驱动注册的过程 .
- LINUX驱动注册过程失败处理不当引起的恶果
- V4L2 学习笔记1-驱动的注册过程1
- V4L2 学习笔记1-驱动的注册过程2
- 从编译和链接来看kernel驱动注册的过程
- 【LeetCode】517. Super Washing Machines
- Rectangles
- Android Volley的使用(一)基本网络请求
- maven 打包 web 项目时,war 包里的 class 不是最新的内容。
- 494. Target Sum
- zturn开发板网口驱动的注册过程
- 解决C++ 无法从void 转换为LRESULT的方法详解
- Leetcode141. Linked List Cycle
- (搬运).net起步 (对 Login 控件添加图文验证码)
- 内存优化
- SDUT 3921 Special Judge Ⅲ
- 汇编语言: 编写一个程序,从键盘输入一个 0~65535 之间的 10 进制无符号数,然后以 16 进制 和四进制数形式显示出所输入的数。
- tomcat的性能调优
- gcc常用命令参数