根据原理图填写DTS
原理图是基于IO信号的视⻆来描述硬件,IO信号是跟PHY的index强相关的,前⾯提到RK3588的controller和PHY的index可能不⼀致,所以看原理图的时候需要特别注意这⼀点。这⾥给出⼀些填写建议,并通过⽰例说明如何将原理图中的PHY和控制器对应到dts的节点。
根据硬件原理图来填写dts的建议步骤:
1.跟硬件⼯程师确认使⽤了⼏个PCIe设备,芯⽚的多个PCIe接口是如何分配的;
2.在原理图中分别查找某个设备使⽤的PCIe数据线对应到哪个PHY的输出;
3.确定当前设备使⽤的分别是哪个控制器和PHY,在dts中使能;
4.确定当前pcie接口使⽤的控制器dts "phy"属性及模式是否选择正确,如pcie2x1ln控制器需要选择comboPHY且指定为PHY_TYPE_PCIE;
5.确定当前phy是否有多种⼯作模式,配置是否正确,如pcie30phy的不同拆分组合需要正确配置对应模式;
6.确定当前pcie接口使⽤的"PERSTn"信号是哪个GPIO,正确配置到控制器dts节点;
7.确定当前pcie接口使⽤的"PWREN"信号是哪个GPIO控制的,正确配置到控制器dts节点(这个配置也可以放到on board外设的dts中);
8.配置其他外设⼯作所需的硬件;
下图是RK3588 pcie30phy及其可能使⽤的controller,红⾊⽅框为controller,粉⾊⽅框为PHY信号,绿⾊⽅框为外设信号;实际使⽤哪个控制器可以通过外设信号连接来确认,也可以跟硬件⼯程师核对理解是否正确。下图是来⾃RK3588 evb1,设备接的是⼀个pcie3.0 x4的slot,所以controller⽤的是PCIe30X4(dts命名pcie3x4),其他⼏个controller都未跟这个PHY配合使⽤。
下图是RK3588 comboPHY及其可能使⽤的controller,红⾊⽅框为controller,粉⾊⽅框为PHY信号,绿⾊⽅框为外设信号;实际使⽤哪个控制器可以通过外设信号连接来确认,也可以跟硬件⼯程师核对理解是否正确。此图中Mux0的PHY(combphy0_ps)⼯作于SATA模式,未⼯作于PCIe;Mux1的PHY(combphy1_ps)配合PCIe30x1_0(dts命名为pcie2x1l0)可能⼯作于PCIe模式,需要由最终实际接的设备来确定;Mux2的PHY(combphy2_psu)配合PCIe30x1_1(dts命名为pcie2x1l1)⼯作于pcie模式⽤于连接⼀个PCIe⽹卡。
Wi-Fi模块设备树编写范例
由于Wi-Fi模块⼀般接⼊PCIe2.0口,其使⽤的combphy复⽤关系复杂,且其电源使⽤⽅式、休眠模式、复位需求与其他设备有明显的不同,此处给出⼀个设备树编写范例,请酌情参考。
查看原理图,弄清楚Wi-Fi模块所使⽤的combphy。combphy节点数字表⽰Mux关系,后缀表⽰复⽤关系,p、s、u、q分别表⽰PCIe、SATA、USB、QSGMII。以此图为例,Wi-FI是接到了PCIe与SATA复⽤的PCIE20/SATA30 Mux0上,因此配置的应该是combphy0_ps节点。
搜索dts⽂件,确保复⽤此combphy功能的其他控制器节点关闭,防⽌信号⼲扰。
3.将wifi_reg_on信号从wireless_wlan节点挪到PCIe 3.3v电源控制节点中。
4.如果Wi-Fi需要实现L1.x功耗模式,请参考”RC mode PM L1 Substates⽀持“章节。
5.如果Wi-Fi需要实现⽆线唤醒功能,需要确保wifi_reg_on管脚在休眠时保持⾼电平,wifi_host_wake管脚连接到不断电的PMU IO上⽤于产⽣中断唤醒主控.