USB1 and Installing kernel modules for LTE modem

Hello, I am having a problem when using TX2 and need your help.
We made the baseboard ourselves, USB2 can be used normally. Now we want to use USB1, encapsulate USB1 into mini PCIE, and use 4G module EC20. But after the EC20 driver was transplanted, the device could not be identified. Now I am not sure if it is a problem with USB1 or EC20. How can I make sure that USB1 works?

The transplantation of EC20 is consistent with this article.
https://devtalk.nvidia.com/default/topic/1032556/?comment=5253170

Look forward to your reply.

EthanYYYY,

If you have own custom baseboard, which usb lane mapping are you using? Also, you are using a usb->mini PCIE converter. Could you try to use normal pcie device and see if the port works?

WayneWWW,

Thank you for your reply.

For USB Lane mapping, we use the default configuration (configs #2).

On my custom base board, we designed USB1 to use USB2.0, but on TX2 DevKit, it is USB3.0. So I think maybe this is the problem that makes USB1 unable to work.

Now I want to turn USB1 into USB2.0, which device trees should I modify? And how to do?

I have changed the odmdata in p2771-0000.conf.common to 0x90000 , to modify the configuration of USB Lane mapping to #1.

Hi EthanYYYY,
For double confirmation, you have A18, A38, A39 pins connected with the USB2.0 Type A port on your custom board?

Hi DaneLLL

We have A38, A39 pins connected with the USB2.0 Type A port on our custom board while A18 pins connect nothing.

We used USB2 at the same time, and only connected B42 and B43pins, suspended A19pins, but USB2 can work properly.

USB1-PCB.jpg

USB1-PCB.jpg

https://devtalk.nvidia.com/default/topic/1036547/jetson-tx1/usb2-b43-b42-not-working-on-tx1-with-r28-2/post/5265708/#5265708

Hi Ethan, it may not work if VBUS is always on. Please try to turn VBUS on after booting to kernel.

I have read through the forums,I try to control the pin A18 on and off for the USB1 VBUS Power like follow
https://devtalk.nvidia.com/default/topic/1042460/?comment=5287681

sudo su
cd /sys/class/gpio
echo 413 > export
cd gpio413
echo out > direction && echo 0 > value # Will turn off the port
echo out > direction && echo 1 > value # Will turn on the port

A18(USB_VBUS_EN1)is the gpio pin, which can be determined according to the conversion rule to correspond to gpio413.
https://devtalk.nvidia.com/default/topic/1001584/?comment=5121561
But there are problems.

root@tegra-ubuntu:/sys/class/gpio# sudo echo 413 > export 
echo: write error: Device or resource busy

I don’t understand where it went wrong.

The result of running “sudo cat /sys/kernel/debug/gpio” is the follow:

GPIOs 224-231, platform/max77620-gpio, max77620-gpio, can sleep:
 gpio-224 (                    |external-connection:) in  hi    
 gpio-229 (                    |spmic_gpio_input_5  ) in  lo    
 gpio-230 (                    |spmic_gpio_input_6  ) in  hi    

GPIOs 232-255, i2c/0-0022, tca6424, can sleep:
 gpio-232 (                    |vdd-usb2-5v         ) out hi    
 gpio-233 (                    |en-vdd-ts-1v8       ) out hi    
 gpio-234 (                    |en-vdd-ts-hv-3v3    ) out hi    
 gpio-235 (                    |en-vdd-disp-3v3     ) out hi    
 gpio-236 (                    |vdd-fan             ) out hi    
 gpio-237 (                    |vdd-usb2-5v         ) out hi    
 gpio-238 (                    |vdd-usb2-5v         ) out hi    
 gpio-239 (                    |en-mdm-pwr-3v7      ) out hi    
 gpio-240 (                    |vdd-usb2-5v         ) out hi    
 gpio-241 (                    |en-vdd-disp-1v8     ) out hi    
 gpio-242 (                    |dis-vdd-1v2         ) out hi    
 gpio-243 (                    |vdd-usb2-5v         ) out hi    
 gpio-244 (                    |vdd-hdmi            ) out hi    
 gpio-245 (                    |en-vdd-cam-hv-2v8   ) out hi    
 gpio-246 (                    |vdd-usb2-5v         ) out hi    
 gpio-247 (                    |vdd-usb2-5v         ) out hi    
 gpio-248 (                    |vdd-usb2-5v         ) out hi    
 gpio-249 (                    |vdd-usb2-5v         ) out hi    
 gpio-250 (                    |vdd-usb2-5v         ) out hi    
 gpio-251 (                    |vdd-usb2-5v         ) out hi    

GPIOs 256-319, platform/c2f0000.gpio, tegra-gpio-aon:
 gpio-272 (                    |temp_alert          ) in  hi    
 gpio-312 (                    |Power               ) in  hi    
 gpio-313 (                    |Volume Up           ) in  hi    
 gpio-314 (                    |Volume Down         ) in  hi    
 gpio-315 (                    |wifi-wake-ap        ) in  lo    
 gpio-316 (                    |bt_host_wake        ) in  lo    

GPIOs 320-511, platform/2200000.gpio, tegra-gpio:
 gpio-381 (                    |reset_gpio          ) out hi    
 gpio-412 (                    |vdd-usb0-5v         ) out lo    
 gpio-413 (                    |vdd-usb1-5v         ) out lo    
 gpio-420 (                    |eqos_phy_reset      ) out hi    
 gpio-421 (                    |eqos_phy_intr       ) in  hi    
 gpio-424 (                    |wifi-enable         ) out hi    
 gpio-426 (                    |cam1-pwdn           ) out lo    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
 gpio-444 (                    |wp                  ) in  hi    
 gpio-445 (                    |cd                  ) in  hi    
 gpio-446 (                    |en-vdd-sd           ) out lo    
 gpio-456 (                    |cam0-pwdn           ) out lo    
 gpio-457 (                    |cam1-rst            ) out lo    
 gpio-461 (                    |cam0-rst            ) out lo    
 gpio-479 (                    |external-connection:) in  hi    
 gpio-484 (                    |bt_ext_wake         ) out hi

We used R28.2.
BTW,in the our custom baseboard, we

  • removed INA3221.
  • replaced I2C TCA9539 with TCA6424
  • used USB2 from M.2
  • turn USB1 into USB2.0(see Floor #5)

I modified the .dts to suit our baseboard.
hardware/nvidia/platform/t18x/common/kernel-dts/tegra186-cvb-prod-p2597-b00-p3310-1000-a00-00.dtsi

Should we modify these cfg for TX2?
/Linux_for_Tegra/p2771-0000.conf.common
Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-a00.cfg

Hi Ethan,
Per your comment #5, you do not connect A18 to VBUS of USB2 Type A port, so it does not have effect to control A18. How do you connect VBUS of USB2 Type A port?

VBUS of USB2 Type A port from TPS5430.
Our hardware engineers say that the 5v or3.3v power supply on our custom baseboard cannot be controlled from a software perspective.

Hi Ethan,
Please try HW reset VBUS after booting to kernel. See if it can enumerate the modem.
We have seen enumeration issue when VBUS is on too early.

According to your prompt, I reset VBUS and then it can enumerate the modem.

Thanks very much.