Rockchip RK3588 kernel dts解析之PCIe
Rockchip RK3588 kernel dts解析之PCIe
文章目录
- Rockchip RK3588 kernel dts解析之PCIe
- RK3588控制器
- RK3588 PHY
- 使用限制
- DTS配置解析
- 硬件设计
- 软件DTS配置
- 其他常见的PCIE配置对应的DTS配置实例
- pcie3.0phy拆分2个2Lane RC, 3个PCIe 2.0 1Lane(comboPHY)
- pcie3.0phy拆分为4个1Lane, 1个使用PCIe 2.0 1 Lane(comboPHY)
RK3588控制器
RK3588共有5个PCIe控制器:
- 1个4Lane控制器,DM模式可以支持作为EP使用
- 1个2Lane控制器,只能作为RC使用
- 3个1Lane控制器,只能作为RC使用
控制器在DTS对应节点名称
RK3588
控制器 | DTS节点名称 | 配对的PHY |
---|---|---|
PCIe Gen3 x 4Lane | pcie3x4:pcie@fe150000 | pcie30phy |
PCIe Gen3 x 2Lane | pcie3x2:pcie@fe160000 | pcie30phy |
PCIe Gen3 x 1Lane | pcie2x1l0:pcie@fe170000 |
pcie30phy combphy1_ps |
PCIe Gen3 x 1Lane | pcie2x1l1:pcie@fe180000 |
pcie30phy combphy2_psu |
PCIe Gen3 x 1Lane | pcie2x1l2:pcie@fe190000 | combphy0_ps |
RK3588S
控制器 | DTS节点名称 | 配对的PHY |
---|---|---|
PCIe Gen3 x 1Lane | pcie2x1l1:pcie@fe180000 |
pcie30phy combphy2_psu |
PCIe Gen3 x 1Lane | pcie2x1l2:pcie@fe190000 | combphy0_ps |
RK3588 PHY
RK3588有两种PCIe PHY:
- 一种为pcie3.0PHY,含2个Port共4个Lane,可以根据实际需求拆分使用
- 一种是pcie2.0的PHY有3个,每个都是2.0 1Lane,跟SATA和USB combo使用
PHY在DTS中对应的节点名称
RK3588
PHY名称 | DTS节点名称 | 是否复用 |
---|---|---|
pcie30phy | phy@fee80000 | pcie专用 |
combphy0_ps | phy@fee00000 | 与SATA复用 |
combphy1_ps | phy@fee10000 | 与SATA复用 |
combphy2_psu | phy@fee20000 | 与SATA/USB3复用 |
RK3588S
PHY名称 | DTS节点名称 | 是否复用 |
---|---|---|
combphy0_ps | phy@fee00000 | 与SATA复用 |
combphy2_psu | phy@fee20000 | 与SATA/USB3复用 |
使用限制
- pcie30phy拆分后,pcie30x4控制器,工作于2Lane模式时只能固定配合pcie30phy的port0,工作于1Lane模式时,只能固定配合pcie30phy的port0lane0;
- pcie30phy拆分后,pcie30x2控制器,工作于2Lane模式时只能固定配合pcie30phy的port1,工作于1Lane模式时,只能固定配合pcie30phy的port1lane0;
- pcie30phy拆分为4个1Lane,pcie3phy的port0lane1只能固定配合pcie2x1l0控制器,pcie3phy的port1lane1只能固定配合pcie2x1l1控制器;
- pcie30x4控制器工作于EP模式,可以使用4Lane模式,或者2Lane模式使用pcie30phy的port0,pcie30phy的port1中2lane可以作为RC配合其他控制器使用。默认使用common clock作为reference clock时,无法实现pcie30phy port0的lane0工作于EP模式,lane1工作于RC模式配合其他控制器使用,因为Port0的两个lane是共用一个输入的reference clock,RC和EP同时使用clock可能会有冲突。
- RK3588 pcie30phy 如果只使用其中一个port,另一个port也需要供电,refclk等其他信号可接地。
DTS配置解析
pcie的配置大部分是固定的,需要在板级dts配置的变量并不多参考以下要点进行配置即可:
- 控制器/PHY使能:确定方案后,根据原理图选择使能正确的控制器和PHY,注意控制器的index和phy的index不一定是顺序匹配的,如RK3588的pcie2x1l0不是对应combphy0_ps;
- 控制器:部分控制器(如RK3588的pcie2x1l0和pcie2x1l1)有不止一个phy可选,按方案设计正确配置“phys”;
- 控制器:作为RC通常需要配置"reset-gpios", 该项对应原理图PCIE的"PERSTn"信号;
- 控制器:作为RC可能需要配置"vpcie3v3-supply",该项对应的是PCIE的"PWREN"gpio信号控制的fixed regulator;
- 控制器:作为EP使用时,需要修改"compatible"为EP模式对应字串;
- PHY:pcie30phy共4个lane,可拆分使用,需要根据方案正确配"rockchip,pcie30-phymode"模式;
参考设计硬件RK3588-EVB1 对应DTS:rk3588-evb1-lp4-v10.dts
硬件设计
pcie3.0 4Lane RC + 2个pcie 2.0(复用的PHY分别对应 MUX1:combphy1_ps 和MUX2:combphy2_psu )
软件DTS配置
PCIe的具体DTS配置在arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi
电源部分的配置:
pcie20_avdd0v85: pcie20-avdd0v85 {compatible = "regulator-fixed";regulator-name = "pcie20_avdd0v85";regulator-boot-on;regulator-always-on;regulator-min-microvolt = <850000>;regulator-max-microvolt = <850000>;vin-supply = <&avdd_0v85_s0>;};pcie20_avdd1v8: pcie20-avdd1v8 {compatible = "regulator-fixed";regulator-name = "pcie20_avdd1v8";regulator-boot-on;regulator-always-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;vin-supply = <&avcc_1v8_s0>;};pcie30_avdd0v75: pcie30-avdd0v75 {compatible = "regulator-fixed";regulator-name = "pcie30_avdd0v75";regulator-boot-on;regulator-always-on;regulator-min-microvolt = <750000>;regulator-max-microvolt = <750000>;vin-supply = <&avdd_0v75_s0>;};pcie30_avdd1v8: pcie30-avdd1v8 {compatible = "regulator-fixed";regulator-name = "pcie30_avdd1v8";regulator-boot-on;regulator-always-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;vin-supply = <&avcc_1v8_s0>;};
# PCIe3.0的GPIO控制电源的配置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>;};
PCIE控制器的配置
控制的详细配置在rk3588.dtsi中 ,对应的phy的指定也已经默认配置好,如需要重新配置phy可以修改
phys = <&pcie30phy>;
phys = <&combphy1_ps PHY_TYPE_PCIE>;
RK3588的pcie2x1l0和pcie2x1l1控制器可以路由到多个phy,需要注意的是不同的phy引用方式可能有差异,comboPHY需要同时指定phy的工作模式
用于WIFI模块
&pcie2x1l0 {reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;rockchip,skip-scan-in-resume;status = "okay";
};
用于以太网模块
&pcie2x1l1 {reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&rtl8111_isolate>;status = "okay";
};&pcie30phy {rockchip,pcie30-phymode = <PHY_MODE_PCIE_AGGREGATION>;status = "okay";
};&pcie3x4 {reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; //配置PCIE3.0的reset脚vpcie3v3-supply = <&vcc3v3_pcie30>; //配置对应的电源status = "okay";
};
PHY的配置
硬件原图上面对应的是MUX1
&combphy1_ps {status = "okay";
};
硬件原图上面对应的是MUX2
&combphy2_psu {status = "okay";
};
其他常见的PCIE配置对应的DTS配置实例
pcie3.0phy拆分2个2Lane RC, 3个PCIe 2.0 1Lane(comboPHY)
注意:如果pcie3.0phy拆分2个2Lane,但是只用一组的话,需要把另一组disabled,但是关掉的那组的pcie的电源还是要供着,否则会导致pcie异常无法使用。
/ {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";
};
&pcie30phy {rockchip,pcie30-phymode = <PHY_MODE_PCIE_NANBNB>;status = "okay";
};
//表示lane2/3
&pcie3x2 {reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie30>;status = "okay";
};
//表示lane0/1
&pcie3x4 {num-lanes = <2>;reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie30>;status = "okay";
};
pcie3.0phy拆分为4个1Lane, 1个使用PCIe 2.0 1 Lane(comboPHY)
/ {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";
};
&pcie2x1l0 {phys = <&pcie30phy>;reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie30>;status = "okay";
};
&pcie2x1l1 {phys = <&pcie30phy>;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";
};
&pcie30phy {rockchip,pcie30-phymode = <PHY_MODE_PCIE_NABIBI>;status = "okay";
};
&pcie3x2 {num-lanes = <1>;reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie30>;status = "okay";
};
&pcie3x4 {num-lanes = <1>;reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie30>;status = "okay";
};
PCIE的详细说明文档可以参考Rockchip RK3588 Android SDK的如下文档
RKDocs/common/PCie/Rockchip_Developer_Guide_PCIe_CN.pdf
返回 RK3588 Kernel DTS解析 专栏
Rockchip RK3588 kernel dts解析之PCIe相关推荐
- Rockchip RK3588 kernel dts解析之USB模块
Rockchip RK3588 kernel dts解析之USB模块 文章目录 Rockchip RK3588 kernel dts解析之USB模块 RK3588 USB DTS 配置 USB 芯片级 ...
- Rockchip RK3588 kernel dts解析之WIFI/BT
Rockchip RK3588 kernel dts解析之WIFI/BT RK3588 EVB的WIFI/BT使用的是外挂双模模块,其中根据WIFI的数据通信接口不同可以分为PCIE和SDIO两种,下 ...
- Rockchip RK3588 kernel dts解析之音频模块
Rockchip RK3588 kernel dts解析之音频模块 RK3588 EVB板子使用的是外接声卡ES8388 DTS配置参考:rk3588-evb1-lp4.dtsi 系统声音配置: es ...
- Rockchip RK3588 kernel dts解析之MMC
Rockchip RK3588 kernel dts解析之MMC RK3588的MMC分为3中模式: SDMMC SDIO SDHCI 下面针对每种模式的DTS配置进行说明 SDMMC SDMMC用于 ...
- Rockchip RK3588 kernel dts解析之电源模块
Rockchip RK3588 kernel dts解析之电源模块 文章目录 Rockchip RK3588 kernel dts解析之电源模块 RK3588搭配的电源方案有2种 注意单PIMC核双P ...
- Rockchip RK3588 kernel dts解析之Camera
Rockchip RK3588 kernel dts解析之Camera 文章目录 Rockchip RK3588 kernel dts解析之Camera RK3588的Camera相关资源介绍 MIP ...
- Rockchip RK3588 kernel dts解析之GPIO Pinctrl
Rockchip RK3588 kernel dts解析之GPIO Pinctrl 文章目录 Rockchip RK3588 kernel dts解析之GPIO Pinctrl GPIO的命令规则 I ...
- Rockchip RK3588如何创建新一个新板级DTS
Rockchip RK3588如何创建新一个新板级DTS 文章目录 Rockchip RK3588如何创建新一个新板级DTS 基于SDK已有的DTS选择一个适合的基础参考DTS RK3588 SDK发 ...
- RK3588 Android平台SPI NOR+PCIE SSD实现大容量存储方案
RK3588 Android平台SPI NOR+PCIE SSD实现大容量存储方案 硬件配置 硬件方案是基于RK3588S自研平板方案实现. CPU: RK3588S DDR: LPDDR5 8GB ...
最新文章
- python第一章思维导图_阅读课本第一章内容后,使用思维导图画出你所理解的
- 如何初始化一个定长ListT
- VB读取INI配置文件各方资料整合
- python之装饰器篇
- ExtJs之自定义事件
- 局域网即时通讯的可管理性
- 工作流性能优化(敢问activiti有扩展性?)(3)
- 【JavaScript框架封装】使用Prototype给Array,String,Function对象的方法扩充
- Notification Swift 3 0
- 编译OpenJDK8 b232版本
- C#office的0x8002801D或者0x80029C4A问题
- uvalive 3713 Astronauts
- 期货及衍生品基础 - 概述总结
- 饱和气压与温度的关系_饱和蒸汽温度与压力关系对照表
- Linux隔离网络,linux – 隔离网络上的单个NTP服务器
- 编写高质量的代码——从命名入手
- 怎么更改锁定计算机背景图片,电脑锁屏背景图片如何更改
- 启动weblogic 报错
- OA系统:实现签到签退功能
- 大龄程序员 “敢问路在何方?”
热门文章
- vue-color插件取色器拾色器使用示例,vue实用demo颜色选择器Sketch组件使用,vue中选色板使用示例
- LeetCode--577--反转字符串中的单词 III
- 《道德经》与“低熵”思想炫酷实现(.html)
- 每日一书丨Rootkit和Bootkit:现代恶意软件逆向分析和下一代威胁
- WIN7文件夹共享步骤
- Xilinx(K7)和CycloneV之间的光纤通信设置
- 【JAVA基础速过】第2章 Java 基本语法(上):变量
- 36岁互联网高管从大厂裸辞,专门卖书快乐多了
- Pandas dataframe 遇到ix报错问题
- 使用扩散模型从文本提示中生成3D点云