Hello Wayne,
So far I have seen a few things.
This manual has the following table:
If I understand it, those are all the available configurations for the USB, PCI Express and SATA. That means that if I want 2 USB 3.0 I have to use configuration 3 or 6.
In our hardware design, we have created an USB 3.0 using USB_SS#2 and USB_SS#0 but that configuration is not available in the table. The configuration that is similar to the one that we have is 4 which has 3 USB 3.0 and maybe we can just don’t use the USB_SS#1.
I have done modifications in the file hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3489-0888-a00-00-base.dts
To disable the PCI Express I have try this:
pcie-controller@10003000 {
//status = "okay";
status = "disabled";
/*
pci@1,0 {
nvidia,num-lanes = <4>;
nvidia,disable-clock-request;
status = "okay";
};
pci@2,0 {
nvidia,num-lanes = <0>;
status = "disabled";
};
pci@3,0 {
nvidia,num-lanes = <1>;
status = "okay";
};
*/
};
I think that’s how I have to disable PCI Express pins and then the pins will be used as USB 3.0
Then to enable the 3 USB 3.0 I have added this:
. . .
xusb_padctl@3520000 {
. . .
ports {
. . .
usb3-1{
nvidia,usb2-companion = <2>;
status = "okay";
};
usb3-2 {
nvidia,usb2-companion = <0>;
status = "okay";
nvidia,oc-pin = <0>;
};
And then added the ports in the phys list:
xhci@3530000 {
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
phy-names = "usb2-0", "usb3-2", "usb2-1", "usb3-0", "usb2-2", "usb3-1";
status = "okay";
};
But when I connect a USB 3.0 camera to the port the dmesg information shows a high-speed camera
[ 62.414780] usb 1-1: new high-speed USB device number 3 using tegra-xusb
[ 62.437493] usb 1-1: New USB device found, idVendor=2560, idProduct=c1d0
[ 62.437529] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 62.437551] usb 1-1: Product: See3CAM_CU130
[ 62.437565] usb 1-1: Manufacturer: e-con systems
[ 62.437579] usb 1-1: SerialNumber: 3D168B02
[ 62.450119] hid-generic 0003:2560:C1D0.0001: hidraw0: USB HID v1.11 Device [e-con systems See3CAM_CU130] on usb-3530000.xhci-1/input2
[ 62.484421] uvcvideo: Found UVC 1.00 device See3CAM_CU130 (2560:c1d0)
I know the camera is USB 3.0 because when I connect it to the other port the dmesg information shows a super-speed camera
[ 78.863345] usb 2-1: new SuperSpeed USB device number 2 using tegra-xusb
[ 78.884152] usb 2-1: LPM exit latency is zeroed, disabling LPM.
[ 78.886256] usb 2-1: New USB device found, idVendor=2560, idProduct=c1d0
[ 78.886285] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 78.886308] usb 2-1: Product: See3CAM_CU130
[ 78.886321] usb 2-1: Manufacturer: e-con systems
[ 78.886337] usb 2-1: SerialNumber: 3D168B02
[ 78.895045] uvcvideo: Found UVC 1.00 device See3CAM_CU130 (2560:c1d0)
I can see that the USB3.0 port that works is the one that is the same as the development kit.
Please can you clarify if the configuration we have designed is possible to use?
if not, configuring the kernel tree as configuration 4 of the table is a possible solution for our case?
How should I modify the kernel tree to configure the PCIe ports to be used as USB SS and not PCIe?
Thank you.