Hi,
I have a problem with lane configuration in L4T R28.2. We have a custom carrier board with second USB port connected to SATA pins, so it’s lane mapping config 2 from Jetson TX1 OEM Product Design Guide. With L4T R24.2.3 the following device-tree settings worked:
nvidia,ss_portmap = <0x3721>;
nvidia,lane_owner = <0x8f56>;
nvidia,portmap = <0xe0b>;
Now I’m trying to upgrade to L4T R28.2 with the following patch applied to device-tree (HDMI is disabled to get rid of I2C errors, since there’s no HDMI port on this board):
--- hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p2597-2180-a00.dts.orig 2018-03-02 05:37:27.000000000 +0100
+++ hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p2597-2180-a00.dts 2018-08-28 16:22:00.951848802 +0200
@@ -176,7 +176,7 @@
sata@70020000 {
compatible = "nvidia,tegra210-ahci-sata";
- status = "okay";
+ status = "disabled";
};
backlight {
@@ -601,6 +601,19 @@
sata {
nvidia,lanes = "uphy-lane-7";
nvidia,function = "sata";
+ status = "disabled";
+ };
+ usb2-ffc {
+ nvidia,lanes = "otg-3";
+ nvidia,function = "xusb";
+ nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
+ };
+ usb3-ffc {
+ nvidia,lanes = "uphy-lane-7";
+ nvidia,function = "usb3";
+ nvidia,usb3-port = <3>;
+ nvidia,usb2-map = <3>;
+ nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
};
};
};
@@ -614,8 +627,10 @@
<&tegra_padctl_uphy TEGRA_PADCTL_UPHY_USB3_P(1)>,
<&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(1)>,
<&tegra_padctl_uphy TEGRA_PADCTL_UPHY_USB3_P(0)>,
- <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(0)>;
- phy-names = "utmi-2", "usb3-1", "utmi-1", "usb3-0", "utmi-0";
+ <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(0)>,
+ <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(3)>,
+ <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_USB3_P(3)>;
+ phy-names = "utmi-2", "usb3-1", "utmi-1", "usb3-0", "utmi-0", "utmi-3", "usb3-3";
nvidia,pmc-wakeup =
<&tegra_pmc
PMC_WAKE_TYPE_EVENT 39 PMC_TRIGGER_TYPE_HIGH>,
--- hardware/nvidia/platform/t210/common/kernel-dts/t210-common-platforms/tegra210-ers-hdmi-e2190-1100-a00.dtsi.orig 2018-03-02 05:37:27.000000000 +0100
+++ hardware/nvidia/platform/t210/common/kernel-dts/t210-common-platforms/tegra210-ers-hdmi-e2190-1100-a00.dtsi 2018-08-28 16:22:00.951848802 +0200
@@ -24,11 +24,11 @@
/ {
host1x {
sor1 {
- status = "okay";
+ status = "disabled";
nvidia,ddc-i2c-bus = <&hdmi_ddc>;
nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1) 1>; /* PN7 */
hdmi-display {
- status = "okay";
+ status = "disabled";
compatible = "hdmi,display";
generic-infoframe-type = <HDMI_INFOFRAME_TYPE_HDR>;
disp-default-out {
But so far this second port works only with USB2 speed. Here’s an excerpt from dmesg (with USB3->SATA adapter attached to that port):
[ 0.476077] tegra21x-padctl-uphy 7009f000.pinctrl: padctl mmio start 0x000000007009f000 end 0x000000007009ffff
[ 0.476127] tegra21x-padctl-uphy 7009f000.pinctrl: TEGRA_FUSE_SKU_CALIB_0 0x71a9c0e
[ 0.476164] tegra21x-padctl-uphy 7009f000.pinctrl: TEGRA_FUSE_USB_CALIB_EXT_0 0x4
[ 0.477577] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-0 is used by XUSB
[ 0.477615] tegra21x-padctl-uphy 7009f000.pinctrl: using UTMI port 0 for otg
[ 0.477646] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-2 is used by XUSB
[ 0.477684] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 5, set usb3_lanes = 0x20
[ 0.477730] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 1 maps to USB2 port 2
[ 0.477765] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-1 is used by XUSB
[ 0.477801] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 6, set usb3_lanes = 0x60
[ 0.477845] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 0 maps to USB2 port 1
[ 0.477892] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 1, set pcie_lanes = 0x2
[ 0.477942] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 2, set pcie_lanes = 0x6
[ 0.477991] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 3, set pcie_lanes = 0xe
[ 0.478039] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 4, set pcie_lanes = 0x1e
[ 0.478086] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 0, set pcie_lanes = 0x1f
[ 0.478127] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-3 is used by XUSB
[ 0.478161] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 7, set usb3_lanes = 0xe0
[ 0.478203] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 3 maps to USB2 port 3
[ 0.478588] tegra21x-padctl-uphy 7009f000.pinctrl: mailbox is not ready yet
<.......>
[ 2.855167] tegra-xudc-new 700d0000.xudc: usb2 phy is not available yet
<.......>
[ 4.033402] xhci-tegra 70090000.xusb: can't get usb3-0 phy (-517)
[ 4.034031] tegra21x-padctl-uphy 7009f000.pinctrl: padctl mmio start 0x000000007009f000 end 0x000000007009ffff
[ 4.034042] tegra21x-padctl-uphy 7009f000.pinctrl: TEGRA_FUSE_SKU_CALIB_0 0x71a9c0e
[ 4.034050] tegra21x-padctl-uphy 7009f000.pinctrl: TEGRA_FUSE_USB_CALIB_EXT_0 0x4
[ 4.035394] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-0 is used by XUSB
[ 4.035405] tegra21x-padctl-uphy 7009f000.pinctrl: using UTMI port 0 for otg
[ 4.035413] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-2 is used by XUSB
[ 4.035428] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 5, set usb3_lanes = 0x20
[ 4.035443] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 1 maps to USB2 port 2
[ 4.035449] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-1 is used by XUSB
[ 4.035463] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 6, set usb3_lanes = 0x60
[ 4.035477] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 0 maps to USB2 port 1
[ 4.035494] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 1, set pcie_lanes = 0x2
[ 4.035513] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 2, set pcie_lanes = 0x6
[ 4.035531] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 3, set pcie_lanes = 0xe
[ 4.035549] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 4, set pcie_lanes = 0x1e
[ 4.035566] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 0, set pcie_lanes = 0x1f
[ 4.035577] tegra21x-padctl-uphy 7009f000.pinctrl: UTMI-3 is used by XUSB
[ 4.035589] tegra21x-padctl-uphy 7009f000.pinctrl: uphy_lane = 7, set usb3_lanes = 0xe0
[ 4.035602] tegra21x-padctl-uphy 7009f000.pinctrl: USB3 port 3 maps to USB2 port 3
[ 4.036276] usb-vbus1: supplied by vdd-3v3
[ 4.038573] tegra21x-padctl-uphy 7009f000.pinctrl: Done tegra21x_padctl_uphy_probe
<.......>
[ 4.049301] tegra-xudc-new 700d0000.xudc: USB charger detection disabled
[ 4.049796] tegra-xudc-new 700d0000.xudc: entering ELPG
[ 4.050630] tegra_core_action core_dvfs_cdev_floor: Tegra CORE DVFS 'floor cooling device' registered
[ 4.050985] tegra21x-padctl-uphy 7009f000.pinctrl: trying to assert IDDQ while XUSB partitions are on
[ 4.051372] tegra-xudc-new 700d0000.xudc: entering ELPG done
<.......>
[ 4.058970] xhci-tegra 70090000.xusb: UTMI port 0 has OTG_CAP
[ 4.058973] xhci-tegra 70090000.xusb: No USB3 port has OTG_CAP
[ 4.062675] xhci-tegra 70090000.xusb: Direct firmware load for tegra21x_xusb_firmware failed with error -2
[ 4.062677] xhci-tegra 70090000.xusb: Falling back to user helper
<.......>
[ 5.455687] xhci-tegra 70090000.xusb: cannot find firmware....retry after 1 second
<.......>
[ 6.455863] xhci-tegra 70090000.xusb: Firmware timestamp: 2017-10-20 11:40:00 UTC, Version: 50.19 release
[ 6.457901] xhci-tegra 70090000.xusb: xHCI Host Controller
[ 6.457920] xhci-tegra 70090000.xusb: new USB bus registered, assigned bus number 1
[ 6.458750] xhci-tegra 70090000.xusb: hcc params 0x0184f525 hci version 0x100 quirks 0x00010810
[ 6.458777] xhci-tegra 70090000.xusb: irq 319, io mem 0x70090000
[ 6.458922] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 6.458926] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.458928] usb usb1: Product: xHCI Host Controller
[ 6.458930] usb usb1: Manufacturer: Linux 4.4.38-tegra xhci-hcd
[ 6.458932] usb usb1: SerialNumber: 70090000.xusb
[ 6.459885] hub 1-0:1.0: USB hub found
[ 6.460186] hub 1-0:1.0: 5 ports detected
[ 6.474391] xhci-tegra 70090000.xusb: xHCI Host Controller
[ 6.474399] xhci-tegra 70090000.xusb: new USB bus registered, assigned bus number 2
[ 6.474544] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[ 6.474547] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.474549] usb usb2: Product: xHCI Host Controller
[ 6.474551] usb usb2: Manufacturer: Linux 4.4.38-tegra xhci-hcd
[ 6.474553] usb usb2: SerialNumber: 70090000.xusb
[ 6.475148] hub 2-0:1.0: USB hub found
[ 6.475332] hub 2-0:1.0: 4 ports detected
[ 6.583489] tegra-xudc-new 700d0000.xudc: exiting ELPG
[ 6.584050] tegra-xudc-new 700d0000.xudc: exiting ELPG done
[ 6.584066] tegra-xudc-new 700d0000.xudc: ep 0 (type: 0, dir: out) enabled
[ 6.584128] tegra-xudc-new 700d0000.xudc: entering ELPG
[ 6.584327] tegra-xudc-new 700d0000.xudc: entering ELPG done
[ 6.584338] tegra-xudc-new 700d0000.xudc: exiting ELPG
[ 6.585202] tegra-xudc-new 700d0000.xudc: exiting ELPG done
[ 6.585224] tegra-xudc-new 700d0000.xudc: entering ELPG
[ 6.585428] tegra-xudc-new 700d0000.xudc: entering ELPG done
<.......>
[ 6.774260] usb 1-4: new high-speed USB device number 2 using xhci-tegra
<.......>
[ 7.164547] usb 2-1: new SuperSpeed USB device number 2 using xhci-tegra
[ 7.181231] usb 1-4: feature bit otg_vbus_off set
[ 7.185972] usb 1-4: New USB device found, idVendor=174c, idProduct=5136
[ 7.192814] usb 1-4: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[ 7.200041] usb 1-4: Product: AS2105
[ 7.203721] usb 1-4: Manufacturer: ASMedia
[ 7.207871] usb 1-4: SerialNumber: 00000000000000000000
[ 7.214087] xhci-tegra 70090000.xusb: tegra_xhci_mbox_work mailbox command 6
[ 7.221271] usb 2-1: New USB device found, idVendor=0955, idProduct=09ff
[ 7.228116] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
<.......>
[ 7.240958] usb-storage 1-4:1.0: USB Mass Storage device detected
[ 7.247125] usb 2-1: Product: USB 10/100/1000 LAN
[ 7.251889] usb 2-1: Manufacturer: Nvidia
[ 7.255952] usb 2-1: SerialNumber: 000001000000
[ 7.260660] scsi host0: usb-storage 1-4:1.0
[ 7.267563] xhci-tegra 70090000.xusb: tegra_xhci_mbox_work mailbox command 6
<.......>
[ 7.391205] usb 2-1: reset SuperSpeed USB device number 2 using xhci-tegra
<.......>
[ 8.283283] sd 0:0:0:0: [sda] Attached SCSI removable disk
Note that I had to use 8 as lane number for this USB3 port in nvidia,lane_owner for L4T 24.2.3, not 7 as one might expect. With 7 port works only in USB2 mode (so behaves the same as with R28.2). Might that be related? If not, what have I missed?