Tool/software:
Hello,
We are trying to have both PCIe ports of the J784S4 EVM working in 4x, but unfortunately we can't atm.
Here the setup :
- 2 J784S4XEVM :
- First one (EVM #A) has the two PCIe ports configured in RC.
- Second one (EVM #B) has the two PCIe ports configured in EP.
- One wiring harness between EVM #A Port 1 connected to EVM #B Port 0.
- SW11 set to 10000010.
- SW7 set to 00000000.
- SW2 set to 100001101. (Both PCIe ports in RC).
- Linux SDK version : 10.01.00.05.
Hardware modifications on EVM #A to avoid using USB but rather have the 2x PCIe lanes :
- Populated components :
- C696, C697.
- C683, C684.
- R891, R892.
- R876, R877.
- R168, R169.
- C125, C129.
- Unpopulated components :
- C694, C695.
- C679, C680.
- R885, R886.
- R867, R868.
- R170, R171.
- R152, R155.
Software modifications :
- k3-j784s4-evm.dts :
diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts index 56a037532..dd92863be 100644 --- a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts +++ b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts @@ -13,7 +13,7 @@ / { compatible = "ti,j784s4-evm", "ti,j784s4"; - model = "Texas Instruments J784S4 EVM"; + model = "Texas Instruments J784S4 EVM (PCIe1 4X)"; chosen { stdout-path = "serial2:115200n8"; @@ -458,13 +458,6 @@ J784S4_IOPAD(0x010, PIN_INPUT_PULLUP, 8) /* (AH33) MCAN13_RX.I2C4_SDA */ >; }; - main_usbss0_pins_default: main-usbss0-default-pins { - bootph-all; - pinctrl-single,pins = < - J784S4_IOPAD(0x0ec, PIN_OUTPUT, 6) /* (AN37) TIMER_IO1.USB0_DRVVBUS */ - >; - }; - main_mcan4_pins_default: main-mcan4-default-pins { pinctrl-single,pins = < J784S4_IOPAD(0x088, PIN_INPUT, 0) /* (AF36) MCAN4_RX */ @@ -1372,40 +1365,6 @@ &dss { <&k3_clks 218 22>; }; -&serdes0 { - status = "okay"; - - serdes0_usb_link: phy@3 { - reg = <3>; - cdns,num-lanes = <1>; - #phy-cells = <0>; - cdns,phy-type = <PHY_TYPE_USB3>; - resets = <&serdes_wiz0 4>; - }; -}; - -&serdes_wiz0 { - status = "okay"; -}; - -&usb_serdes_mux { - idle-states = <0>; /* USB0 to SERDES lane 3 */ -}; - -&usbss0 { - status = "okay"; - pinctrl-0 = <&main_usbss0_pins_default>; - pinctrl-names = "default"; - ti,vbus-divider; -}; - -&usb0 { - dr_mode = "otg"; - maximum-speed = "super-speed"; - phys = <&serdes0_usb_link>; - phy-names = "cdns3,usb3-phy"; -}; - &serdes_wiz4 { status = "okay"; };
- k3-j784s4-main.dtsi :
diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi index 105a8fd39..69e7e5a6d 100644 --- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi @@ -159,8 +159,8 @@ serdes_ln_ctrl: mux-controller@4080 { <0x28 0x3>, <0x2c 0x3>; /* SERDES2 lane2/3 select */ idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>, <J784S4_SERDES0_LANE1_PCIE1_LANE1>, - <J784S4_SERDES0_LANE2_IP3_UNUSED>, - <J784S4_SERDES0_LANE3_USB>, + <J784S4_SERDES0_LANE2_PCIE1_LANE2>, + <J784S4_SERDES0_LANE3_PCIE1_LANE3>, <J784S4_SERDES1_LANE0_PCIE0_LANE0>, <J784S4_SERDES1_LANE1_PCIE0_LANE1>, <J784S4_SERDES1_LANE2_PCIE0_LANE2>,
Here is what we got after we enumareted the EVM #B:
And the link caps & status :
What are we missing?