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内核版本而定)
在里面添加一行

  1. CONFIG_AT803X_PHY=y

复制代码

这样能确保 at803x 驱动被编译进内核

2. target/linux/ar71xx/files/arch/mips/ath79/mach-XXXX.c (需要添加 AR8035 支持的文件)
在开头部分添加 at803x 的头文件包含语句

  1. #include <linux/platform_data/phy-at803x.h>

复制代码

这样可以向 at803x 驱动传入一些 PHY 初始化设置

在第一个函数前面添加以下全局静态变量

  1. static struct at803x_platform_data mi124_ar8035_data = {
  2. .enable_rgmii_tx_delay = 1,
  3. .enable_rgmii_rx_delay = 1,
  4. };
  5. static struct mdio_board_info mi124_mdio0_info[] = {
  6. {
  7. .bus_id = "ag71xx-mdio.0",
  8. .phy_addr = 0,
  9. .platform_data = &mi124_ar8035_data,
  10. },
  11. };

复制代码

这两个变量向 at803x 指定了设置 txdelay 和 rxdelay

修改代码中eth注册代码如下,确保只注册eth0

  1. ath79_register_mdio(1, 0x0);
  2. ath79_register_mdio(0, 0x0);
  3. mdiobus_register_board_info(mi124_mdio0_info, ARRAY_SIZE(mi124_mdio0_info));
  4. ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | AR934X_ETH_CFG_SW_ONLY_MODE);
  5. /* GMAC0 is connected to an AR8035 Gigabit PHY */
  6. ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
  7. ath79_eth0_data.phy_mask = BIT(0);
  8. ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
  9. ath79_eth0_pll_data.pll_1000 = 0x0e000000;
  10. ath79_eth0_pll_data.pll_100 = 0x0101;
  11. ath79_eth0_pll_data.pll_10 = 0x1313;
  12. 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)相关推荐

  1. 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法

    1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...

  2. css原生样式支持,原生JS读写CSS样式的方法

    通过Element对象的getAttribute().setAttribute().removeAttribute()直接读写style属性 如:elm.setAttribute('style','c ...

  3. JavaScript原生添加移除class的方法

    转载自  JavaScript原生添加移除class的方法 1.JavaScript原生移除class方法 window.onload = function () {var stamp = docum ...

  4. OpenWrt/Lede 添加USB支持

    USB功能定制 1. 添加USB相关支持 Kernel modules -> USB Support -> <*> kmod-usb-core. Kernel modules ...

  5. android studio assets 添加,Android studio 添加assets文件夹的方法

    Android studio 添加assets文件夹的方法 我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就 ...

  6. 安卓应用提供64位原生的支持

    一.优缺点 优点:64位通常会使应用运行的更加的快,因为64位的指令集支持更高的代码运行效率,为用户提供更快.更丰富的体验 缺点:64位构建会让APK的体积变的更大,多了so库 二.如何为安卓应用提供 ...

  7. python迅雷远程下载页面_【教程】Chrome浏览器添加迅雷下载支持

    2019年4月28日更新: 目前官方最新版本的迅雷X已经实现自动安装Chrome扩展,无需手动安装. 请仍在使用老版本迅雷的雷友升级到官方最新版本的迅雷X. 以下内容已经过期 最近一段时间,Googl ...

  8. python文字教程-Python在图片中添加文字的两种方法

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...

  9. 爱上MVC~为DisplayNameFor添加扩展,支持PagedList集合

    DisplayNameFor方法是MVC提供给我们的,它可以将模型的DisplayName特性的值显示到页面上,这对程序员来说很是方便,在进行实体设计时,可以指定它的显示名称,然后MVC引擎会自动帮助 ...

  10. 为博客园博文添加目录的两种方法

    准备工作: 确认你的博客有js权限,可以设计界面风格.这个需要跟管理员申请. 方法一:在正文上方直接添加目录 1.把下面的脚本添加到博客后台设置里的"页脚html代码"里头: 1 ...

最新文章

  1. 一次由于字符集问题引发的MySQL主从同步不一致问题追查
  2. vue开发页面自适应_vue-cli 【flexible】屏幕字体自适应布局及配置
  3. 宁波python学习_python学习第十五天
  4. Okhttp、Volley和Gson的简单介绍和配合使用
  5. GitLab CI/CD
  6. java中的strictfp的作用
  7. JDBC模板对象是多例的
  8. python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...
  9. c#.net操作注册表RegistryKey
  10. Qt第六课 QDateTime使用
  11. AVEVA PDMS 二次开发之PML语言基础 21/10/21 01.0.02
  12. 金蝶K3 webservice接口
  13. mysql计算同比和环比的区别_Mysql同比环比统计
  14. Python新书上市,强烈推荐!《Python网络数据爬取及分析从入门到精通(爬取篇)》导读
  15. VoIP技术(2)--语音编码算法-1
  16. graphics库的使用
  17. 2022-2027年中国酒店餐饮行业市场调研及未来发展趋势预测报告
  18. 高新企业申请补贴需要什么条件
  19. 【无标题】UBUNTU22.04 WIFI图标显示
  20. 2.04 标志寄存器

热门文章

  1. java加密文件夹_怎样用JAVA给文件夹加密,拜求各位大侠!
  2. 绿联 蓝牙适配器 linux,绿联USB
  3. 我的Foobar2000定制版本
  4. 2021-09-27 win10 IPV6连接:无网络访问权限 怎么解决
  5. 6种摆脱百度竞价恶意点击的技巧
  6. 网站木马检测_检测病毒,用这几个网站就够了
  7. 495. Teemo Attacking(提莫攻击)
  8. 《失业的程序员》(十二):潜意识的智商
  9. 轻量级私有云存储企业主要功能探析
  10. 如何连接新浪sae共享数据库