尊敬的 TI 团队:
我们的客户正在定制设计中使用 TUSB8020B-Q1集线器。 它有一个连接到下行端口1的不可拆卸器件和一个连接到下行端口2的 A 型(可拆卸器件)端口。 它 当前通过 SMBus 连接以配置集线器。 如何通过 SMBus 配置此集线器? 它可以从 Linux 中完成,也可以由引导加载程序完成吗? 除了硬件数据表之外,是否还有任何用于软件端编程的参考?
谢谢、
John
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 TI 团队:
我们的客户正在定制设计中使用 TUSB8020B-Q1集线器。 它有一个连接到下行端口1的不可拆卸器件和一个连接到下行端口2的 A 型(可拆卸器件)端口。 它 当前通过 SMBus 连接以配置集线器。 如何通过 SMBus 配置此集线器? 它可以从 Linux 中完成,也可以由引导加载程序完成吗? 除了硬件数据表之外,是否还有任何用于软件端编程的参考?
谢谢、
John
尊敬的 John:
如果集线器处于 SMBus 模式、则只能通过连接到集线器的 SMBus 主机(I2C 主机)对其进行编程。
如果集线器处于 I2C EEPROM 模式、则可以通过连接的 EEPROM 对其进行编程。
对于正常运行、无需对集线器进行编程、设置 SMBUSz = 1并且不连接 EEPROM。
请注意、集线器寄存器可在复位后配置、但集线器无法在正常运行期间重新配置。
此致、
JMMN
JMMN、您好!
感谢您的提示响应,我们的 SMBus 设置为 SMBUSz = 0, 因此它需要对 i2c 主机进行编程,以便我们如何实现这一点?
我能够通过 i2cdump 获取寄存器转储。 但不确定为了在下行端口上实现功能而需要接触的所有位。 假设驱动程序支持是通用的,我们如何对此 SMBus 进行编程?
连接 i2cdump 以供参考
root@imx8qmem:~# i2cdump -y 3 0x44
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 51 04 25 80 10 02 03 03 00 20 00 00 00 00 00 .Q?%????? 。 …
10:02 00 9c 5c 00 20 0c 22 af 17 A6 12 27 2D 03 00 ?.\。 ???????-?
20:09 04 18 00 06 06 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00。 ???????
30:34 00 35 00 30 00 38 00 30 00 30 00 38 00 31 00 4.5.0.8.0.0.0.8.1。
40:42 00 42 00 31 00 32 00 00 00 00 00 00 00 00 00 00 B.B.B.B.1.2…
50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00。 .
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0:1E 1e 1e 00 00 00 00 18 18 00 00 00 00 00 00 00 00?????。。 ?????
E0:04 04 04 00 00 00 00 00 00 77 77 00 00 00 00 00 00 00 00 00 00 00 00?????。 www.
F0:00 00 00 80 a0 00 01 00 00 00 00 00 00 00 00 ……………………………
尊敬的 John:
您将需要修改寄存器07h 以设置不可移动端口。 我还建议客户在寄存器0Ah 中设置 DSPORTEcrEn、以防止下游端口意外进入 USB 3.x 合规模式。 修改寄存器后、设置寄存器 F8h 中的 cfgActive 位将允许集线器连接到主机。
本文档虽然是为 TUSB804x 编写的、但说明了以下用途中使用了多少不同的寄存器/位:
https://www.ti.com/lit/ug/sllu311/sllu311.pdf
此致、
JMMN
JMMN、您好!
我们能够通过设置2个寄存器并清除 cfgActive 位来启用下行端口。
1. 7h 设置为0x01以描述器件配置寄存 器中的下行端口状态、说明端口1/2是否可拆卸。
2. Ah 设置为0x24以描述建议的3.X 合规性
3.通过写入0x01将 F8h 清零以启用端口连接到主机。
请按以下方式查找日志以进行确认
root@imx8qmem:~# i2cset -y 3 0x44 0x07 0x01
root@imx8qmem:~# i2cset -y 3 0x44 0xA 0x24
root@imx8qmmek:~# i2cset -y 3 0x44 0xf8 0x01
root@imx8qmmek:~#[139.157792] USB 1-1:使用 CDNS-USB3的新型高速 USB 器件编号2
[139.183536]集线器1-1:1.0:找到 USB 集线器
[139.187464]集线器1-1:1.0:检测到2个端口
[139.309862] USB 2-1:使用 CDNS-USB3的新型超高速第1代 USB 器件编号2
[139.335218]集线器2-1:1.0:找到 USB 集线器
[139.339097]集线器2-1:1.0:检测到2个端口
[139.765870] USB 2-1.2:使用 CDNS-USB3的新型超高速第1代 USB 器件编号3
[139.792092] USB-STORAGE 2-1.2:1.0:检测到 USB 大容量存储设备
[139.799153] SCSI host0:USB-storage 2-1.2:1.0
[140.822788] SCSI 0:0:0:0:直接访问 SanDisk Ultra 1.00 PQ:0 ANSI:6.
[140.831882] SD 0:0:0:0:[SDA] 120127488 512字节逻辑块:(61.5 GB/57.3GiB)
[140.840448] SD 0:0:0:0:0:[SDA]写保护关闭
[140.845664] SD 0:0:0:0:[SDA]写入高速缓存:禁用、读取高速缓存:启用、不支持 DPO 或 FUA
[140.891263] sda:sda1
[140.896460] SD 0:0:0:0:[SDA]连接的 SCSI 可拆卸磁盘
下一步是弄清如何在每个下电上电时执行此操作。 你有什么建议吗? 例如:执行这些操作的初始化脚本,或在内核中调用时配置集线器的 I2C-SMBus 主机驱动程序。