[RK3399][Android7.1] 移植笔记 --- 网卡RTL8211配置添加

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

由于在 RK 系列的 SoC 中内置了以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY 芯片, 即可实现以太网卡功能。
按照规范,即使是不同厂家的 PHY,仍然有一部分寄存器的定义是通用的, 只要配置了这些通用的寄存器,基本上 PHY 就可以正常工作。
因此,在 Linux 驱动中有通用的 PHY 驱动,目前的芯片所配套的 SDK 中使用的都是通用驱动,当然 SoC 中的 MAC 驱动是需要实现的。
10/100M 以太网 PHY 与 MAC 之间的接口主要有 MII 和 RMII。 10/100/1000M 以太网 PHY 与 MAC 之间的接口主要有 RGMII。


网卡使用的是RTL8211,和参考设计一致,因此只要配置一下DTS就可以了。

原理图:
这里写图片描述


配置添加:

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-eco.dts b/arch/arm64/boot/dts/rockchip/rk3399-eco.dts
index e984dee..e39f165 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-eco.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-eco.dts
@@ -136,6 +136,15 @@
        enable-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
    };

+   //Kris,180709, add support for eth.
+   clkin_gmac: external-gmac-clock {
+       compatible = "fixed-clock";
+       clock-frequency = <125000000>;
+       clock-output-names = "clkin_gmac";
+       #clock-cells = <0>;
+   };
+
+
    vcc_phy: vcc-phy-regulator {
        compatible = "regulator-fixed";
        regulator-name = "vcc_phy";
@@ -304,6 +313,23 @@
    status = "okay";
 };

+//Kris,180709, add support for eth.
+&gmac {
+   phy-supply = <&vcc_phy>;
+   phy-mode = "rgmii";
+   clock_in_out = "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>;
+   tx_delay = <0x28>;
+   rx_delay = <0x11>;
+   status = "okay";
+};
+
 &sdhci {
    bus-width = <8>;
    mmc-hs400-1_8v;

参考:
Rockchip 以太网 开发指南 V2.3.1-20160708.pdf

猜你喜欢

转载自blog.csdn.net/kris_fei/article/details/80983243