“OTG device tree configuration”的版本间的差异
第13行: | 第13行: | ||
== DT configuration == | == DT configuration == | ||
− | + | 该硬件描述是“''STM32微处理器”''设备树文件(扩展名为.dtsi)和“''板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见 [[Device tree]] 。 | |
− | + | '''STM32CubeMX'''可用于生成板卡设备树。 有关更多详细信息,请参考 [[#How_to_configure_the_DT_using_STM32CubeMX|How to configure the DT using STM32CubeMX]] 。 | |
− | '''STM32CubeMX''' | ||
=== DT configuration (STM32 level) === | === DT configuration (STM32 level) === | ||
− | + | 在stm32mp157c.dtsi <ref name="stm32mp157c_dtsi">{{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c.dtsi}}, STM32MP157C device tree file</ref>. | |
− | + | 它由一组属性组成,用于描述[[OTG_internal_peripheral#Features|OTG controller]]:寄存器地址,时钟,复位,中断... | |
'''usbotg_hs''': usb-otg@49000000 { | '''usbotg_hs''': usb-otg@49000000 { | ||
第32行: | 第31行: | ||
status = "disabled"; | status = "disabled"; | ||
}; | }; | ||
− | {{Warning| | + | {{Warning|该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。}} |
− | + | ||
=== DT configuration (board level) === | === DT configuration (board level) === | ||
− | + | 请按照以下章节中描述的顺序在板上配置和启用OTG。 | |
− | + | OTG支持可通过DT静态选择的两个PHY接口: | |
− | * | + | * 内置有[[OTG_internal_peripheral|OTG]] 控制器的全速PHY |
− | * | + | * 高速 [[USBPHYC_internal_peripheral|USBPHYC]] HS PHY,可以分配给 [[USBH_internal_peripheral|USBH]] 或者[[OTG_internal_peripheral|OTG]] 控制器。 |
− | + | 在“ otg”或“主机”模式下运行时,需要使用外部电荷泵,例如 必须指定5V稳压器。 | |
− | {{Info| | + | {{Info|有关调节器配置的更多信息,请参考[[Regulator overview]]}} |
==== DT configuration using full-speed USB PHY ==== | ==== DT configuration using full-speed USB PHY ==== | ||
− | * | + | * 通过设置'''status =“ okay”。'''来启用OTG。 |
− | * | + | * 通过设置'''compatible =“ st,stm32mp1-fsotg”,“ snps,dwc2”'''使用嵌入式全速PHY |
− | * | + | * [[Pinctrl overview|pinctrl]],通过“''pinctrl-0””和“” pinctrl-names””,将全速PHY引脚(OTG ID,DM,DP)配置为模拟。 |
− | * | + | * (可选)通过'''dr_mode =“ peripheral”''','''主机“'''或'''otg”'''(如果未设置,默认为“ otg”)设置双角色模式 ) |
− | * | + | * 可选地通过'''vbus-supply = <&your_regulator>'''为otg和主机模式设置vbus电压[[Regulator overview|regulator]]。 |
==== DT configuration using high-speed USB PHY ==== | ==== DT configuration using high-speed USB PHY ==== | ||
− | * | + | * 通过设置'''status =“ okay”。'''来启用OTG。 |
− | * | + | * 通过设置'''phys =<&usbphyc_port1 {{highlight|0}}>;''和'''phy-names =“ usb2-phy”;'''选择USBPHYC端口#2 |
− | * | + | * (可选)通过[[Pinctrl overview|pinctrl]],通过'''pinctrl-0'''和'''pinctrl-names'''将OTG ID引脚配置为模拟引脚。 |
− | * | + | * (可选)通过'''dr_mode =“ peripheral”''','''主机“'''或'''otg”'''(如果未设置,默认为“ otg”)设置双角色模式 ) |
− | * | + | * 可选地通过'''vbus-supply = <&your_regulator>'''为otg和主机模式设置vbus电压[[Regulator overview|regulator]]. |
− | {{Info| | + | {{Info|有关USBPHYC端口2配置的更多信息,请参考[[USBPHYC device tree configuration]].}} |
=== DT configuration examples === | === DT configuration examples === |
2020年11月11日 (三) 10:46的版本
目录
Article purpose
本文介绍了在将OTG internal peripheral 分配给Linux® OS时如何进行配置。 在这种情况下,它由 USB framework控制。
使用 device tree 机制执行配置。
它由“ OTG Linux驱动程序”[1] 用于在USB framework中注册相关信息。
DT bindings documentation
"Platform DesignWare HS OTG USB 2.0控制器设备树绑定"[2] document represents the OTG(DRD)控制器。
“通用USB设备树绑定” [3] 文档表示通用USB属性,由USB framework 提出,例如最大速度,dr_mode ...
DT configuration
该硬件描述是“STM32微处理器”设备树文件(扩展名为.dtsi)和“板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见 Device tree 。 STM32CubeMX可用于生成板卡设备树。 有关更多详细信息,请参考 How to configure the DT using STM32CubeMX 。
DT configuration (STM32 level)
在stm32mp157c.dtsi [4].
它由一组属性组成,用于描述OTG controller:寄存器地址,时钟,复位,中断...
usbotg_hs: usb-otg@49000000 {
compatible = "snps,dwc2";
reg = <0x49000000 0x10000>;
clocks = <&rcc USBO_K>;
clock-names = "otg";
resets = <&rcc USBO_R>;
reset-names = "dwc2";
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
dr_mode = "otg"; /* dr_mode[3] can be overwritten at board level to set a particular mode */
status = "disabled";
};
该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。 |
DT configuration (board level)
请按照以下章节中描述的顺序在板上配置和启用OTG。
OTG支持可通过DT静态选择的两个PHY接口:
在“ otg”或“主机”模式下运行时,需要使用外部电荷泵,例如 必须指定5V稳压器。
有关调节器配置的更多信息,请参考Regulator overview |
DT configuration using full-speed USB PHY
DT configuration using high-speed USB PHY
- 通过设置status =“ okay”。来启用OTG。
- 通过设置'phys =<&usbphyc_port1 0>;和phy-names =“ usb2-phy”;选择USBPHYC端口#2
- (可选)通过pinctrl,通过pinctrl-0和pinctrl-names将OTG ID引脚配置为模拟引脚。
- (可选)通过dr_mode =“ peripheral”,主机“或otg”(如果未设置,默认为“ otg”)设置双角色模式 )
- 可选地通过vbus-supply = <&your_regulator>为otg和主机模式设置vbus电压regulator.
有关USBPHYC端口2配置的更多信息,请参考USBPHYC device tree configuration. |
DT configuration examples
DT configuration example as full-speed OTG
The example below shows how to configure full-speed OTG, with the ID pin to detect role (peripheral, host):
- OTG ID and data (DM, DP) pins: use Pinctrl device tree configuration to configure PA10, PA11 and PA12 as analog input.
- Use integrated full-speed USB PHY by setting compatible
- Dual-role (dr_mode) is "otg" (e.g. the default as unspecified)
- Use vbus voltage regulator
# part of pin-controller dt node usbotg_hs_pins_a: usbotg_hs-0 { pins { pinmux = <STM32_PINMUX('A', 10, ANALOG)>; /* OTG_ID */ /* configure 'PA10' as ANALOG */ }; }; usbotg_fs_dp_dm_pins_a: usbotg-fs-dp-dm-0 { pins { pinmux = <STM32_PINMUX('A', 11, ANALOG)>, /* OTG_FS_DM */ <STM32_PINMUX('A', 12, ANALOG)>; /* OTG_FS_DP */ }; };
&usbotg_hs { compatible = "st,stm32mp1-fsotg", "snps,dwc2"; /* Use full-speed integrated PHY */ pinctrl-names = "default"; pinctrl-0 = <&usbotg_hs_pins_a &usbotg_fs_dp_dm_pins_a>; /* configure OTG ID and full-speed data pins */ vbus-supply = <&vbus_otg>; /* voltage regulator to supply Vbus */ status = "okay"; };
DT configuration example as high speed OTG
The example below shows how to configure high-speed OTG, with the ID pin to detect role (peripheral, host):
- OTG ID pin: use Pinctrl device tree configuration to configure PA10 as analog input.
- Use USB HS PHY port#2, with the UTMI switch that selects the OTG controller
- Dual-role mode (dr_mode) is "otg" (e.g. the default as unspecified)
- Use vbus voltage regulator
# part of pin-controller dt node usbotg_hs_pins_a: usbotg_hs-0 { pins { pinmux = <STM32_PINMUX('A', 10, ANALOG)>; /* OTG_ID */ /* configure 'PA10' as ANALOG */ }; };
&usbotg_hs { compatible = "st,stm32mp1-hsotg", "snps,dwc2"; pinctrl-names = "default"; pinctrl-0 = <&usbotg_hs_pins_a>; /* configure OTG_ID pin */ phys = <&usbphyc_port1 0>; /* 0: UTMI switch selects the OTG controller */ phy-names = "usb2-phy"; vbus-supply = <&vbus_otg>; /* voltage regulator to supply Vbus */ status = "okay"; /* enable OTG */ };
How to configure the DT using STM32CubeMX
The STM32CubeMX tool can be used to configure the STM32MPU device and get the corresponding platform configuration device tree files.
The STM32CubeMX may not support all the properties described in the above DT bindings documentation paragraph. If so, the tool inserts user sections in the generated device tree. These sections can then be edited to add some properties and they are preserved from one generation to another. Refer to STM32CubeMX user manual for further information.
References
Please refer to the following links for additional information:
- ↑ drivers/usb/dwc2/| |}} drivers/usb/dwc2/ , DesignWare HS OTG Controller driver
- ↑ Documentation/devicetree/bindings/usb/dwc2.txt| |}} Documentation/devicetree/bindings/usb/dwc2.txt ,Platform DesignWare HS OTG USB 2.0控制器设备树绑定
- ↑ 3.03.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
<securetransclude src="ProtectedTemplate:ArticleBasedOnModel" params="Peripheral or framework device tree configuration model"></securetransclude>
<securetransclude src="ProtectedTemplate:PublicationRequestId" params="10336 | 2019-01-16 | AlainF"></securetransclude>