“OTG device tree configuration”的版本间的差异
Zhouyuebiao(讨论 | 贡献) |
|||
(未显示2个用户的7个中间版本) | |||
第1行: | 第1行: | ||
− | |||
− | [[ | + | == Article purpose == |
− | + | 本文介绍了在将[[OTG internal peripheral|'''OTG''' internal peripheral]] 分配给Linux<sup>®</sup> OS时如何进行配置。 在这种情况下,它由 [[USB overview|USB framework]]控制。 | |
− | + | ||
+ | 使用 [[Device tree|device tree]] 机制执行配置。 | ||
+ | |||
+ | 它由“ OTG Linux驱动程序”<ref>{{CodeSource | Linux kernel | drivers/usb/dwc2/}}, DesignWare HS OTG Controller driver</ref> 用于在[[USB overview|USB framework]]中注册相关信息。 | ||
+ | |||
+ | == 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 == | ||
+ | 该硬件描述是“''STM32微处理器”''设备树文件(扩展名为.dtsi)和“''板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见 [[Device tree]] 。 | ||
+ | '''STM32CubeMX'''可用于生成板卡设备树。 有关更多详细信息,请参考 [[#How_to_configure_the_DT_using_STM32CubeMX|How to configure the DT using STM32CubeMX]] 。 | ||
+ | === 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 { | ||
+ | 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";''' {{Highlight|/* '''dr_mode'''<ref name="generic_bindings"/> can be overwritten at board level to set a particular mode */}} | ||
+ | status = "disabled"; | ||
+ | }; | ||
+ | {{Warning|该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。}} | ||
+ | |||
+ | |||
+ | === 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|有关调节器配置的更多信息,请参考[[Regulator overview]]}} | ||
+ | |||
+ | ==== 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 ==== | ||
+ | * 通过设置'''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|有关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 | ||
+ | {{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | ||
+ | pins { | ||
+ | pinmux = <STM32_PINMUX('A', 10, ANALOG)>; /* OTG_ID */ {{highlight|/* configure 'PA10' as ANALOG */}} | ||
+ | |||
+ | }; | ||
+ | }; | ||
+ | |||
+ | {{HighlightParam|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 = "{{highlight|st,stm32mp1-'''fsotg'''}}", "snps,dwc2"; {{highlight|/* Use full-speed integrated PHY */}} | ||
+ | pinctrl-names = "default"; | ||
+ | pinctrl-0 = <{{HighlightParam|&usbotg_hs_pins_a &usbotg_fs_dp_dm_pins_a}}>; {{highlight|/* configure OTG ID and full-speed data pins */}} | ||
+ | vbus-supply = <{{highlight|&vbus_otg}}>; {{highlight|/* 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 | ||
+ | {{HighlightParam|usbotg_hs_pins_a}}: usbotg_hs-0 { | ||
+ | pins { | ||
+ | pinmux = <STM32_PINMUX('A', 10, ANALOG)>; /* OTG_ID */ {{highlight|/* configure 'PA10' as ANALOG */}} | ||
+ | |||
+ | }; | ||
+ | }; | ||
+ | |||
+ | &usbotg_hs { | ||
+ | compatible = "{{highlight|st,stm32mp1-'''hsotg'''}}", "snps,dwc2"; | ||
+ | pinctrl-names = "default"; | ||
+ | pinctrl-0 = <{{HighlightParam|&usbotg_hs_pins_a}}>; {{highlight|/* configure OTG_ID pin */}} | ||
+ | phys = <&usbphyc_port1 {{highlight|'''0'''}}>; {{highlight|/* '''0''': UTMI switch selects the OTG controller */}} | ||
+ | phy-names = "usb2-phy"; | ||
+ | vbus-supply = <{{highlight|&vbus_otg}}>; {{highlight|/* voltage regulator to supply Vbus */}} | ||
+ | status = "{{highlight|okay}}"; {{highlight|/* enable OTG */}} | ||
+ | }; | ||
+ | |||
+ | ==How to configure the DT using STM32CubeMX== | ||
+ | The [[STM32CubeMX]] 工具可用于配置STM32MPU设备并获取相应的[[Device_tree#STM32|platform configuration device tree]] 文件。<br /> | ||
+ | STM32CubeMX可能不支持以上[[#DT bindings documentation|DT bindings documentation]] 段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入“''用户部分”''。 然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见[[STM32CubeMX]] 用户手册。 | ||
+ | |||
+ | ==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