OTG device tree configuration

来自百问网嵌入式Linux wiki

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";
};
Warning.png 该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。


DT configuration (board level)

请按照以下章节中描述的顺序在板上配置和启用OTG。

OTG支持可通过DT静态选择的两个PHY接口:

  • 内置有OTG 控制器的全速PHY
  • 高速 USBPHYC HS PHY,可以分配给 USBH 或者OTG 控制器。

在“ otg”或“主机”模式下运行时,需要使用外部电荷泵,例如 必须指定5V稳压器。

Info.png 有关调节器配置的更多信息,请参考Regulator overview

DT configuration using full-speed USB PHY

  • 通过设置status =“ okay”。来启用OTG。
  • 通过设置compatible =“ st,stm32mp1-fsotg”,“ snps,dwc2”使用嵌入式全速PHY
  • pinctrl,通过“pinctrl-0””和“” pinctrl-names””,将全速PHY引脚(OTG ID,DM,DP)配置为模拟。
  • (可选)通过dr_mode =“ peripheral”主机“otg”(如果未设置,默认为“ otg”)设置双角色模式 )
  • 可选地通过vbus-supply = <&your_regulator>为otg和主机模式设置vbus电压regulator

DT configuration using high-speed USB PHY

  • 通过设置status =“ okay”。来启用OTG。
  • 通过设置'phys =<&usbphyc_port1 0>;phy-names =“ usb2-phy”;选择USBPHYC端口#2
  • (可选)通过pinctrl,通过pinctrl-0pinctrl-names将OTG ID引脚配置为模拟引脚。
  • (可选)通过dr_mode =“ peripheral”主机“otg”(如果未设置,默认为“ otg”)设置双角色模式 )
  • 可选地通过vbus-supply = <&your_regulator>为otg和主机模式设置vbus电压regulator.
Info.png 有关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 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:


<securetransclude src="ProtectedTemplate:ArticleBasedOnModel" params="Peripheral or framework device tree configuration model"></securetransclude> <securetransclude src="ProtectedTemplate:PublicationRequestId" params="10336 | 2019-01-16 | AlainF"></securetransclude>