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.

[参考译文] AM3352:USB0和 USB1内核寄存器映射

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/781523/am3352-usb0-and-usb1-core-register-mapping

器件型号:AM3352

大家好、

您能否帮助我的客户提出以下寄存器映射请求?:

我们目前正在研究与 AM3352 Mentor USB OTG 控制器相关的问题(具体而言、我们正在研究如何在特定情况下切断控制器提供的电压)。
 
我们对 AM3352 TRM 中映射为 USB0内核和 USB1内核的寄存器感兴趣、这将大大有助于我们更好地了解内核模块如何控制 DRVVBUS 状态。 请举手。                                               

谢谢、

Antonio

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

    我们应该能够在下周初为您提供答案。
    感谢您的耐心!

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

    很抱歉耽误你的回答。 我不在办公室。

    USB 内核寄存器映射在公共 TRM 中不可用。 但是、如果您的客户使用 Linux、他们可以使用类似于以下的命令来切断 VBUS 电源。

    # echo 0 >/sys/kernel/debug/musb-hdrc.1/softconnect

    并使用以下命令打开 VBUS 电源。

    # echo 1 >/sys/kernel/debug/musb-hdrc.1/softconnect

    如果这不是您的客户想要了解的内容、请说明您确切想要了解的 DRVVBUS 状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    感谢您的回答。 请参阅下面的客户反馈。 您能评论吗?:

    感谢您的回复。 实际上、我遇到了几天前您建议的方法、并对其进行了修改、以创建一个用于控制 DRVVBUS 状态的 sysfs 条目:

    静态 size_t
    musb_vbusctl_store (struct device *dev、struct device_attribute *属性、
    const char * buf、size_t n)

    结构 MUSB * musb = dev_TO_musb (dev);
    无符号长整型标志;
    unsigned long on;
    U8 reg;

    如果(sscanf (buf、"%lu"、&on)< 1){
    DEV_ERR (DEV、"无效的 VBUS 状态\n");
    return -EINVAL;


    spin_lock_irqsave (&musb->lock、flags);

    如果(开){
    MUSB 启动(MUSB);
    MUSB -> context.devctl |= MUSB_DEVCTL_SESSION;
    reg = musb_readb (musb->mregs、MUSB_DEVCTL);
    reg |= MUSB_DEVCTL_SESSION;
    musb_writeb (musb->mregs、MUSB_DEVCTL、reg);

    否则{
    reg = musb_readb (musb->mregs、MUSB_DEVCTL);
    REG &=~MUSB_DEVCTL_SESSION;
    musb_writeb (musb->mregs、MUSB_DEVCTL、reg);
    MUSB 停止(MUSB);


    spin_unlock_irqrestore (&musb->lock、flags);

    返回 n;


    我直接从 drivers/usb/musb/msub_debugfs.c 中获取了代码、并对其进行了微调。 原始版本取决于状态(只有在 musb->xceiv->OTG->state =OTG_State_a_host 时才能关闭总线)、但出于安全原因、我决定取消此验证、因为无论状态如何、我们都需要关闭 USB 端口。 这种方法是否有任何缺点?

    我们想要了解 USB 内核寄存器的主要原因是避免对内核代码进行逆向工程、以便能够了解驱动程序的工作原理、以及在进行此类修改时注意到任何缺陷。 如果要访问 USB 内核文档、我们应该如何继续?

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

    您好、Antonio、

    客户根本不必更改内核驱动程序、可以使用内核 sysfs 来满足要求:

    -要关闭 USB1 DRVVBUS:
    # echo musb-hdrc.1 >/sys/bus/platform/drivers/musb-hdrc/unbind

    -要打开 USB1 DRVVBUS:
    # echo musb-hdrc.1 >/sys/bus/platform/drivers/musb-hdrc/bind

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

    请参阅下面的客户反馈。 有什么想法、为什么他们看到错误?:

    我尝试运行您发送的命令,结果如下:

    # echo musb-hdrc.1 >/sys/bus/platform/drivers/musb-hdrc/unbind
    sh:写入错误:无此类器件

    我们正在使用修改的内核4.9.51 LTSI 版本。 此版本中是否提供此行为?

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

    驱动程序绑定/取消绑定应适用于所有内核版本。

    请共享命令'ls /sys/bus/platform/drivers/musb-hdrc 的输出。

    请在电路板上运行以下脚本并共享其输出。

    e2e.ti.com/.../7446.chkusb_2D00_0.2.8.sh.txt