RTL8211F
简介
千兆网卡

📌一、硬件连接

RTL8211F.pdf


📌二、修改设备树

1. 修改rk3566-box-demo-v10.dtsi

RK3566 VCCIO 电源域与 IO 对应表

VCCIO Bank 电压可选 主要控制的接口/外设
VCCIO1 1.8V / 3.3V eMMC、SDMMC0、部分 GPIO
VCCIO2 (PMUIO2) 固定 3.3V 电源管理、RTC、I²C0/I²C1 等 always-on IO
VCCIO3 1.8V / 3.3V SDMMC1、部分 UART、GPIO
VCCIO4 1.8V / 3.3V SDMMC2、SPI、GPIO
VCCIO5 1.8V / 3.3V HDMI、CIF、部分 MIPI、GPIO
VCCIO6 1.8V / 3.3V GMAC1 (RGMII/RMII)、部分 GPIO
VCCIO7 1.8V / 3.3V USB3.0、PCIe、SATA、GPIO
PMUIO1 固定 3.3V 电源键、复位键、部分始终上电 GPIO
由于硬件设计为RTL8211F.pdf默认的内部供电1.8V,所以需要修改rk3566-box-demo-v10.dtsi,如果这里仍然配置为 3.3V,PHY 芯片可能烧坏或者收不到信号。
$PROJECT_TOP/kernel/arch/arm64/boot/dts/rockchip/rk3566-box-demo-v10.dtsi
@@ -375,7 +375,7 @@
    vccio3-supply = <&vcc_3v3>;
    vccio4-supply = <&vcc_3v3>;
    vccio5-supply = <&vcc_3v3>;
-   vccio6-supply = <&vcc_3v3>;
+   vccio6-supply = <&vcc_1v8>;
    vccio7-supply = <&vcc_3v3>;
 };

2. 修改rk3566-evb2-lp4x-v10.dts

参考Rockchip_Developer_Guide_Linux_GMAC_Mode_Configuration_CN.pdf文档RGMII Crystal 25M for PHY, RGMII_CLK input 125M for TX_CLKgmac1m1配置做出如下修改
$PROJECT_TOP/kernel/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dts

@@ -146,20 +146,41 @@
 };
 &gmac1 {
-   phy-mode = "rmii";
-   clock_in_out = "output";
-   assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
-   assigned-clock-parents = <&cru SCLK_GMAC1_RMII_SPEED>;
-   assigned-clock-rates = <0>, <50000000>;
-   snps,reset-gpio = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>;
+   phy-mode = "rgmii";
+   clock_in_out = "input";
+   snps,reset-gpio = <&gpio4 12 1>;
+   snps,reset-active-low;
+   snps,reset-delays-us = <0 20000 100000>;
+  
+   assigned-clocks = <&cru 393>, <&cru 390>;
+   assigned-clock-parents = <&cru 391>, <&gmac1_clkin>;
+   assigned-clock-rates = <0>, <125000000>;
+  
+   pinctrl-names = "default";
    pinctrl-0 = <&gmac1m1_miim
-           &gmac1m1_clkinout
-           &gmac1m1_rx_bus2
-           &gmac1m1_tx_bus2>;
+   &gmac1m1_tx_bus2
+   &gmac1m1_rx_bus2
+   &gmac1m1_rgmii_clk
+   &gmac1m1_rgmii_bus
+   &gmac1m1_clkinout>;
+
+   tx_delay = <0x4f>;
+   rx_delay = <0x26>;
+  
+   phy-handle = <&rgmii_phy1>;
+   status = "okay";
 };
 &rgmii_phy1 {
-   reg = <1>;
+   reg = <0x0>;
+};
+
+&mdio1 {
+   status = "okay";
+   rgmii_phy1: phy@0 {
+       compatible = "ethernet-phy-ieee802.3-c22";
+       reg = <0x0>;
+   };
 };

📌 三、内核配置

在内核中启用 RTL8211 支持:
menuconfig 中确认:

Device Drivers  --->
  [*] Network device support  --->
      [*] Ethernet driver support  --->
          [*] Rockchip GMAC support
          [*] PHY Device support and infrastructure  --->
              [*] Realtek PHYs
  • 驱动文件位于:$PROJECT_TOP/kernel/drivers/net/phy/realtek.c,内置支持 RTL8211F/RTL8211E 等芯片。
    开启成功后$PROJECT_TOP/kernel/.config中会出现CONFIG_REALTEK_PHY=y

📁 四、附言

make ARCH=arm64 menuconfig
$PROJECT_TOP/kernel/drivers/net/phy/Makefile
make ARCH=arm64 rk356x_defconfig
make ARCH=arm64 -j$(nproc)