1、环境介绍

硬件:飞凌ok3568-c开发板

软件:原厂rk356x sdk

2、RK3568 PCIe资源

RK3568有一个PCIe 2.0和一个PCIe 3.0。

  • PCIe 2.0仅支持Root Complex模式。
  • PCIe 3.0支持Root Complex或Endpoint模式。
  • PCIe 3.0 2lane可以拆分为1+1lane。
  • PCIe 3.0需要使用外置晶振。

3、飞凌ok3568开发板PCIe原理图

飞凌ok3568开发板有两个PCIe插槽,分别是一个PCIe 2.0 1lane和一个PCIe 3.0 2lane。

下图是PCIe 2.0部分原理图:

下图是PCIe 3.0 2lane部分原理图:

4、配置目标

下面将PCIe 2.0和PCIe 3.0都配置成RC模式。

5、dts配置

5.1、PCIe 2.0 RC模式

/ {
    
    ...
        
    vcc3v3_pcie: vcc3v3-pcie {
        compatible = "regulator-gpio";
        regulator-name = "vcc3v3_pcie";
        regulator-min-microvolt = <100000>;
        regulator-max-microvolt = <3300000>;
        gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
        gpios-states = <0x1>;
        states = <100000 0x0 
            3300000 0x1>;
    };

    ...
        
}

&combphy2_psq {
    status = "okay";
};

&pcie2x1 {
    reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
    vpcie3v3-supply = <&vcc3v3_pcie>;
    status = "okay";
};

5.2、PCIe 3.0 2lane RC模式

/ {
    
    ...
        
    vcc3v3_pcie: vcc3v3-pcie {
        compatible = "regulator-gpio";
        regulator-name = "vcc3v3_pcie";
        regulator-min-microvolt = <100000>;
        regulator-max-microvolt = <3300000>;
        gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
        gpios-states = <0x1>;
        states = <100000 0x0 
            3300000 0x1>;
    };

    ...
        
}

&pcie30phy {
	status = "okay";
};

&pcie3x2 {
	reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_pcie>;
	status = "okay";
};

5.3、其它模式配置

其它模式配置可参考下图去配置:

6、验证

这里使用绿联PCIe有线网卡模块(rtl8168)对板卡的pcie x1接口进行验证:
在这里插入图片描述
查看枚举信息:
在这里插入图片描述
查看pci设备:
在这里插入图片描述
查看网卡节点:
在这里插入图片描述
网络测试:
在这里插入图片描述

7、总结

嵌入式Linux学习交流群:424571391
参考文章:

RK3568开发笔记-PCIE网口Intel-I210调试记录_RK3568开发笔记-CSDN专栏

rk3568 适配PCIE(二)_rk3568 pcie-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐