• 周五. 5月 2nd, 2025

rk3399 — pcie dts配置

关键词:rk3399; rockchip,rk3399-pcie; 

rk3399 AXI PCIe dts配置,pcie 还会使用到pcie phy的设置,pcie phy dts的配置方法可以查看该文章《RK3399 — PCIE PHY DTS配置

1、必须属性值:

- #address-cells: Root Port的地址,这里设置为<3>
- #size-cells: Root Port的大小,这里设置为<2>
- #interrupt-cells: 指定需要被设置成中断源的cell,这里设置为1.
- interrupt-map-mask and interrupt-map: 标准PCI 属性值
- compatible: 必须设置为 "rockchip,rk3399-pcie"
- reg: 需要设置两个寄存器地址范围,名字需要与reg-names 一一对应。
- reg-names: 只能是以下两个名字
- "axi-base"
- "apb-base"
- clocks: 与PCIe相关的时钟源,时钟顺序需要与clock-names 一一对应。
- clock-names: 名字只用以下名字
- "aclk"
- "aclk-perf"
- "hclk"
- "pm"
- msi-map: MSI控制器配置,分配msi-specifier数据。
- phys: 指定PCIe PHY. 
- phy-names:  名字必须是 "pcie-phy".
- interrupts: 需要指定三个中断,需与interrupt-names 一一对应
- interrupt-names: 中断的名字只能取如下
- "sys"
- "legacy"
- "client"
- resets: 必须指定7个reset入口,并与reset-names 一一对应。
- reset-names: 名字只能取以下7个。
- "core"
- "mgmt"
- "mgmt-sticky"
- "pipe"
- "pm"
- "aclk"
- "pclk"
- pinctrl-names : 指定pin控制脚的名字
- pinctrl-0: 指定pin控制脚。

2、可选属性值:

- aspm-no-l0s: RC不支持ASPM L0s,这个属性只有RC phy使用24MHz OSC时,才有用。
- ep-gpios: pre-reset的 pin 脚定义
- num-lanes: lanes的数量
- vpcie3v3-supply: 指定3.3v电源
- vpcie1v8-supply: 指定1.8v电源
- vpcie0v9-supply: 指定0.9v电源

3、以rk3399为例:

pcie0: pcie@f8000000 {
compatible = "rockchip,rk3399-pcie";
#address-cells = <3>;
#size-cells = <2>;
clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>,
<&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>;
clock-names = "aclk", "aclk-perf",
     "hclk", "pm";
bus-range = <0x0 0x1>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>,
    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>,
    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>;
interrupt-names = "sys", "legacy", "client";
assigned-clocks = <&cru SCLK_PCIEPHY_REF>;
assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>;
assigned-clock-rates = <100000000>;
ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x600000
 0x81000000 0x0 0xfa600000 0x0 0xfa600000 0x0 0x100000>;
num-lanes = <4>;
msi-map = <0x0 &its 0x0 0x1000>;
reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>;
reg-names = "axi-base", "apb-base";
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> ,
<&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>;
reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
     "pm", "pclk", "aclk";
phys = <&pcie_phy>;
phy-names = "pcie-phy";
pinctrl-names = "default";
pinctrl-0 = <&pcie_clkreq>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &pcie0_intc 0>,
<0 0 0 2 &pcie0_intc 1>,
<0 0 0 3 &pcie0_intc 2>,
<0 0 0 4 &pcie0_intc 3>;
pcie0_intc: interrupt-controller {
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
};
};

发表评论

您的电子邮箱地址不会被公开。