Hi There,
I’m no dts guru either but I can see that there are two configurations for rk3588: In the line I linked:
“pcie3x4” so this should be for PCIe 3 1x4 and below you can see “pcie3x2” this should be the part for PCIe 3 2x2. What all these interrupts do etc. I have not really a clue
Update: Output ChatGPT
pcie3x4: pcie@fe150000 {
This line defines a PCIe controller node with the name "pcie3x4" at the physical address "fe150000".
compatible = "rockchip,rk3588-pcie", "rockchip,rk3568-pcie";
Indicates compatible PCIe controller models: "rk3588-pcie" and "rk3568-pcie".
#address-cells = <3>;
Specifies that the controller uses three cells to represent addresses.
#size-cells = <2>;
Specifies that the controller uses two cells to represent sizes.
bus-range = <0x00 0x0f>;
Defines the PCI bus range supported by this controller from 0x00 to 0x0f.
clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,...;
Lists the clock sources required by the PCIe controller.
clock-names = "aclk_mst", "aclk_slv",...;
Associates names with the clock sources listed in the previous line.
device_type = "pci";
Specifies that the device type is PCI.
interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH 0>,...;
Lists interrupt sources and their properties.
interrupt-names = "sys", "pmc", "msg", "legacy", "err";
Associates names with the interrupts listed in the previous line.
#interrupt-cells = <1>;
Indicates that each interrupt specifier has one cell.
interrupt-map-mask = <0 0 0 7>;
Specifies the mask for the interrupt mapping.
interrupt-map = <0 0 0 1 &pcie3x4_intc 0>,...;
Maps PCIe interrupts to corresponding interrupt controllers.
linux,pci-domain = <0>;
Specifies the Linux PCI domain.
max-link-speed = <3>;
Indicates the maximum link speed (Gen3).
msi-map = <0x0000 &its1 0x0000 0x1000>;
Maps Message Signaled Interrupts (MSI) to the Interrupt Translation Service (ITS).
num-lanes = <4>;
Specifies the number of PCIe lanes.
phys = <&pcie30phy>;
Associates the PCIe controller with a PHY (physical layer) named "pcie30phy".
phy-names = "pcie-phy";
Associates a name with the PHY listed in the previous line.
power-domains = <&power RK3588_PD_PCIE>;
Specifies the power domain for the PCIe controller.
ranges = <0x01000000 0x0 0xf0100000 0x0 0xf0100000 0x0 0x00100000>,...;
Describes the address ranges that the PCIe controller can access.
reg = <0xa 0x40000000 0x0 0x00400000>,...;
Specifies register ranges for the PCIe controller.
reg-names = "dbi", "apb", "config";
Associates names with the register ranges listed in the previous line.
resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
Specifies the resets required for the PCIe controller.
reset-names = "pwr", "pipe";
Associates names with the resets listed in the previous line.
status = "disabled";
Indicates that the PCIe controller is currently disabled.
pcie3x4_intc: legacy-interrupt-controller {...};
Defines a legacy interrupt controller named "pcie3x4_intc" for handling interrupts associated with this PCIe controller.
};
Closes the definition for the "pcie3x4" PCIe controller node.
pcie3x2: pcie@fe160000 {...};
Similar to the "pcie3x4" node, this defines another PCIe controller named "pcie3x2" at the physical address "fe160000".
...
The definition for "pcie3x2" follows a similar structure as "pcie3x4", with differences in parameters such as bus range, number of lanes, and interrupts.
pcie3x2_intc: legacy-interrupt-controller {...};
Defines a legacy interrupt controller named "pcie3x2_intc" for handling interrupts associated with the "pcie3x2" PCIe controller.
};
Closes the definition for the "pcie3x2" PCIe controller node.