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.

[参考译文] AM5748:U 引导使用 USB 后 DWC3 Linux 内核初始化

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/995216/am5748-dwc3-linux-kernel-initialization-after-u-boot-usage-of-usb

器件型号:AM5748

您好!

在 U-boot 和 Linux 内核中为 AM5748器件使用 DWC3 USB 控制器后、我有几个问题。 遗憾的是、我没有概述 DWC3 IP 的文档、我认为只有在 NDA 下才能获得。 因此、我想告知、经过大量测试和调试后、我的结果是否正确。

其中一个主要问题是在 U-boot 中配置 DWC3会影响 Linux 环境中的使用。 当 USB 在 U-boot 中使用时、使用"USB start"会影响 Linux 中的配置和使用。 最终导致内核操作。

U-boot 相关问题:

在 U-boot 中、如果 utmi 模式是软件 (DWC3_OMAP_UTMI_MODE_SW)、则器件似乎始终配置为外设模式。 我们希望在 U-boot 中以 USB 主机模式使用该器件、是否有理由在驱动程序中默认为外设模式?
2、对于某些评估板、似乎编译了2个驱动程序、但最终只 使用 dwc3-generic.c 胶合驱动程序。 如 这里所示、电路板头文件中的定义是否为左侧定义?
在 Linux 内核驱动程序中 、USBOTGSS_UTMI_OTG_STATUS_POWERPRESENT 标志已被删除、如下所述 。 在 U-boot 中、该标志仍在此处处于活动状态。 这是否会影响器件的功能?
4.在启动 Linux 之前,似乎完全缺少清理功能。 似乎已经执行了 USB 配置,但在使用 bootm 启动 Linux 之前, USB_stop() 调用似乎没有进行适当的清理。 这是对 胶层使用 class_nop 类的副作用还是有意这样做?

Linux 内核相关问题:

1.在 Linux 驱动程序中,我注意到在注册 extcon 驱动程序期间,只 检查两种情况。 我在这里缺少的是两个 if 语句都无效的情况、在这种情况下、我猜 应该是 dwc3_OMAP-SET_mailbox (OMAP、OMAP-DWC3_VBUS_OFF);对于 VBUS 无效的特定情况、应该调用来初始化 DWC3。 在 VBUS 无效的情况下、它在 dwc3_OMAP-VBUS_NOVENER()函数中就像这样完成。 在我们的特定情况下、这种缺少初始化的情况似乎会导致问题、尤其是因为 DWC3已在 U-boot 中配置、并且无法在 Linux 内核中假定未触及任何寄存器。

如果我们在 U-boot 中不使用 USB 引导 Linux、我们不会看到任何问题。 只有在 U-boot 配置了 DWC3寄存 器、特别是 UTMI_OTG_STATUS 寄存器后、问题才会在初始化期间开始发生。  它看起来与初始化期间 Linux 内核驱动程序中缺失的 dwc3_OMAP-SET_mailbox (OMAP、OMAP-DWC3_VBUS_OFF)特别相关。 在驱动程序中添加该调用后、问题确实会消失。

在提出此类更改之前、我希望从 TI 获得反馈、因为如前所述、我没有足够的文档来判断上述任何内容是否完全正确。

提前感谢您。

此致、

Marcel

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

    您好  Marcel。

    您能否确认用于上述分析的 Processor SDK Linux 版本? 它是06_03_00_xx 吗? 还有 什么 AM57xx 评估板是为其构建的?

    关于这些问题、 我们将检查这些问题。  将作出响应。

    谢谢。

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

    您好!

    感谢您的回答。 目前、我仅在基于 AM5748的定制硬件上测试过此测试、但我尚未在任何评估板上进行测试。

    因此、我们基于 TI SDK 版本运行软件、但并非完全基于评估板上的 TI SDK 版本。

    我认为我在最初的帖子中提到的驱动程序部分没有改变、并且是相同的。

    此致、


    Marcel

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

    如需相关信息、我建议的补丁将是以下补丁、以便在初始化期间正确初始化寄存器。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ---
    drivers/usb/dwc3/dwc3-omap.c | 5 +++++
    1 file changed, 5 insertions(+)
    diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
    index 8c3de2d258bf..e8acad49a53a 100644
    --- a/drivers/usb/dwc3/dwc3-omap.c
    +++ b/drivers/usb/dwc3/dwc3-omap.c
    @@ -437,8 +437,13 @@ static int dwc3_omap_extcon_register(struct dwc3_omap *omap)
    if (extcon_get_state(edev, EXTCON_USB) == true)
    dwc3_omap_set_mailbox(omap, OMAP_DWC3_VBUS_VALID);
    + else
    + dwc3_omap_set_mailbox(omap, OMAP_DWC3_VBUS_OFF);
    +
    if (extcon_get_state(edev, EXTCON_USB_HOST) == true)
    dwc3_omap_set_mailbox(omap, OMAP_DWC3_ID_GROUND);
    + else
    + dwc3_omap_set_mailbox(omap, OMAP_DWC3_ID_FLOAT);
    omap->edev = edev;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    尊敬的 Marcel:

    [引用 userid="478628" URL"~/support/processors/f/processors-forum/995216/am5748-dwc3-linux-kernel-initialization-after-u-boot-usage-of-usb "]

    U-boot 相关问题:

    [/报价]

    这 是一个错误、检查应该是  utmi_mode!= DWC3_OMA_UTMI_MODE_SW。 IE 在指定硬件 OTG 或未知模式时默认为外设模式。  

    2.是的、当我们迁移 USB 驱动程序以在 U-Boot 中使用器件型号和 DT 时、这会被保留。

    3.是的,这是一个错误,应该在 U-Boot 中修复。  

    不,不是有意的。 缺少在 dr_mode 选择过程中完成的清除设置的代码。 这是间隙

    [引用 userid="478628" URL"~/support/processors/f/processors-forum/995216/am5748-dwc3-linux-kernel-initialization-after-u-boot-usage-of-usb "]

    Linux 内核相关问题:

    [/报价]

    1.是的、我同意您的上述更改。 您是否愿意向主线内核提交补丁?  

    谢谢
    Vignesh

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

    您好 Vignesh、

    感谢您的说明。

    是的、我可以建议主线 Linux 内核的补丁。 我会尽快这样做。

    关于 U-boot 更改、 是否会有 TI 针对 U-boot 发布的补丁?

    此致、

    Marcel

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

    您好!

    感谢您进行内核侧修复。  

    我们将努力解决 U-Boot 问题、但  没有针对 SDK 的时间表。
    如果您想在上游 U-Boot 中修复这些问题、请随时将补丁发布到 U-Boot 邮件列表、我可以帮助您查看并获取 USB 维护人员接受的修复。

    谢谢
    Vignesh

x 出现错误。请重试或与管理员联系。