RTL8211F
简介
千兆网卡
📌一、硬件连接
📌二、修改设备树
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_CLK的gmac1m1配置做出如下修改
$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)