日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

AR8035 linux

發布時間:2023/12/9 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AR8035 linux 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉】AR8035 支持的方法

2016-04-21 備忘 4859 0

?

Linux 自帶 AR8035 驅動,但是很多人不知道。這里給出一個簡單方便的方法,給 QCA9558/QCA9557/AR9342/AR9344/AR7141/AR7161 添加 AR8035 支持。

此方法直接使用 ag71xx 驅動,且不需添加驅動,更不用移植 ag7240/ag934x/arths_gmac。

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 初始化設置

在第一個函數前面添加以下兩個全局靜態變量:
第一個是對 AR803X 設置 txdelay rxdelay。AR934X 跟 AR7141/AR7161 的設置方法不同。

AR7141/AR7161設置如下:

static struct at803x_platform_data mi124_ar8035_data = {.enable_rgmii_tx_delay = 1, };


AR934X/QCA955X設置如下:

static struct at803x_platform_data mi124_ar8035_data = {.enable_rgmii_rx_delay = 1,.fixup_rgmii_tx_delay = 1, };

?

第二個是在注冊 eth 設備時向 ag71xx 驅動傳入的設置

?

static struct mdio_board_info mi124_mdio0_info[] = {{.bus_id = "ag71xx-mdio.0",.phy_addr = 0,.platform_data = &mi124_ar8035_data,}, };

?

?

這個變量讓 ag71xx 在連接 at803x 驅動時向 at803x 驅動傳入上面設置的變量。
.phy_addr = 0 指的是指定使用 MDIO 地址為 0 的 PHY,這個需要根據實際情況(在PCB上的bootstrap pin)來設置

修改代碼中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正常使用。上面代碼中三個 pll 值是給 AR934X使用的。

如果使用 AR7141/AR7161,請使用下面的 pll 數值:

?

ath79_eth0_pll_data.pll_1000 = 0x00110000;ath79_eth0_pll_data.pll_100 = 0x0001099;ath79_eth0_pll_data.pll_10 = 0x00991099;

?

?

并且請刪掉 ath79_setup_ar934x_eth_cfg 這一行

如果使用 QCA9558/QCA9557,請使用下面的 pll 數值:

?

ath79_eth0_pll_data.pll_1000 = 0x96000000;ath79_eth0_pll_data.pll_100 = 0x80000101;ath79_eth0_pll_data.pll_10 = 0x80001313;

?

?

并且請增加一行:ath79_setup_ar934x_eth_rx_delay(3, 3);

注意:
對于 AR934X,有些板子的 AR8035 并沒有使用 PHY Addr. 0,此時請把 ath79_eth0_data.phy_mask = BIT(0); 的 BIT(0)從0到15依次試一次。同時要修改上面的 .phy_addr 的值
樓主遇到一個板子,QCA9558 的,使用的 PHY Addr 是 7。。。。。。

以上方法添加的 AR8035 支持能夠保證良好的兼容性以及可移植性。

上述方法中 txdelay/rxdelay 設置與 pll 的設置參考了Atheros??LSDK 中 U-Boot (AR934X) 和 redboot (AR7161) 代碼中的設置。
QCA9558 的?txdelay/rxdelay 設置與 pll?值來源于逆向分析。
QCA9563 沒遇到對應的板子,故沒有對應的?txdelay/rxdelay 設置與 pll 值。AR7242 也是如此。
AR7242 + AR8021 因為沒人愿意借樓主板子來測試,因此無解。

?

OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X/AR7161/QCA9558)
http://www.right.com.cn/forum/thread-168504-1-1.html

總結

以上是生活随笔為你收集整理的AR8035 linux的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。