“OTG device tree configuration”的版本间的差异
(未显示同一用户的5个中间版本) | |||
第8行: | 第8行: | ||
== DT bindings documentation == | == DT bindings documentation == | ||
− | + | "Platform DesignWare HS OTG USB 2.0控制器设备树绑定"<ref name="dwc2_bindings>{{CodeSource | Linux kernel | Documentation/devicetree/bindings/usb/dwc2.txt}},Platform DesignWare HS OTG USB 2.0控制器设备树绑定</ref> document represents the [[OTG internal peripheral|OTG]](DRD)控制器。 | |
− | + | “通用USB设备树绑定” <ref name="generic_bindings">{{CodeSource | Linux kernel | Documentation/devicetree/bindings/usb/generic.txt}}, Generic USB device tree bindings</ref> 文档表示通用USB属性,由[[USB overview|USB framework]] 提出,例如最大速度,dr_mode ... | |
== 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 === | ||
==== DT configuration example as full-speed OTG ==== | ==== DT configuration example as full-speed OTG ==== | ||
− | + | 下面的示例显示了如何配置ID引脚以检测角色(外围设备,主机)的全速OTG: | |
− | * OTG | + | * OTG ID和数据(DM,DP)引脚:使用[[Pinctrl device tree configuration]] 将PA10,PA11和PA12配置为模拟输入。 |
− | * | + | * 通过设置“兼容”来使用集成的“全速USB PHY” |
− | * | + | * 双角色(dr_mode)为“ otg”(例如,默认值未指定) |
− | * | + | * 使用vbus稳压器 |
# part of pin-controller dt node | # part of pin-controller dt node | ||
{{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | {{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | ||
第90行: | 第89行: | ||
==== DT configuration example as high speed OTG ==== | ==== DT configuration example as high speed OTG ==== | ||
− | + | 下面的示例显示了如何使用ID引脚检测角色(外围设备,主机)来配置高速OTG: | |
− | * OTG | + | * OTG ID引脚:使用[[Pinctrl device tree configuration]] 将PA10配置为模拟输入 |
− | * | + | * 将''USB HS PHY端口#2''与UTMI开关一起使用以选择OTG控制器 |
− | * | + | * 双角色模式(dr_mode)为“ otg”(例如,默认值未指定) |
− | * | + | * 使用vbus稳压器 |
# part of pin-controller dt node | # part of pin-controller dt node | ||
{{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | {{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | ||
第114行: | 第113行: | ||
==How to configure the DT using STM32CubeMX== | ==How to configure the DT using STM32CubeMX== | ||
− | The [[STM32CubeMX]] | + | The [[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日 (三) 10:57的最新版本
目录
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
下面的示例显示了如何配置ID引脚以检测角色(外围设备,主机)的全速OTG:
- OTG ID和数据(DM,DP)引脚:使用Pinctrl device tree configuration 将PA10,PA11和PA12配置为模拟输入。
- 通过设置“兼容”来使用集成的“全速USB PHY”
- 双角色(dr_mode)为“ otg”(例如,默认值未指定)
- 使用vbus稳压器
# 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
下面的示例显示了如何使用ID引脚检测角色(外围设备,主机)来配置高速OTG:
- OTG ID引脚:使用Pinctrl device tree configuration 将PA10配置为模拟输入
- 将USB HS PHY端口#2与UTMI开关一起使用以选择OTG控制器
- 双角色模式(dr_mode)为“ otg”(例如,默认值未指定)
- 使用vbus稳压器
# 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 工具可用于配置STM32MPU设备并获取相应的platform configuration device tree 文件。
STM32CubeMX可能不支持以上DT bindings documentation 段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入“用户部分”。 然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见STM32CubeMX 用户手册。
References
请参考以下链接以获取更多信息:
- ↑ 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