Other Parts Discussed in Thread: AM5718
工具/软件:Linux
您好!
可以使用 USB2PHY1使用 USB1控制器,同时使用来自 USB1子系统的 USB3_PHY 使用 PCIe?
如何修改设备树中的 OCP2SCP3和 OCP2SCP1设置?
i.E:是否删除 USB3_phy1并启用 PCIe2_phy?
此致、
Romain
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.
尊敬的 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、
我们的开发团队进行了初步调查、发现需要更多的努力来了解问题以找到解决方案、因此现在问题报告已积压、希望问题将在下一个 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端口会破坏规范、这不是推荐的路径。
Romain、
[引用 USER="Romain Naour"]当您说"AM571x IDK 不会引出 USB1超高速信号线"时,您意味着出现错误的原因是线 USB_RXN0、USB_RXP0和 USB_TXN0、USB_TXP0连接到了什么?[/QUESP]
不、我不确定问题是否与这些信号有关。 这只是我看到的硬件差异。
[引用 user="Romain Naour"]您是否认为可以添加一些 DWC3特性?
[/报价]
在我们知道根本原因之前,我不知道我们会有什么奇怪。
Romain Naour 说:如果 SDK 中包含此问题的任何修补程序,您能否通知我。
我一定会的。
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"、但不能保证这将解决问题。
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、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 主机端口。 我们只能弄清楚是什么原因导致端口被禁用、如果可能的话、可以避免禁用端口。
对于原始问题、虽然我们的开发仍在寻找合适的解决方案、但下面是一个临时解决方法、它可能会让您的项目向前推进。
在 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端口现在应该可以工作。 请告诉我、您是否对该变通办法有任何疑问。
[/报价]
以下是有关变通办法的结果:
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 设备
XHCI-hcd xhci-hcd.0.auto:端口0恢复 PLC 超时
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
最后、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 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()