usbf_enum error on flashing different lane config

Hi,

I’ve been having issues when modifying the DTS for lane mappings. Following other forum posts and https://elinux.org/Jetson/TX2_USB I always end up with a usbf_enum error. Its worth noting at this stage the board I’m using does this successfully with there own BSP package, however I’m curious as to the changes needed in the DTS.

I followed the elinux post above with Terga28.1, making changes to p2771-000.conf-common and the other outlined changes. Rebuild and install the kernel with:

make oldconfig
make
make modules
cp arch/arm64/boot/Image /home/dev/Linux_for_Tegra/kernel/Image
rm /home/dev/Linux_for_Tegra/kernel/dtb/*
cp -R arch/arm64/boot/dts/* /home/dev/Linux_for_Tegra/kernel/dtb/.
INSTALL_MOD_PATH=/home/dev/Linux_for_Tegra/rootfs make modules_install

and finally apply the new image binary with apply_binaries.sh

After this the flash moves through its normal steps and halts after sending what I assume is the DTBs before restarting the USB and flashing the OS on:

[  11.5206 ] Added binary blob_nvtboot_recovery_cpu_sigheader.bin.encrypt of size 190992
[  11.5217 ] Added binary blob_nvtboot_recovery_sigheader.bin.encrypt of size 79744
[  11.5219 ] Added binary blob_preboot_d15_prod_cr_sigheader.bin.encrypt of size 63104
[  11.5222 ] Added binary blob_mce_mts_d15_prod_cr_sigheader.bin.encrypt of size 2082144
[  11.5226 ] Added binary blob_bpmp_sigheader.bin.encrypt of size 533056
[  11.5230 ] Added binary blob_tegra186-a02-bpmp-storm-p3489-a00-00-ta795sa-ucm1_sigheader.dtb.encrypt of size 75872
[  11.5234 ] Added binary blob_tos_sigheader.img.encrypt of size 63088
[  11.5236 ] Added binary blob_eks_sigheader.img.encrypt of size 1488
[  11.5237 ] Added binary blob_tegra186-quill-p3489-1000-a00-00-ucm1_sigheader.dtb.encrypt of size 274352
[  11.5244 ]
[  11.5244 ] Sending bootloader and pre-requisite binaries
[  11.5250 ] tegrarcm_v2 --download blob blob.bin
[  11.5255 ] Applet version 01.00.0000
[  11.5446 ] Sending blob
[  11.5447 ] [................................................] 100%
[  11.9300 ]
[  11.9313 ] tegrarcm_v2 --boot recovery
[  11.9325 ] Applet version 01.00.0000
[  11.9496 ]
[  11.9509 ] tegrarcm_v2 --isapplet
[  12.3360 ]
[  12.3427 ] tegradevflash_v2 --iscpubl
[  12.3439 ] CPU Bootloader is not running on device.
[  12.3450 ]
[ 107.1833 ] Retrieving storage infomation
[ 107.1848 ] tegrarcm_v2 --oem platformdetails storage storage_info.bin
[ 107.1861 ] USB communication failed.Check if device is in recovery
[ 107.1866 ]
[ 107.1879 ] tegradevflash_v2 --oem platformdetails storage storage_info.bin
[ 107.1891 ] Cannot Open USB
[ 107.2020 ]
Error: Return value 8
Command tegradevflash_v2 --oem platformdetails storage storage_info.bin
Failed flashing t186ref.

The serial terminal shows:

[0094.500] I> Boot-device: eMMC
[0094.538] I> sdmmc ddr50 mode
[0094.541] I> sdmmc bdev is already initialized
[0094.546] I> Reading GPT from 512 for device 00000003
[0094.551] I> Reading GPT from 16776704 for device 00000003
[0094.558] I> Found 16 partitions in 00000003 device
[0094.563] I> Reading GPT from 512 for device 00010003
[0094.569] I> Found 31 partitions in 00010003 device
[0094.573] I> bl dtb load address = @0x8520f400
[0094.577] I> Recovery boot_type: 0
[0094.584] I> fixed regulator driver initialized
[0094.619] I> register 'maxim' power off handle
[0094.625] I> virtual i2c enabled
[0094.628] I> registered 'maxim,max77620' pmic
[0094.632] I> tegrabl_gpio_driver_register: register 'max77620-gpio' driver
[0094.639] I> Entering 3p server
[0094.642] I> Entering into 3p server..
[0094.646] I> Transport interface is USB
[0094.655] I> setting 'vdd-3v3-sys' regulator to 3300000 micro volts
[0094.661] W> tegrabl_usbf_priv_init enable regulator failed
[0094.667] I> tegrabl_usbf_priv_init:2583 full init:: [0094.671] I>  SUPER SPEED
[0094.699] W> FAILED IN WAIT FOR EVENT err = 0x178bc02c
[0094.704] E> usbf_enum failed err = 0x178bc02c
[0094.708] E> Failed to open transport
[0094.712] I> exiting nv3p server
[0094.715] E> Failed to open nv3p socket
[0094.718] C> RCM boot failed
[0094.721] C> ERROR: Highest Layer Module = 0x17, Lowest Layer Module = 0x17,
Aux Info = 0x0, Reason = 0x11
[0094.731] I> TBoot-CPU Recovery hang

I’ve tried moving to Tegra32.1 however end up with a similar:

[0129.639] I> Entering 3p server
[0129.642] I>  SUPER SPEED
[0129.646]  > XUSB_F: Failed to configure enumeration.
[0094.655] E> usbf_enum failed err = 0x2f2f0c02
[0094.661] E> NVP3: Failed to open transport endpoint. Interfaces: 0, instance 0.
[0094.667] E> NV3P_SERVER: Failed to open transpoint endpoint.
[0094.699] C> RCM boot failed
[0094.704] E> Top caller module: NV3P, error module: NV3P, reason: 0x11, aux_info: 0x01
[0094.708] I> TBoot-CPU Recovery hang

Any ideas of what I have missed in the DTS changes?

Hi,
For USB lane mapping, please check oem design guide and adaptation guide:
https://developer.nvidia.com/embedded/dlc/jetson-tx2-series-oem-product-design-guide
https://developer.nvidia.com/embedded/dlc/l4t-driver-package-tx2-adaptation-guide
https://developer.nvidia.com/embedded/dlc/Tegra_Linux_Driver_Package_TX2_Adaptation_Guide