T5000如何用FUSB301TMX替代CYPD8225?

硬件:T5000 + 自研载板,FUSB301TMX替换CYPD8225,只需一路OTG+RCM,不需要PD。

软件:R39.2.0

FUSB301的电路参照OrinNano devkit(p3768),i2c地址保持0x25。总线改到i2c-7,INT_N接VBUS_EN0(GPIO22)。

该方案需要软件做哪些改动?能否给一些详细的指导?谢谢!

You could refer to Orin Nano device tree and Thor developer guide for this.

谢谢指点!对比了nano和thor的设备树,还有些问题请帮忙解惑。

  1. nano只在usb2-0上接了一个信号:fusb_p0,而thor接了两个信号:usb2-0接hs_ucsi_ccg_p1和usb3-1接ss_ucsi_ccg_p1。这个差异如何适配?
  2. nano上的vbus_en用的是main gpio,而thor上vbus_enX用的是uphy gpio。这个差异需要额外的修改适配吗?

follow the Nano one for this part. You could also confirm with fusb301 vendor.

nano上的vbus_en用的是main gpio,而thor上vbus_enX用的是uphy gpio。这个差异需要额外的修适配吗?

Use the default one on Thor.

Thanks! I’ll try.

我的otg口(usb2-0+usb3-1)已经能够自动切换host/device了,感谢指点!

但是有一个问题,接usb3.0/3.2的U盘时,无论正反面接都只能识别出2.0,识别不了3.0。是usb3-1还需缺少什么改动吗?如下是接3.2U盘时的系统日志:

[ 1528.602263] fusb301 7-0025: fusb301_work_handler: int_sts[0x01]
[ 1528.602516] fusb301 7-0025: sts[0x11], type[0x10]
[ 1528.602688] fusb301 7-0025: fusb301_set_mode: mode (4)(4)
[ 1528.602856] fusb301 7-0025: fusb_update_state: a
[ 1529.221430] fusb301 7-0025: fusb301_set_mode: mode (1)(1)
[ 1529.221599] fusb301 7-0025: fusb_update_state: b
[ 1529.367855] fusb301 7-0025: fusb301_work_handler: int_sts[0x01]
[ 1529.368099] fusb301 7-0025: sts[0x11], type[0x10]
[ 1529.368485] fusb301 7-0025: fusb301_set_dfp_power: host current(1)
[ 1529.368488] fusb301 7-0025: fusb_update_state: 7
[ 1529.368847] tegra-xusb a80aa10000.usb: failed to set HS PP 0
[ 1530.893040] usb 1-1: new high-speed USB device number 7 using tegra-xusb
[ 1531.052871] usb 1-1: New USB device found, idVendor=090c, idProduct=2320, bcdDevice= 1.00
[ 1531.052876] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1531.052877] usb 1-1: Product: thinkplus 256GB
[ 1531.052879] usb 1-1: Manufacturer: Lenovo
[ 1531.052880] usb 1-1: SerialNumber: AA000000000000000264
[ 1531.054025] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 1531.054133] scsi host0: usb-storage 1-1:1.0
[ 1532.071722] scsi 0:0:0:0: Direct-Access Lenovo thinkplus 256GB 1000 PQ: 0 ANSI: 6
[ 1532.074354] sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[ 1532.075342] sd 0:0:0:0: [sda] Write Protect is off
[ 1532.078033] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 1532.078992] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA
[ 1532.092892] sda: sda1
[ 1532.092953] sd 0:0:0:0: [sda] Attached SCSI disk

please check if doing this patch would help or not.

按这个patch修改没有效果,3.2U盘仍然只能挂载成2.0,系统日志报同样的信息”failed to set HS PP 0“

补充一下 /sys/class/usb_role/usb2-0-role-switch/role 的变化情况:

otg口无连接,系统启动 → device

连接pc → device

断开pc → device

连接U盘 → host

断开U盘 → none

以上role值的迁移,再使用patch之前和之后是一样的

please share the full dmesg.

Do you have the USB analyzer that could capture the bus trace? That is the only precise way to check why it got stuck in usb2.

dmesg.20260922.txt (127.1 KB)

开机后第一次接U盘时,可以切换host,但是lsusb看不到U盘,再次拔插之后就可以看到了。

后面U盘正反面拔插,以及连接pc的情况都和之前一致。