“USBH device tree configuration”的版本间的差异
(未显示同一用户的2个中间版本) | |||
第98行: | 第98行: | ||
==== DT configuration when using the two physical ports ==== | ==== DT configuration when using the two physical ports ==== | ||
− | + | 以下示例显示了使用这两个物理端口时如何配置USBH。 | |
&usbh_ehci { | &usbh_ehci { | ||
phys = {{HighlightParam|<&usbphyc_port0>}}, {{Highlight|<&usbphyc_port1 '''1'''>}}; {{HighlightParam|/* Use USBPHYC HS PHY port #1, mapped on USBH controller */}} | phys = {{HighlightParam|<&usbphyc_port0>}}, {{Highlight|<&usbphyc_port1 '''1'''>}}; {{HighlightParam|/* Use USBPHYC HS PHY port #1, mapped on USBH controller */}} | ||
第114行: | 第114行: | ||
==How to configure the DT using STM32CubeMX== | ==How to configure the DT using STM32CubeMX== | ||
− | + | [[STM32CubeMX]] 工具可用于配置STM32MPU设备并获取相应的 [[Device_tree#STM32|platform configuration device tree]] 文件。<br /> | |
− | + | STM32CubeMX可能不支持以上 [[#DT bindings documentation|DT bindings documentation]] 段中描述的所有属性。如果是这样,该工具会在生成的设备树中插入“''用户部分”''。 然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见 [[STM32CubeMX]] 用户手册。 | |
==References== | ==References== | ||
− | + | 请参考以下链接以获得完整描述: | |
<references /> | <references /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2020年11月11日 (三) 09:10的最新版本
目录
Article purpose
本文介绍如何在将 USBH internal peripheral 分配给 Linux® 操作系统时对其进行配置。 在这种情况下,它由USB framework控制。
使用device tree机制执行配置。
“ USBH Linux驱动程序” (EHCI[1], OHCI[2]) ,它们在USB framework中注册了相关信息。
DT bindings documentation
STM32 USBH internal peripheral 是一个USB主机设备,由EHCI控制器和OHCI控制器组成。 每个控制器代表一个单独的绑定文档:
- 通用USB EHCI控制器设备树绑定[3] d文档处理标准EHCI控制器核心资源(例如寄存器,时钟,重置,中断等)。
- 通用USB OHCI控制器设备树绑定[4] 文档处理标准OHCI控制器核心资源(例如寄存器,时钟,复位,中断等)。
每个控制器使用USB framework提出的通用USB主机控制器设备(HCD)属性和通用USB属性:
DT configuration
该硬件描述是“STM32微处理器”设备树文件(扩展名为.dtsi)和“板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见 Device tree。
STM32CubeMX可用于生成板卡设备树。 有关更多详细信息,请参考 How to configure the DT using STM32CubeMX。
DT configuration (STM32 level)
在stm32mp157c.dtsi[7]中声明。
它们由一组属性组成,用于描述 USBH_EHCI and USBH_OHCI 控制器:寄存器地址,时钟,复位,中断...
usbh_ohci: usbh-ohci@5800c000 { /* USBH OHCI controller */ compatible = "generic-ohci"; reg = <0x5800c000 0x1000>; clocks = <&rcc USBH>; resets = <&rcc USBH_R>; interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; usbh_ehci: usbh-ehci@5800d000 { /* USBH EHCI controller */ compatible = "generic-ehci"; reg = <0x5800d000 0x1000>; clocks = <&rcc USBH>; resets = <&rcc USBH_R>; interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; companion = <&usbh_ohci>; /* When USBH EHCI controller detects a full or low speed device on a port, status = "disabled"; * that port is switched over to the USBH OHCI companion[6] controller */ };
![]() |
该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。 |
DT configuration (board level)
请按照以下章节中描述的顺序在板上配置和启用USBH。
- USBPHYC port#1 is assigned to the USBH
- USBPHYC port#2 can be statically assigned to the USBH or to the OTG
![]() |
请参考USBPHYC device tree configuration for additional information on the USBPHYC configuration |
USBH由EHCI和OHCI控制器组成:
- 通过EHCI控制器实现高速运行
- 全速和低速操作可以通过以下任一方式实现:
- 连接到下游端口的高速HUB IC
- OHCI控制器
DT configuration with external high speed-HUB
- 通过设置status =“ okay”启用usbh_ehci
- 通过phys和phy-names配置PHY
![]() |
当所有低速和全速流量由直接连接到下游端口的高速集线器管理时,无需启用usbh_ohci。 |
DT configuration with OHCI to achieve full-speed and low-speed
- 通过设置status =“ okay”启用usbh_ehci
- 通过设置status =“ okay”启用usbh_ohci
对于两个控制器:
- 通过phys和phy-names配置PHY
DT configuration examples
DT configuration when using port0 with a high-speed hub
下例显示了使用物理端口0(未使用第二个物理端口)时如何配置USBH。
板上使用了高速集线器控制器IC:无需启用usbh_ohci,所有低速和全速流量都由集线器管理。
&usbh_ehci { phys = <&usbphyc_port0>; /* Use USBPHYC HS PHY port #1, mapped on USBH controller */ phy-names = "usb"; status = "okay"; }; /* No need to configure and enable usbh_ohci */
DT configuration when using port0
下面的示例显示了如何在使用物理端口0(第二个物理端口未使用,或由 OTG 使用)并且不使用高速集线器的情况下配置USBH。
&usbh_ehci { phys = <&usbphyc_port0>; /* Use USBPHYC HS PHY port #1, mapped on USBH controller */ phy-names = "usb"; status = "okay"; }; &usbh_ohci { phys = <&usbphyc_port0>; /* Use USBPHYC HS PHY port #1, mapped on USBH controller */ phy-names = "usb"; status = "okay"; };
DT configuration when using the two physical ports
以下示例显示了使用这两个物理端口时如何配置USBH。
&usbh_ehci { phys = <&usbphyc_port0>, <&usbphyc_port1 1>; /* Use USBPHYC HS PHY port #1, mapped on USBH controller */ /* Use USBPHYC HS PHY port #2, configure UTMI switch to select USBH controller */ phy-names = "usb", "usb"; status = "okay"; }; &usbh_ohci { phys = <&usbphyc_port0>, <&usbphyc_port1 1>; /* Use USBPHYC HS PHY port #1, mapped on USBH controller */ /* Use USBPHYC HS PHY port #2, configure UTMI switch to select USBH controller */ phy-names = "usb", "usb"; status = "okay"; };
How to configure the DT using STM32CubeMX
STM32CubeMX 工具可用于配置STM32MPU设备并获取相应的 platform configuration device tree 文件。
STM32CubeMX可能不支持以上 DT bindings documentation 段中描述的所有属性。如果是这样,该工具会在生成的设备树中插入“用户部分”。 然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见 STM32CubeMX 用户手册。
References
请参考以下链接以获得完整描述:
- ↑ drivers/usb/host/ehci-platform.c | |}} drivers/usb/host/ehci-platform.c , Generic platform ehci driver
- ↑ drivers/usb/host/ohci-platform.c | |}} drivers/usb/host/ohci-platform.c , Generic platform ohci driver
- ↑ Documentation/devicetree/bindings/usb/usb-ehci.txt| |}} Documentation/devicetree/bindings/usb/usb-ehci.txt Generic USB EHCI controller device tree bindings
- ↑ Documentation/devicetree/bindings/usb/usb-ohci.txt| |}} Documentation/devicetree/bindings/usb/usb-ohci.txt Generic USB OHCI controller device tree bindings
- ↑ Documentation/devicetree/bindings/usb/usb-hcd.txt| |}} Documentation/devicetree/bindings/usb/usb-hcd.txt Generic USB HCD (Host Controller Device) device tree bindings
- ↑ 6.06.1 Documentation/devicetree/bindings/usb/generic.txt| |}} Documentation/devicetree/bindings/usb/generic.txt Generic USB device tree bindings
- ↑ arch/arm/boot/dts/stm32mp157c.dtsi| |}} arch/arm/boot/dts/stm32mp157c.dtsi , STM32MP157C device tree file