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.

[参考译文] Linux/AM5718:USB1和 PCIe 配置

Guru**** 2933120 points

Other Parts Discussed in Thread: AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658993/linux-am5718-usb1-and-pcie-configuration

器件型号:AM5718

工具/软件:Linux

您好!

可以使用 USB2PHY1使用 USB1控制器,同时使用来自 USB1子系统的 USB3_PHY 使用 PCIe?

如何修改设备树中的 OCP2SCP3和 OCP2SCP1设置?

i.E:是否删除 USB3_phy1并启用 PCIe2_phy?

此致、

Romain

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

    是的、这是可能的。 请参阅器件 TRM 的第24.2章 PCIe 控制器。 由于 PCIe 端口1在 PCIe_SS1、PCIe_SS2和 USB3.0之间共享、因此当启用 PCIe_SS2时、每个 PCIe SS 应仅配置1个通道。 指南是 PCIe2_phy 需要在当前器件树中从 PCIe_SS1下移至 PCIe_SS2下。 也不应在器件树中定义 usb3.0节点。 可能还需要其他更改、您可能需要对这些更改进行调整和测试。

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

    尊敬的 Rex:

    好的、这很有可能。

    如果 USB1在 devicetree 中保持禁用状态、我们能够使用两个 PCIe 接口。

    但是一旦启用了 USB1、我们就会从 xhci_hub_status_data ()中得到一个中止[1]。

    我们从 OCP2SCP1中删除了 USB3_phy1并添加了 PCIe2_phy。

    对于 USB1、我们删除了 USB3_phy1并将 USB 速度更改为高速。

    /* OCP2SCP3 */
    ocp2scp@
    
    
    
    
    
    
    @4a090000{兼容="ti、OMAP-ocp2scp";#address-cells =<1>;#size-cells =<1>;范围;reg =<0x4a090000 0x20>;ti、hwmonds ="ocp2scp3";SATA_phy = 0x96000
    ;*= 0x4pphy = 0x4a09900/
    pphy = 0x4pPhy;* pPhy = 0x4pPhy = 0x4a096000 *
    0x4A096400 0x64>、/* phy_TX *
    <0x4A096800 0x40>;// pll_ctrl */
    reg-names ="phy_Rx"、"phy_TX"、"PLL_ctrl";
    SYSCON-phy-power =<&SCM_conf 0x374>;
    Clocks =<&sys_clkin1>、<&SATA_ref_clk>;
    clock-names ="SYSCLCK"、"SYSCLK"
    SYSCON-PLLRESET =<&SCM_conf 0x3fc>;
    #phy-cells =<0>;
    };
    
    pcie1_phy:pciephy@4a094000{
    compatible ="ti、phy-pipe3-pce";
    reg =<0x4a094000 0x80>、// phy_rx *
    <0x4a094400 0x64>;/* phy_TX */
    reg-names ="phy_Rx"、"phy_TX";
    SYSCON-phy-power =<&SCM_conf_PCIe 0xpcs>;
    SYSCON-ref =<&SCM_conf_pcie 0x10>;
    Clocks =<&DPLL_PCIe_ref_1cyclk>
    
    、<&clpclk_clk_clk_clk_clk>、<&clk_clk_clk_clk_clip_clk>
    
    optfclk_pciephy1_div_clk>、
    <&optfclk_pciefy_div>、
    <&sys_clkin1>;
    时钟名称="DPLL_ref"、"DPLL_ref_m2"、
    "wkupclk"、"REFCLK"、
    "div-clk"、"phy-div"、"SYSCLK";
    #phy-cells =<0>;
    };
    
    }; 

    /* OCP2SCP1 */
    ocp2scp@
    
    
    
    
    
    
    
    @4a080000{compatible ="ti、OMAP-ocp2scp";#address-cells =<1>;#size-cells =<1>;ranges;reg =<0x4a080000 0x20>;ti、hwmds ="ocp2scp1";#refusb2 =
    
    0x4002 vyclkb2 =
    "us_clb1
    ;"us_clus_clock1;"us_clkb2 = 0x400";"us_clus_clkb2 = 0x4kb1、"rk&cyb2 = 0x400";"u_clb1、"u_clb2 ="u_clk";"u_clb2 clk";"u_clb2 = 0x400";"u_clk&cyclk"
    
    
    
    #phy-cells =<0>;
    };
    
    USB2_phy2:PHY@4a085000{
    compatible ="ti、dra7x-USB2-phy2"、
    "TI、OMAP-USB2";
    reg =<0x4a085000 0x400>;
    status ="禁用";
    SYSCON-phy-power =<&SCM_conf 0xe74>;
    时钟=<&USB_phy2_always_on_clk32k>、
    <&USB_OTG_SS2_refclkm>;
    Clock-names ="wkup"、"clk"
    
    #phy-cells =<0>;
    };
    
    /* USB3_phy1被 PCIe2_phy 移除并替换*
    
    PCIe2_phy:pciephy@4a084400{
    compatible ="ti、phy-pipe3-pce";
    reg =<0x4a0844000x80>、/* py_rx *
    <0x4a084800 0x64>;/* phy_TX */
    reg-names ="phy_Rx"、"phy_TX";
    SYSCON-phy-power =<&SCM_CONG_PCIe 0x20>;
    SYSCON-CONF =<&SCM_PCS_PCIe 0x10>;
    Clocks =<&DPLL_PCIe_ref_<&clk_clpclk>、
    <&clpclpclk_clk_clk_clpclk_clk>
    
    、<&clpclpclk_clk_clk_clk_clk_clk_clk_clk_clk_clk_clk_clip_clk>
    optfclk_pciephy2_div_clk>、
    <&optfclk_pciefy_div>、
    <&sys_clkin1>;
    时钟名称="DPLL_ref"、"DPLL_ref_m2"、
    "wkupclk"、"REFCLK"、
    "div-clk"、"phy-div"、"SYSCLK";
    #phy-cells =<0>;
    };
    };
    
    omap_dwc3_1:omap_dwc3_1@48880000{
    兼容="ti、dwc3";
    ti、hwmds ="USB_OTG_SS1";
    reg =<0x48880000 0x10000>;
    中断= ;
    #address-cells =<1>;
    #size-cells =<1>;
    utmi-mode =<2>;
    范围;
    USB1:USB@48890000{
    status ="disabled";
    compatible ="SNPs、dwc3";
    reg =<0x48890000 0x17000>;
    interrupts = 、
    、
    ;
    中断名称="外设"、
    "主机"、
    "OTG";
    PHY =<&USB2_phy1>; /* USB3_phy1已删除*/
    phy-names ="USB2-phy";/* USB3-phy 已删除*/
    TX-Fifo-resize;
    最大速度="高速";/*超速更改为高速*/
    dr_mode ="OTG";
    SNP、ds_u2_suspuhy_quiry_dik;/*}*_diich_suspick
    
    ; 
    AXI@1{
    兼容="简单总线";
    #SIZE 位元=<1>;
    #ADDREST-Cells =<1>;
    范围=<0x51800000 0x51800000 0x3000
    0x00x30000000 0x10000000>;
    状态="确定";
    PCIe2_RC:PCIe@51800000{
    兼容="ti、dra7-pce";
    reg =<0x51800000 0x2000>、<0x51802000 0x14c>、<0x1000 0x2000>;
    reg 名称="RC_dbics"、"ti_conf"、 "CONFIG";
    中断=<0 355 0x4>、<0 356 0x4>;
    #address-cells =<3>;
    #size-cells =<2>;
    device_type ="PCI";
    范围=<0x81000000 0 0 0x03000 0 0x00010000
    0x82000000 0 0x30013000 0x13000 0 0x0xffffff000>;
    #interrupt-cells =<1>;
    num-lanes =<1>;
    Linux、PCI-domain =<1>;
    ti、hwmods ="PCIe2";
    phys =<&PCIe2_phy>;
    phy-names ="PCIe-phy0";
    interrupt-map-mask =<0 0 0 0 0
    1 &PCIe2_INTC 1>、
    <0 0 0 2 &PCIe2_INTC 2>、
    <0 0 0 0 0 3 &PCIe2_INTC 3>、
    <0
    
    2 0_INTC 4
    
    ;中断控制器状态= 0
    #interrupt-cells =<1>;
    };
    };
    }; 

    最后、当我们在 custom_board.dts 中以主机模式启用 USB1时、我们有中止[1]:

    /* triger:未处理的故障:0x00000000处的异步外部中止(0x1211)*/
    &USB1{
    status ="确定";
    dr_mode ="主机";
    }; 

    您是否看到任何配置问题?

    此致、

    Romain

    [1]未处理的故障:异步外部中止(0x1211)在0x00000000

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

    您好!

    下面是有关 USB 器件的 dmesg:

    [3.175660] EHCI_hcd:USB 2.0 '增强型'主机控制器(EHCI)驱动程序
    [3.182219] EHCI-PCI:EHCI PCI 平台驱动程序
    [3.186731] EHCI-OMAP:OMAP-EHCI 主机控制器驱动程序
    [3.200132] ohci_hcd:USB 1.1 'Open'主机控制器(OHCI)驱动程序[3.186731] EHCI-OMAP:OHCI
    主机控制器[3.205662ci-PCI] OHCI 平台驱动
    xhci-hcd.0.auto:程序[3.11x56] OHCI 驱动程序[3.200132] xHCI 主机控制
    器[3.216678] xhci-hcd xhci-hcd.0.auto:注册的新 USB 总线、分配的总线编号1
    [3.224780] xhci-hcd xhci-hcd.0.auto: pHCC params 0x0220f04c HCI 版本0x100 quirks 0x00210810
    [3.233543] xhci-hcd xhci-hcd.0.auto: IRQ 420、io mem 0x48890000
    [3.23393b1ub、usb 设备供应商=
    USB d160002b1b1b1、usb 设备= USB 供应商: 新 USB 设备字符串:mfr=3、Product=2、SerialNumber=1
    [3.253778] USB USB1:产品:xHCI 主机控制
    器[3.258672] USB USB1:制造商:Linux 4.4.5.57-ga5602579fd xhci-hcd
    [3.265144] USB USB1:SerialNumber:xhci-hcd.0.auto
    [3.270423]
    USB HUB 1.0-1:x2913-1:hcd 1:hc1:hcd 1:x29130-hcd 1:hc1:hc1:xc1:hcd 1:x29130-hcd 1:xc1:xc1:xc1
    xhci-hcd.0.auto: xHCI 主机控制器
    [3.297035] xhci-hcd xhci-hcd.0.auto:已注册新的 USB 总线、分配的总线编号2
    [3.313620] USB USB2:找到新的 USB 设备、idVendor=1d6b、idProduct=0003
    [3.320436] USB USB2:新的 USB 设备字符串:MFR=3、Product=2、SerialNumber=1
    [3.32798] USB 主机控制器
    :USB USB2:USB 设备制造商[3.327USB2:USB2:USB 设备:USB 设备制造商:USB 设备:USB 设备型号:USB Linux 4.4.5.57-ga5602579fd xhci-hcd
    [3.339062] USB USB2:序列号:xhci-hcd.0.auto
    [3.344313]集线器2-0:1.0:找到 USB 集线器
    [3.352476]集线器2-0:1.0:检测到1个端口
    [3.365498] usbcore:注册的新接口驱动程序 USB-storage
    [3.414923---------<-- [在此处剪切]-----
    [3.414939]警告:CPU:0 PID:10位于./drivers/bus/omap_l3_noc.c:147 L3_INTERRUPT_Handler+0x25c/0x368 ()
    [3.415461]-[结束跟踪38b515f79fd44176 ]-[3.450846]
    未处理故障:异步外部中止(0x1211)位于0x00000000
    

    为什么启用 USB2? 在器件树中明确禁用它。

    此致、

    Romain  

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

    只是想让您知道、我有一位 USB 专家在研究这个问题、他发表他的发现可能需要一段时间。

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

    Romain、

    当未加载 USB 超高速 phy 驱动程序时、会发生"外部中止"、USB 驱动程序中的某个位置似乎尝试访问 phy 模块、但不计时。 我已向开发团队报告了此问题。 当我得到响应时、我将在这里进行更新。

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

    你那有新消息吗?

    我可以看到、dwc3 Linux 驱动程序确实无条件地使用 phy2和 phy3。
    我不相信没有 phy USB3就可以使用 USB1控制器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    下面是 AM5718使用的 DWC3硬件版本控制器:0x5533202A
    我注意到它受硬件错误(限制)的影响、因为端口禁用命令不起作用。
    这到底意味着什么? 在哪里可以找到有关所有"查询"和可选属性的良好文档?

    DWC3_GHWPARAMS3包含值0x1042008C、这意味着 DWC3控制器支持 SuperSpeed。
    如何避免 xHCI 层看到 USB3端口?

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

    Romain、

    我们的开发团队进行了初步调查、发现需要更多的努力来了解问题以找到解决方案、因此现在问题报告已积压、希望问题将在下一个 Processor SDK 版本中得到解决。

    我认为配置 USB1不使用 USB3_PHY 是可能的。 在 AM571x 上、IDK EVM USB1仅为高速。 USB3_PHY 不用于 USB1。 那么、这是一个工作示例。

    AM572x IDK EVM 将 USB1配置为超高速、USB1使用 USB3_PHY。 如果修改 DTS 以从 USB1删除 USB3_PHY、则会发生您报告的问题。 这是一个故障示例。

    AM571x IDK 和 AM572x IDK 都使用相同的 USB 驱动器、我可以看到的唯一区别是 AM571x IDK 不会产生 USB1超高速信号线。 我认为我们需要了解这种硬件设计是必需的、还是仅进行软件更改就足够了。

    要回答您的上述问题、DWC3驱动程序确实具有 phy2和 phy3节点、但它们可以采用虚拟 phy 实例、因此 dts 中可能没有物理 phy3。

    我认为该问题与您提到的建议 i896无关、更不用说它的软件解决方法已在 Processor SDK 4.0内核中实现。

    我已经使用内核社区邮件列表进行了检查、在 xHCI 层中禁用 USB3端口会破坏规范、这不是推荐的路径。

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

    感谢您的回复。

    当您说"AM571x IDK 不会引出 USB1超高速信号线"时,您意味着出现该错误的原因就在于 USB_RXN0、USB_RXP0和 USB_TXN0、USB_TXP0线连接到了什么?
    您是否认为可以添加一些 DWC3特性?

    如果 SDK 中包含此问题的任何补丁、请通知我。

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

    Romain、

    [引用 USER="Romain Naour"]当您说"AM571x IDK 不会引出 USB1超高速信号线"时,您意味着出现错误的原因是线 USB_RXN0、USB_RXP0和 USB_TXN0、USB_TXP0连接到了什么?[/QUESP]

    不、我不确定问题是否与这些信号有关。 这只是我看到的硬件差异。

    [引用 user="Romain Naour"]您是否认为可以添加一些 DWC3特性?
    [/报价]

    在我们知道根本原因之前,我不知道我们会有什么奇怪。

    Romain Naour 说:
    如果 SDK 中包含此问题的任何修补程序,您能否通知我。

    我一定会的。

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

    我们发现了另一个与 DWC3 USB 端口相关的问题。

    由于目前我们无法使用 USB1、因此我们切换到了 USB2端口。
    我们已成功启用它、但端口使用我们的 USB 闪存盘之一崩溃。

    我们能够在我们的定制板上以及在 AM5718 IDK 板上重现此问题。

    涉及的 USB 密钥是一个被分区为 ext4文件系统的 EMTEC 64Go USB3.0 [1]。 (MSDOS 作为分区表)。

    #安装/dev/sda1 /mnt/
    ext4-fs (sda1):已装入的文件系统、具有有序数据模式。 OPTS:(空)
    # cd /mnt/
    # ls
    [~ 5-10秒内无内容]
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB 1-1:USB 断开连接、器件编号2
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4258048
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区76040
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区25430016
    DEV SDA1、逻辑块3178496上的缓冲器 I/O 错误、丢失同步页写入
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4258288
    ext4-fs 警告(器件 sda1):htree_dirblock 至树:958:inode #2:lblock 0:Comm ls:error -5 reading directory block
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4258528
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4258768
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4259008
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4259248
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4259488
    BLK_UPDATE_REQUEST:I/O 错误、dev sda、扇区4259728
    JBD2:更新 sda1-8的日志超级块时检测到错误-5。
    正在中止设备 sda1-8上的日志。
    DEV SDA1、逻辑块3178496上的缓冲器 I/O 错误、丢失同步页写入
    JBD2:更新 sda1-8的日志超级块时检测到错误-5。
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法枚举 USB 设备

    在最后一条消息之后、系统不再检测到 USB 闪存盘。

    这是奇怪的、因为日志"无法启用。 可能是 USB 电缆损坏了?" 来自 HUD_PORT_RESET()函数的命令(drivers/USB/core/hub.c)。
    如上面对函数 sais 的注释所示:此函数"处理端口复位和端口热(BH)复位(用于 USB3协议端口)"。

    我们可以在 dmesg 日志中看到两个 USB 集线器。 第一个是 USB2.0集线器、第二个是 USB3.0集线器。

    xhci-hcd xhci-hcd.0.auto: xHCI 主机控制器
    XHCI-hcd xhci-hcd.0.auto:已注册新 USB 总线、分配总线编号1
    xHCI-hcd xhci-hcd.0.auto: HCC 参数0x0220f04c HCI 版本0x100奇数0x00210010
    XHCI-hcd xhci-hcd.0.auto: IRQ 486、IO 内存0x488d0000
    USB USB1:找到新的 USB 器件、idVendor=1d6b、idProduct=0002
    USB USB1:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
    USB USB1:产品:XHCI 主机控制器
    USB USB1:制造商:Linux 4.4.57 + xhci-hcd
    USB USB1:序列号:xhci-hcd.0.auto
    集线器1-0:1.0:找到 USB 集线器
    集线器1-0:1.0:检测到1个端口

    xhci-hcd xhci-hcd.0.auto: xHCI 主机控制器
    XHCI-hcd xhci-hcd.0.auto:已注册新 USB 总线、分配总线编号2
    USB USB2:我们不知道该主机的 LPM 算法、因此禁用了 LPM。
    USB USB2:找到新的 USB 设备、idVendor=1d6b、idProduct=0003
    USB USB2:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
    USB USB2:产品:XHCI 主机控制器
    USB USB2:制造商:Linux 4.4.57+ xhci-hcd
    USB USB2:Serial Number:xhci-hcd.0.auto
    集线器2-0:1.0:找到 USB 集线器
    集线器2-0:1.0:检测到1个端口

    因此、即使 USB2没有 USB3.0物理层、系统中仍然存在 USB3.0集线器。

    你有什么想法吗?
    的确、您可以争辩说我们的 USB 密钥已损坏、但内核 USB/DWC3堆栈应正确处理此错误。

    [1] www.emtec-international.com/.../c410-color-mix

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

    Romain、

    [引用 USER="Romain Naour"]涉及的 USB 密钥是 EMTEC 64Go USB3.0 [1]

    似乎该器件在美国市场上不可用、我只能在此处找到 USB2.0 C410拇指驱动器。

    Romain Naour 说:
    USB USB1-port1:无法枚举 USB 设备

    在出现最后一条消息后、系统不再检测到 USB 闪存盘。

    您是否意味着如果您拔下 USB 闪存盘并重新插回它、则不再检测到 USB 闪存盘? USB 端口此时是否可以枚举任何其他 USB 设备? 如果没有、则存在问题。 但是、如果 USB 端口仍然可以检测到新的连接、这不是问题。

    Romain Naour 说:
    这很奇怪、因为日志"无法启用。 可能是 USB 电缆损坏了?" 来自 HUD_PORT_RESET()函数的命令(drivers/USB/core/hub.c)。
    如函数 sais 上面的注释所示:此函数"处理端口复位和端口热(BH)复位(用于 USB3协议端口)"。

    此注释是混淆的、实际上意味着"处理端口复位(对于所有 USB 协议-包括 USB2.0和 USB3.0)和端口热复位(对于 USB3.0)"。

    [引用 USER="Romain Naour"]因此即使 USB2没有 USB3.0 phy、系统中仍然存在 USB3.0集线器。

    正确、在 Linux 驱动程序架构中、PHY 独立于控制器。 XHCI 将每个控制器定义为具有一个 USB2.0逻辑端口和一个 USB3.x 逻辑端口、因此两个 USB 总线(或虚拟集线器)都将存在。

    [引用 user="Romain Naour"]确实可以说我们的 USB 密钥已损坏,但内核 USB/DWC3堆栈应正确处理此错误。

    如果 USB 端口仍然可以检测到任何新设备连接、则此处没有问题。 否则、如果 USB 端口不再检测到任何新的连接、则端口锁定、这是一个问题。

    如果您正在寻找针对 EMTEC USB 闪存盘故障的软件解决方法、请尝试添加"U-Boot bootargs 参数中的 usbcore.autosuspend=-1"、但不能保证这将解决问题。

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

    即使拔下并重新插上 USB 闪存盘、也无法再检测到 USB 闪存盘。 USB 端口不再检测任何新连接。
    在 bootargs 中添加"usbcore.autosuspend=-1"不会修复/解决该问题。

    对于我们来说、这不是一个阻塞器问题、我们可以将 USB 端口与其他 USB 设备一起使用。 但我想让您了解这个问题。

    我们的主要问题仍然是能否使用 USB1 (USB2_PH1)。

    感谢您的快速反馈。

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

    对于这个 USB2端口问题、您可以尝试使用"usbcore.old_scheme_first=1"参数吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    运气差、USB 端口仍然卡滞。
    此参数出现在内核命令行中(使用 cat /proc/cmdline 进行了验证)

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

    感谢您的测试。

    一旦我有了针对 USB3 phy 问题的内核补丁、我就会通知您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Romain、

    对于带 EMTEC USB 闪存盘的 USB2.0问题、我想知道它是否只是 USB 端口被禁用或锁定。

    出现问题后、您能否运行以下命令以取消绑定并重新绑定 xhci 驱动程序、以查看 USB 端口是否恢复正常工作?

    root@am57xx-EVM:~# cd /sys/bus/platform/drivers/xhci-hcd

    root@am57xx-evm:xhci-hcd# echo xhci-hcd.1.auto > unbind

    root@am57xx-evm:xhci-hcd# echo xhci-hcd.1.auto > bind

    如果 USB 端口未恢复、使用"reboot"命令重新启动 Linux 是否会进行热复位、从而使 USB 端口正常工作、或者您必须重新启动电路板?

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

    以下是取消绑定和重新绑定 xhci 驱动程序的结果。

    /sys/bus/platform/drivers/xhci-hcd echo "xhci-hcd.0.auto"> unbind
    XHCI-hcd xhci-hcd.0.auto:删除、状态4
    USB USB2:USB 断开、器件编号1
    已注销 XHCI-hcd xhci-hcd.0.auto: USB 总线2
    XHCI-hcd xhci-hcd.0.auto:删除、状态4
    USB USB1:USB 断开、器件编号1
    已注销 XHCI-hcd xhci-hcd.0.auto: USB 总线1

    /sys/bus/platform/drivers/xhci-hcd echo xhci-hcd.0.auto bind
    xhci-hcd xhci-hcd.0.auto: xHCI 主机控制器
    XHCI-hcd xhci-hcd.0.auto:已注册新 USB 总线、分配总线编号1
    xHCI-hcd xhci-hcd.0.auto: HCC 参数0x0220f04c HCI 版本0x100奇数0x00210010
    xhci-hcd xhci-hcd.0.auto: IRQ 484、io mem 0x488d0000
    USB USB1:找到新的 USB 器件、idVendor=1d6b、idProduct=0002
    USB USB1:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
    USB USB1:产品:XHCI 主机控制器
    USB USB1:制造商:Linux 4.4.57 + xhci-hcd
    USB USB1:序列号:xhci-hcd.0.auto
    集线器1-0:1.0:找到 USB 集线器
    集线器1-0:1.0:检测到1个端口
    xhci-hcd xhci-hcd.0.auto: xHCI 主机控制器
    XHCI-hcd xhci-hcd.0.auto:已注册新 USB 总线、分配总线编号2
    USB USB2:我们不知道该主机的 LPM 算法、因此禁用了 LPM。
    USB USB2:找到新的 USB 设备、idVendor=1d6b、idProduct=0003
    USB USB2:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
    USB USB2:产品:XHCI 主机控制器
    USB USB2:制造商:Linux 4.4.57+ xhci-hcd
    USB USB2:Serial Number:xhci-hcd.0.auto
    集线器2-0:1.0:找到 USB 集线器
    集线器2-0:1.0:检测到1个端口

    因此、端口似乎恢复正常。
    很明显、如果我们尝试安装并列出文件系统内容、也会出现同样的问题。

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

    日志显示 xHCI 已再次加载、您是否尝试连接拇指驱动器以查看它已枚举? 我想查看端口在重新加载 xHCI 驱动程序后是否已解锁。

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

    大家好、Bin、Romain 在另一个项目中被调用、所以我将负责他在 USB 上的工作。

    我在重新加载驱动程序后尝试连接拇指驱动器,以下是日志:


    ===插头 USB:
    
    USB 1-1:新型高速 USB 设备 nud
    USB 1-1:找到新的 USB 设备,idVendor=13fe,idProduct=5500
    USB 1-1:新的 USB 设备字符串:MFR=1,Product=2,SerialNumber=3
    USB 1-1:产品:USB Disk 3.0
    USB 1-1:制造商:
    USB 9250-1
    :USB1000:USB1000:USB1000 检测到 USB 大容量存储设备
    SCSI host3:USB-storage 1-1:1.0
    SCSI 3:0:0:0:0:直接访问 USB 盘3.0 PMAP PQ:0 ANSI:6
    SD 3:0:0:0:[SDA] 121012224 512字节逻辑块:(62.0 GB/57.7 GiB)
    SD 3:0:0:0:[SDA]写保护关闭
    SD 3:0:0:[SDA]找不到缓存模式页
    SD 3:0:0:[SDA]通过 SDA 驱动器写入 SDA
    
    3:0:0:0:SDA [SDA]连接的 SCSI 可移动磁盘
    
    #===安装 USB
    
     /sys/bus/platform/drivers/xhci-hcd 安装/dev/sda1 /T4
    EXT4-FS (sda1):恢复完整
    的 EXMT-FS (sda1):已安装的文件系统,具有已订购的数据模式。 opts:(null)
    
    /sys/bus/platform/drivers/xhci-hcd # ls /mnt/
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB 1-1:USB 断开连接、器件编号4
    blk_update_request:11 callback suppressed
    blk_update_request:I/O error、dev sda、sector 10512
    blk_update_request:I/O error、dev sda、sector 75912
    blk_update_request:I/O error、sda、sector 25430016
    Buffer I blk_update_request:I/O error、sesdle/logical supdate、s1 on page 1796 blk_request、sync_request:I/O error、es1、sblk_request、sblk_
    I/O 错误、dev sda、扇区10752
    EXT4-FS 警告(器件 sda1):htree_dirblock_TO_tree:958:inode #2:lblock 0:Comm ls:EK
    blk_update_request:I/O 错误、dev sda、扇区10992
    blk_update_request:I/O 错误、sector blk_update、sector blk_request
    、dev_blk_sector、sector blk_update、sector、sector blk_request
    
    :tide_blk_ese_sector、sector、tida/blda/blda/blda/blda/blda/blda/blda/blda/blda/bl I/O 错误、dev sda、扇区11952
    blk_update_request:I/O 错误、dev sda、扇区12192
    JBD2:在更新 sda1-8的日志超级块时检测到错误-5。
    正在中止设备 sda1-8上的日志。
    dev sda1上的缓冲区 I/O 错误、对数倍频
    JBD2:更新 sda1-8的日志超级块时检测到错误-5。
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法启用。 可能是 USB 电缆损坏了?
    USB USB1-port1:无法枚举 USB 设备
    
    /sys/bus/platform/drivers/xhci-hcd ls /dev/sd
    ls * ls:/dev/sd:没有此类文件或目录
    
    #==重新加载 xHCI 驱动程序
    
    /sys/bus/platform/drivers/xhci-hcd echo "xhci-hcd.0.auto"> unbind
    xhci-hcd xhci-hcd.0.auto: remove、state 4
    USB USB2:USB disconnect、device number 1
    xhci-hcd xhci-hcd.0.auto: USB bus 2 unistryed
    xhci-hcd xhci-hcd.0.auto: 删除、状态4
    USB USB1:USB 断开、器件编号1
    xhci-hcd xhci-hcd.0.auto: USB 总线1注销
    
    /sys/bus/platform/drivers/xhci-hcd echo "xhci-hcd.0.auto"> BIND
    xhci-hcd xhci-hcd.0.auto: xHCI 主机控制器
    xhci-hcd xhci-hcd.0.auto:新注册的 USB 总线、分配的总线编号1
    xhci-hcd xhci-hcd.0.auto: HCC params 0x0220f04c HCI 版本0x100 0x100xhci-hcd 10
    xhci-hcd.0.auto: IRQ 486、io mem 0x488d0000
    USB USB1:找到新的 USB 设备、idVendor=1d6b、idProduct=0002
    USB USB1:新的 USB 设备字符串:mfr=3、Product=2、SerialNumber=1
    USB USB1:xHCI 主机控制
    器 USB USB1:制造商:Linux 4.4.4.57+ xhci-hcd-hb1
    
    
    :xhci-hcd.0.auto:fb:xhb1:fb:xhcd-h1:fb 1.
    xhci-hcd.0.auto: xHCI 主机控制
    器 xhci-hcd xhci-hcd.0.auto:注册的新 USB 总线、分配的总线编号2
    USB USB2:我们不知道该主机的 LPM 算法、禁用 LPM。
    USB USB2:找到新 USB 设备、idVendor=1d6b、idProduct=0003
    USB USB2:新 USB 设备字符串:MFR=3、Product=2、SerialNumber=1
    USB USB2:产品:xHCI 主机控制
    器 USB USB2:制造商:Linux 4.4.4.5.57+ xhci-hcd
    USB USB2:
    
    检测到的 USB 集线器编号:xhci-hcd.0.auto hub 2-0:
    1:USB 集线器1:1:USB 集线器1.0:1:USB 集线器1 新的高速 USB 设备 nud
    USB 1-1:找到新的 USB 设备、idVendor=13fe、idProduct=5500
    USB 1-1:新的 USB 设备字符串:MFR=1、Product=2、SerialNumber=3
    USB 1-1:产品:USB disk 3.0
    USB 1-1:制造商:
    USB 1-1:SerialNumber:070A6925USB 1:USB
    Mass
    
    Storage 1:USB1:USB1000:USB1000:USB1000:USB1000:USB MUSC1USB1:USB 1:USB 检测到存储设备1:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000:USB1000 USB 盘3.0 PMAP PQ:0 ANSI:6
    SD 4:0:0:0:[SDB] 121012224 512字节逻辑块:(62.0 GB/57.7 GiB)
    SD 4:0:0:0:[SDB]写保护关闭
    SD 4:0:0:0:[SDB]找不到 SDB 模式页面
    SD 4:0:0:[SDB]写缓存驱动器:
    0:0:0:SDB]
    [SDB]连接的 SCSI 可移动磁盘
    
    /sys/bus/platform/drivers/xhci-hcd # ls /dev/sd
    /dev/sdb /dev/sdb1
    
     ##=拔下 USB
    
    USB 1-1:USB 断开连接、设备编号3
    
     ##=插入另一个 USB
    
    1-1:使用 xhci-hcd
    USB 的新高速 USB 设备编号7:找到新 USB 设备、idVendor=abcd、idProduct=1234
    USB 1-1:新 USB 设备字符串: MFR=1、Product=2、SerialNumber=3
    USB 1-1:产品:UDisk
    USB 1-1:制造商:USB 1-1:
    Serial Number:ÐЉ
    USB-storage 1-1:1.0:USB Mass Storage Device Detected
    SCSI host9:USB-storage 1-1:1.0
    SCSI 9:0:0:Direct-Access 通用 UDisk 5.00 PQ:0 ANSI:2
    SD 9:0:0:0:[SDB] 3934208 512字节逻辑块:(2.01 GB/1.88 GiB)
    SD 9:0:0:0:[SDB]写保护关闭
    SD 9:0:0:[SDB]找不到缓存模式页面
    dbSD 9:0:0:[SDB]写缓存:
    
    s9:0:sSDB:0:0: [SDB]连接的 SCSI 可移动磁盘
    
    /sys/bus/platform/drivers/xhci-hcd # mount /dev/sdb1 /mnt/
    EXT4-FS (sdb1):已安装的文件系统、具有有序数据模式。 opts:(null)
    
    /sys/bus/platform/drivers/xhci-hcd # ls /mnt/
    dummyfile
    


    因此、实际上、USB 闪存盘在绑定到驱动程序后立即被识别。 然后我尝试了另一个带有 ext4文件系统的 USB 记忆棒、安装/读取/写入成功。

    当然、通过尝试装回 EMTEC USB 闪存盘、问题仍然存在。

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

    感谢您的测试。 重新绑定 xhci 驱动程序后、USB 端口似乎已恢复。 我将尝试找到 RMTEC USB 驱动器、以了解端口是如何禁用的。 我知道这对您的项目来说是低优先级的。

    回到原来的问题、USB1端口是否在您的项目中设计为仅主机模式? 您不会将 USB1用作器件端口、没错。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    是的、实际上、如果内核从该错误中恢复、这会很好、但我们更关注 USB1和 PCIe 配置问题。

    是的、USB1端口被设计为仅主机模式。 在设备树中,我们将其声明为主机:

    /* triger:未处理的故障:0x00000000处的异步外部中止(0x1211)*/
    &USB1{
    status ="确定";
    dr_mode ="主机";
    }; 

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

    Kamel、

    我认为无法自动恢复已禁用的 xhci 主机端口。 我们只能弄清楚是什么原因导致端口被禁用、如果可能的话、可以避免禁用端口。

    对于原始问题、虽然我们的开发仍在寻找合适的解决方案、但下面是一个临时解决方法、它可能会让您的项目向前推进。

    在 DTS 文件中、从 USB1节点中删除 USB3.0 phy、就像以前一样。 这是我的:

    diff -git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
    INDEX 226b64610f40.fb23416e5e57 100644
    -- aarch/arm/boot/dts/dra7.dtsi
    ++ b/arch/arm/boot/bm/boot/1719.10
    @@@@
    中断名称="外设"、
    "主机"、
    "OTG";
    - PHY =<&USB2_phy1>、<&USB3_phy1>;
    - PHY-names ="USB2-phy"、"USB3-phy";
    - 最大速度="超速";
    - DR_MODE ="OTG";
    + phys =<&USB2_phy1>;
    + PHY-names ="USB2-phy";
    + 最大速度="高速";
    + DR_MODE ="主机";
    SNP、ds_u3_suspuhy_quirk;
    SNP、ds_u2_suspahy_quirk;
    SNP、devctrl_halt_quirk;
    

    然后使用以下补丁在 xhci 驱动程序中禁用 USB3。

    diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index
    0452040c0cc8..b6f80c54ae8f 100644
    -- a/drivers/usb/host/xhci.c
    ++ b/drivers/host/xhcd/xhks/xhci_exqui_7_t
    @@@@ 65、xhci_t_en_enue_t_enue_t+65、t_zhcue_ench-t_exqui_en_en_en_en_en_zh-t_ench-t
    *通用硬件链接
    *
    IRQ = XHCI_IRQ、
    - .flags = HCD_MEMORY | HCD_USB3 | HCD_SHARED
    、+ .flags = HCD_MEMORY | HCD_USB2 | HCD_SHARED、
    
    /*
    *基本生命周期操作
    

    内核引导后、运行以下命令将 USB3.0 PHY 从 USB 切换到 PCIe。

    # devmem2 0x4a003c3c3c w 0xc

    在内核引导期间、您将看到"drivers/USB/core/port.c:319 link_peers"的内核警告转储。 可以忽略此警告、USB2.0端口现在应该可以工作。 请告诉我、您是否对该变通办法有任何疑问。

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

    您好 Bin、

    [引用用户="Bin Liu ]

    我认为无法自动恢复已禁用的 xhci 主机端口。 我们只能弄清楚是什么原因导致端口被禁用、如果可能的话、可以避免禁用端口。

    [/报价]

    啊,在这种情况下,这会更好!

    [引用用户="Bin Liu ]

    对于原始问题、虽然我们的开发仍在寻找合适的解决方案、但下面是一个临时解决方法、它可能会让您的项目向前推进。

    在 DTS 文件中、从 USB1节点中删除 USB3.0 phy、就像以前一样。 这是我的:

    diff -git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
    INDEX 226b64610f40.fb23416e5e57 100644
    -- aarch/arm/boot/dts/dra7.dtsi
    ++ b/arch/arm/boot/bm/boot/1719.10
    @@@@
    中断名称="外设"、
    "主机"、
    "OTG";
    - PHY =<&USB2_phy1>、<&USB3_phy1>;
    - PHY-names ="USB2-phy"、"USB3-phy";
    - 最大速度="超速";
    - DR_MODE ="OTG";
    + phys =<&USB2_phy1>;
    + PHY-names ="USB2-phy";
    + 最大速度="高速";
    + DR_MODE ="主机";
    SNP、ds_u3_suspuhy_quirk;
    SNP、ds_u2_suspahy_quirk;
    SNP、devctrl_halt_quirk;
    

    然后使用以下补丁在 xhci 驱动程序中禁用 USB3。

    diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index
    0452040c0cc8..b6f80c54ae8f 100644
    -- a/drivers/usb/host/xhci.c
    ++ b/drivers/host/xhcd/xhks/xhci_exqui_7_t
    @@@@ 65、xhci_t_en_enue_t_enue_t+65、t_zhcue_ench-t_exqui_en_en_en_en_en_zh-t_ench-t
    *通用硬件链接
    *
    IRQ = XHCI_IRQ、
    - .flags = HCD_MEMORY | HCD_USB3 | HCD_SHARED
    、+ .flags = HCD_MEMORY | HCD_USB2 | HCD_SHARED、
    
    /*
    *基本生命周期操作
    

    内核引导后、运行以下命令将 USB3.0 PHY 从 USB 切换到 PCIe。

    # devmem2 0x4a003c3c3c w 0xc

    在内核引导期间、您将看到"drivers/USB/core/port.c:319 link_peers"的内核警告转储。 可以忽略此警告、USB2.0端口现在应该可以工作。 请告诉我、您是否对该变通办法有任何疑问。

    [/报价]

    以下是有关变通办法的结果:

    • 引导运行良好、但我看不到任何有关 link_peers 的警告。
    • 如果我尝试 devmem2命令、则整个板会崩溃。 通过查看地址0x4a003c3c3c (CTRL_CORE_PCIe_control)的寄存器、我们可以看到正在尝试将引脚设置为 USB 1超高速模式。 我们专门将该寄存器设置为0 (PCIESS1和 PCIESS2模式)、以使以太网链路正常工作。
    • 但是,当插入 USB 记忆棒时,它是可以识别的,并且工作正常! )
    • 在插入 USB 闪存盘的情况下引导时,内核会显示以下错误信息:
    USB 1-1:器件描述符已读/64、错误-110
    USB 2-1:使用 xhci-hcd 的新型高速 USB 器件编号4
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    USB 2-1:器件不接受地址4、错误-62
    USB 1-1:使用 xhci-hcd 的新型高速 USB 器件编号4
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    USB 1-1:设备不接受地址4、错误-62
    USB 2-1:使用 xhci-hcd 的新型高速 USB 器件编号5
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    USB 2-1:设备不接受地址5、错误-62
    USB USB2-port1:无法枚举 USB 设备
    USB 1-1:使用 xhci-hcd 的新型高速 USB 器件编号5
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    等待设置器件命令时、XHCI-hcd xhci-hcd.0.auto:超时
    USB 1-1:设备不接受地址5、错误-62
    USB USB1-port1:无法枚举 USB 设备 
      • 如果拔下 USB 闪存盘,将打印以下消息:
    XHCI-hcd xhci-hcd.0.auto:端口0恢复 PLC 超时 
      • 如果我插回 USB 闪存盘:
    USB 1-1:使用 xhci-hcd
    USB 的新型高速 USB 器件编号6 1-1:找到新的 USB 器件、idVendor=abcd、idProduct=1234
    USB 1-1:新的 USB 器件字符串:mFR=1、Product=2、SerialNumber=3
    USB 1-1:产品:UDisk
    USB 1-1:制造商:通用
    USB 1-1:序列号:Љ
    USB-storage 1-1:1.0:检测到 USB 大容量存储设备
    SCSI host0:USB-storage 1-1:1.0
    SCSI 0:0:0:0:0:0:直接访问 通用 UDisk 5.00 PQ:0
    ANSI:2
    SD 0:0:0:0:[SDA] 3934208 512字节逻辑块:(2.01 GB/1.88 GiB)
    SD 0:0:0:0:[SDA]写保护关闭
    SD 0:0:0:[SDA]找不到
    
    
    可移动模式页面 SD 0:0:[SDA]通过 SDA 驱动器写入 SDA 0:0:SDA:0:SDA 
      • 然后可以成功地安装/卸载 USB 闪存盘

    最后、xhci 驱动程序上的补丁足以支持 USB、但我们仍然不得不拔下/重新插入 USB 记忆棒以使其正常工作。

    您是否对启动时识别 USB 有任何想法?

    非常感谢您和您的开发团队的帮助!

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

    Kamel、

    [引用 USER="Kamel Hacene14"]通过查看地址0x4a003c3c3c3c (CTRL_CORE_PCIe_control)的寄存器,我们似乎正在尝试将引脚设置为 USB 1 SuperSpeed 模式。[/QUEST]

    默认情况下、USB 超高速 phy 连接到 USB1、此命令将 phy 切换为 PCIe。

    [引用用户="Kamel Hacene14"]

    • 在插入 USB 闪存盘的情况下引导时,内核会显示以下错误信息:
    USB 1-1:器件描述符已读/64、错误-110 

    [/报价]

    我在 AM571x-IDK EVM 上看到稍有不同的行为、错误代码为-71、枚举最终将通过、我不必拔下插头、然后再插回器件。 但是、遗憾的是、我无法在启动时正确识别 USB 器件、因此我们正在为这个问题寻找合适的解决方案。

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

    您好!

    [引用用户="Bin Liu ]

    Kamel、

    Kamel Hacene14.
    通过查看地址0x4a003c3c3c (CTRL_CORE_PCIe_control)的寄存器、我们可以看到正在尝试将引脚设置为 USB 1超高速模式。

    默认情况下、USB 超高速 phy 连接到 USB1、此命令将 phy 切换为 PCIe。

    [/报价]

    奇怪的是、我目前正在使用此 文档。  CTRL_CORE_PCIe_control 默认情况下似乎处于 USB1 SuperSpeed 模式(0x8)、但我们希望将其设置为0x0 (我们使用两个 PCIe 从设备)。 我们将直接在 u-boot 中设置该值。

    [引用用户="Bin Liu ]

    Kamel Hacene14.
    • 在插入 USB 闪存盘的情况下引导时,内核会显示以下错误信息:
    USB 1-1:器件描述符已读/64、错误-110 

    我在 AM571x-IDK EVM 上看到稍有不同的行为、错误代码为-71、枚举最终将通过、我不必拔下插头、然后再插回器件。 但是、遗憾的是、我无法在启动时正确识别 USB 器件、因此我们正在为这个问题寻找合适的解决方案。

    [/报价]

    哦、好的、下周我将有一些时间来调查我们的插头/插头问题。

    尝试解除绑定和绑定驱动程序时,我收到另一个看起来更像您的错误:drivers/USB/core/port.c:238 0xc0450bc0()