OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X)
http://www.right.com.cn/forum/thread-168504-1-1.html
(出处: 恩山无线论坛 hackpascal )
Linux 自带 AR8035 驱动,但是很多人不知道。这里给出一个简单方便的方法,给 AR9342/AR9344 添加 AR8035 支持。
此方法直接使用 ag71xx 驱动,且不需添加驱动,更不用移植 ag7240/ag934x/arths_gmac。
注意:此方法不能用于AR7161,因为需要设置的参数不同,楼主还未测试过。
Linux 内核中 AR8035 的 PHY 驱动名叫做 at803x,位于 drivers/net/phy/at803x.c
修改方法如下:
(所有改动均在 OpenWrt 代码目录)
1. target/linux/ar71xx/config-3.X (X 依据Linux内核版本而定)
在里面添加一行
- CONFIG_AT803X_PHY=y
复制代码
这样能确保 at803x 驱动被编译进内核
2. target/linux/ar71xx/files/arch/mips/ath79/mach-XXXX.c (需要添加 AR8035 支持的文件)
在开头部分添加 at803x 的头文件包含语句
- #include <linux/platform_data/phy-at803x.h>
复制代码
这样可以向 at803x 驱动传入一些 PHY 初始化设置
在第一个函数前面添加以下全局静态变量
- static struct at803x_platform_data mi124_ar8035_data = {
- .enable_rgmii_tx_delay = 1,
- .enable_rgmii_rx_delay = 1,
- };
- static struct mdio_board_info mi124_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .phy_addr = 0,
- .platform_data = &mi124_ar8035_data,
- },
- };
复制代码
这两个变量向 at803x 指定了设置 txdelay 和 rxdelay
修改代码中eth注册代码如下,确保只注册eth0
- ath79_register_mdio(1, 0x0);
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(mi124_mdio0_info, ARRAY_SIZE(mi124_mdio0_info));
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | AR934X_ETH_CFG_SW_ONLY_MODE);
- /* GMAC0 is connected to an AR8035 Gigabit PHY */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_pll_data.pll_1000 = 0x0e000000;
- ath79_eth0_pll_data.pll_100 = 0x0101;
- ath79_eth0_pll_data.pll_10 = 0x1313;
- ath79_register_eth(0);
复制代码
这里面指定了接口类型为RGMII
这里面最重要的内容为3个pll值,这些值配合 at803x 的 txdelay 跟 rxdelay 能保证AR8035正常使用
以上方法添加的 AR8035 支持能够保证良好的兼容性以及可移植性。
上述方法中 txdelay/rxdelay 设置与 pll 的设置参考了Atheros LSDK 中 U-Boot 代码中的设置。
补充以下几点,希望对大家有帮助:
1、参考补丁文件:
https://dev.openwrt.org/changeset/45954
2、讨论:
3、折腾了几天,终于把丢包的问题解决了(适配为千兆网卡时,丢包
static struct at803x_platform_data iwn2000_at803x_data = {.disable_smarteee = 0,.enable_rgmii_rx_delay = 1,.enable_rgmii_tx_delay = 0,.fixup_rgmii_tx_delay = 1,
};static struct mdio_board_info iwn2000_mdio0_info[] = {{.bus_id = "ag71xx-mdio.0",.phy_addr = 0,.platform_data = &iwn2000_at803x_data,},
};ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |AR934X_ETH_CFG_RXD_DELAY | AR934X_ETH_CFG_RDV_DELAY);ath79_register_mdio(1, 0x0);
ath79_register_mdio(0, 0x0);ath79_init_mac(ath79_eth0_data.mac_addr, art + IWN2000_MAC0_OFFSET, 0);mdiobus_register_board_info(iwn2000_mdio0_info,ARRAY_SIZE(iwn2000_mdio0_info));/* GMAC0 is connected to an AT8035 switch */
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth0_data.phy_mask = BIT(0);
ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
ath79_eth0_pll_data.pll_1000 = 0x0e000000;
ath79_eth0_pll_data.pll_10 = 0x00001313;
ath79_register_eth(0);
OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X)相关推荐
- 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法
1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...
- css原生样式支持,原生JS读写CSS样式的方法
通过Element对象的getAttribute().setAttribute().removeAttribute()直接读写style属性 如:elm.setAttribute('style','c ...
- JavaScript原生添加移除class的方法
转载自 JavaScript原生添加移除class的方法 1.JavaScript原生移除class方法 window.onload = function () {var stamp = docum ...
- OpenWrt/Lede 添加USB支持
USB功能定制 1. 添加USB相关支持 Kernel modules -> USB Support -> <*> kmod-usb-core. Kernel modules ...
- android studio assets 添加,Android studio 添加assets文件夹的方法
Android studio 添加assets文件夹的方法 我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就 ...
- 安卓应用提供64位原生的支持
一.优缺点 优点:64位通常会使应用运行的更加的快,因为64位的指令集支持更高的代码运行效率,为用户提供更快.更丰富的体验 缺点:64位构建会让APK的体积变的更大,多了so库 二.如何为安卓应用提供 ...
- python迅雷远程下载页面_【教程】Chrome浏览器添加迅雷下载支持
2019年4月28日更新: 目前官方最新版本的迅雷X已经实现自动安装Chrome扩展,无需手动安装. 请仍在使用老版本迅雷的雷友升级到官方最新版本的迅雷X. 以下内容已经过期 最近一段时间,Googl ...
- python文字教程-Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- 爱上MVC~为DisplayNameFor添加扩展,支持PagedList集合
DisplayNameFor方法是MVC提供给我们的,它可以将模型的DisplayName特性的值显示到页面上,这对程序员来说很是方便,在进行实体设计时,可以指定它的显示名称,然后MVC引擎会自动帮助 ...
- 为博客园博文添加目录的两种方法
准备工作: 确认你的博客有js权限,可以设计界面风格.这个需要跟管理员申请. 方法一:在正文上方直接添加目录 1.把下面的脚本添加到博客后台设置里的"页脚html代码"里头: 1 ...
最新文章
- 一次由于字符集问题引发的MySQL主从同步不一致问题追查
- vue开发页面自适应_vue-cli 【flexible】屏幕字体自适应布局及配置
- 宁波python学习_python学习第十五天
- Okhttp、Volley和Gson的简单介绍和配合使用
- GitLab CI/CD
- java中的strictfp的作用
- JDBC模板对象是多例的
- python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...
- c#.net操作注册表RegistryKey
- Qt第六课 QDateTime使用
- AVEVA PDMS 二次开发之PML语言基础 21/10/21 01.0.02
- 金蝶K3 webservice接口
- mysql计算同比和环比的区别_Mysql同比环比统计
- Python新书上市,强烈推荐!《Python网络数据爬取及分析从入门到精通(爬取篇)》导读
- VoIP技术(2)--语音编码算法-1
- graphics库的使用
- 2022-2027年中国酒店餐饮行业市场调研及未来发展趋势预测报告
- 高新企业申请补贴需要什么条件
- 【无标题】UBUNTU22.04 WIFI图标显示
- 2.04 标志寄存器