Hi everyone,
I’m working on a project where I need to downgrade the PCIe interface for the M.2 slot on the Jetson devkit to Gen 1 with 1 lane enabled. I’ve successfully achieved this by decompiling the DTB file in /boot/dtb
, converting it to a DTS file, and manually editing the pcie@14160000
root node. After recompiling the DTS file, I added the new custom .dtb
file to the extlinux.conf
using the FDT
parameter.
This setup works as expected, and when I run lspci -vv
, I can confirm that the PCIe slot is downgraded to x1. However, I’d like to take it a step further and set the PCIe link speed to Gen 1 (instead of Gen 2 or Gen 3), but I’m not sure which parameter in the device tree controls this.
Has anyone had experience with this or can point me in the right direction? Any help would be greatly appreciated!
Thanks in advance!
pcie@14160000 {
compatible = "nvidia,tegra234-pcie";
power-domains = <0x03 0x08>;
reg = <0x00 0x14160000 0x00 0x20000 0x00 0x36000000 0x00 0x40000 0x00 0x36040000 0x00 0x40000 0x00 0x36080000 0x00 0x40000 0x24 0x30000000 0x>
reg-names = "appl\0config\0atu_dma\0dbi\0ecam";
#address-cells = <0x03>;
#size-cells = <0x02>;
device_type = "pci";
num-lanes = <0x01>; #this fixed the 1 lane i needed
num-viewport = <0x08>;
linux,pci-domain = <0x04>;
clocks = <0x03 0xe0>;
clock-names = "core";
resets = <0x03 0x7d 0x03 0x78>;
reset-names = "apb\0core";
interrupts = <0x00 0x33 0x04 0x00 0x34 0x04>;
interrupt-names = "intr\0msi";
#interrupt-cells = <0x01>;
interrupt-map-mask = <0x00 0x00 0x00 0x00>;
interrupt-map = <0x00 0x00 0x00 0x00 0x01 0x00 0x33 0x04>;
nvidia,bpmp = <0x03 0x04>;
nvidia,aspm-cmrt-us = <0x3c>;
nvidia,aspm-pwr-on-t-us = <0x14>;
nvidia,aspm-l0s-entrance-latency-us = <0x03>;
bus-range = <0x00 0xff>;
ranges = <0x43000000 0x21 0x40000000 0x21 0x40000000 0x02 0xe8000000 0x2000000 0x00 0x40000000 0x24 0x28000000 0x00 0x8000000 0x1000000 0x00 >
interconnects = <0x58 0xe0 0x59 0x58 0xe1 0x59>;
interconnect-names = "dma-mem\0write";
iommu-map = <0x00 0x04 0x13 0x1000>;
iommu-map-mask = <0x00>;
dma-coherent;
status = "okay";
vddio-pex-ctl-supply = <0xf7>;
phys = <0x119 0x11a 0x11b 0x11c>;
phy-names = "p2u-0\0p2u-1\0p2u-2\0p2u-3";
iommus = <0x04 0x13>;
};