YT6801是裕太微电子开发的一款国产千兆PCIE以太网控制器芯片,可作为RK3588的PCIE外扩网口使用。
直接看看芯片手册的描述
可以看出该芯片的设计要求较简单,硬件设计也没什么特别要求,供电和晶振弄好就行。
下面主要看看RK3588这端的设计。
重点看这个文档
Rockchip_Developer_Guide_PCIe_CN
例如使用3个PCIe 2.0 1Lane拓展出三路网口,加上本身的二个网口,就可以组成五个网口了。
这里看看如何使用3个PCIe 2.0网口与YT6801连接。
/ {
vcc3v3_pcie30: vcc3v3-pcie30 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_pcie30"; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
startup-delay-us = <5000>;
vin-supply = <&vcc12v_dcin>;
};
};
&combphy0_ps {
status = "okay";
};
&combphy1_ps {
status = "okay";
};
&combphy2_psu {
status = "okay";
};
&pcie2x1l0 {
phys = <&combphy1_ps PHY_TYPE_PCIE>;
reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_pcie30>;
status = "okay";
};
&pcie2x1l1 {
phys = <&combphy2_psu PHY_TYPE_PCIE>;
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_pcie30>;
status = "okay";
};
&pcie2x1l2 {
reset-gpios = <&gpio4 RK_PC1 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_pcie30>;
status = "okay";
};
这个是pcie的dts推荐配置,根据自己的实际设计可以进行修改。
这里我们是YT6801,直接采用的外供电,不去控制,就可以不用设置vpcie3v3-supply,reset-gpios这个是必须设置的,对应的是PERST_N。我这里的YT6801就这么设置就行了。
&combphy0_ps {
status = "okay";
};
&combphy1_ps {
status = "okay";
};
&combphy2_psu {
status = "okay";
};
&pcie2x1l0 {
reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&pcie2x1l1 {
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&pcie2x1l2 {
reset-gpios = <&gpio4 RK_PC1 GPIO_ACTIVE_HIGH>;
status = "okay";
};
如此dts的配置就好了,通过lspci应该就可以看到设备了。
YT6801的驱动在官网可以下载
以太网网卡芯片-裕太微电子股份有限公司 (motor-comm.com)
瑞芯微RK3588 PCIE外接国产千兆网YT6801就实现了。
官网驱动没有交叉编译脚本,参考