【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X)

转载 2015年11月17日 20:24:00

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);


举报

相关文章推荐

qsdk编译

qsdk编译 看到了此文章,先保存一下,等有空研究的时候,在看。 QSDK是一种在openwrt的基础上,加入了高通atheros芯片相关资料的一种环境。 QSDK与openwrt的区...

KGDB调试LINUX内核

摘要: 本文介绍了如何在DB12X板子上开启KGDB调试功能.如何运行AGENT-PROXY进行代理串口的访问.如何运行GDB单步跟踪. 1.环境 我的环境是: 一块DB12X ATHEROS...

ipq806x sdk 编译方法

第一次编译 cd qsdk make package/ cp qca/configs/qsdk/ipq806x_standard_beeliner.config .config make de...

ESP8266-SDK编译环境安装包的安装、编译与烧录教程【windows】

SDK编译环境安装包的安装、编译与烧录教程 【支持最新版AT、IOT及LUA源码编译,附源码】 1、安装包Fans_ESP8266_SDK_Make.exe 下载地址:http://...

Ethernet PHY芯片AR8035驱动

这几天都在看phy芯片AR8035驱动的整体架构。发现还是有点复杂,涉及不少的代码。 由于在 RK 系列的 SoC 中内置了以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY芯片...

Ethernet PHY芯片AR8035驱动

Ethernet PHY芯片AR8035驱动 网址:http://blog.csdn.net/weixianya/article/details/53745374 ...

设备树详解

设备树详解 在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device、i2c_board_info等...

总结几点无线Mesh网络的优点

对于无线Mesh网络相信大家已经有了一定了解,那么本文就详细介绍它的几种优点。希望能让大家有所了解,请见下文。

有时间了研究一下 这个oops 有人知道的话,求指导!!

## Booting image at 9f050000 ...    Image Name:   Linux Kernel Image    Created:      2013-12-16  ...

xen网络前端驱动代码分析(发送篇)

发送的核心函数为 xennet_start_xmit static int xennet_start_xmit(struct sk_buff *skb, struct net_device *de...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)