RK系列芯片已經內置了以太網控制器,所以只需要搭配一顆以太網 PHY 芯片就可以實現以太網功能!
所以不管是PHY 廠家有多少,基本的功能是都是使用 RK 的驅動配置基本就可以實現,就是調用RK 的通用的驅動接口。
10/100M以太網 PHY 與 MAC 之間的接口主要有 MII 和 RMII。而10/100/1000M 以太網 PHY 與MAC 之間的接口主要有 RGMII。
在用的比較多的 RK3288 RK3399 的芯片上面都是支持 RMII 和 RGMII 接口的,也就是都可以支持 100 M 網卡,或者 1000M網卡
一、RK系列以外網卡驅動調試
1、查看以太網設備是否打開;
Device Drivers ->
[*] Network device support ->
-*- PHY Device support and infrastructure->
<*> Driver for Rockchip Ethernet PHYs
2、修改 dts 文件,看你是支持什么接口的,也就是你只有 100 M 網卡,還是 1000M 網卡即可。
修改 Y:\RK3399\kernel\arch\arm64\boot\dts\rockchip\ rgf-rk3399.dts
3、千兆網(1000M PHY)配置
clkin_gmac: external-gmac-clock { compatible = "fixed-clock"; clock-frequency = <125000000>; /* PHY供給GMAC的時鍾大小 */ clock-output-names = "clkin_gmac"; #clock-cells = <0>; }; |
&gmac { phy-supply = <&vcc_phy>; /* PHY供電 */ phy-mode = "rgmii"; /* PHY接口 */ clock_in_out = "input"; /*時鍾方向 */ snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>; /* 復位IO及有效電平 */ snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; assigned-clocks = <&cru SCLK_RMII_SRC>; assigned-clock-parents = <&clkin_gmac>; pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; tx_delay = <0x28>; /* TX線上的延時值 */ rx_delay = <0x11>; /* RX線上的延時值 */ status = "okay"; }; |
查看原理圖里供電、復位腳是否正確
PMU
PHY_RST
然后就可以查看網卡是否存在
rk3399:/ # ifconfig
4、百兆網(100M PHY)配置
clkin_gmac: external-gmac-clock { compatible = "fixed-clock"; clock-frequency = <50000000>; //時鍾 100M 使用 rmii 接口固定是 50M clock-output-names = "clkin_gmac"; #clock-cells = <0>; };
&gmac { phy-supply = <&vcc_phy>; phy-mode = "rmii"; // 說明接口是什么 PHY clock_in_out = "output"; // 是 output 的時候,就由 RK芯片 提供 50M ,1000M 的是 input snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>; // 硬件接口看 原理圖 snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; assigned-clocks = <&cru SCLK_RMII_SRC>; assigned-clock-parents = <&clkin_gmac>; |
pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>;
|