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.

[参考译文] TUSB8020B-Q1:通过 SMBus 对集线器进行编程

Guru**** 2538950 points
Other Parts Discussed in Thread: TUSB8020B-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1061519/tusb8020b-q1-programming-of-the-hub-via-smbus

器件型号:TUSB8020B-Q1

尊敬的 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 主机驱动程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    是的、看起来集线器正在正确枚举。  对于如何在每个下电上电周期加载寄存器、我没有任何建议、大多数用户用例使用板载 SMBus 主机或预编程 EEPROM。

    此致、

    JMMN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    JMMN、您好!

    迁移到 Linux。 集线器问题已解决。 非常感谢。