* STMicroelectronics STM32 USART Required properties: - compatible: Can be either: - "st,stm32-uart", - "st,stm32f7-uart", - "st,stm32h7-uart". depending is compatible with stm32(f4), stm32f7 or stm32h7. - reg: The address and length of the peripheral registers space - interrupts: - The interrupt line for the USART instance, - clocks: The input clock of the USART instance Optional properties: - resets: Must contain the phandle to the reset controller. - pinctrl-names: Set to "default". An additional "sleep" state can be defined to set pins in sleep state when in low power. In case the device is used as a wakeup source, "idle" state is defined in order to keep RX pin active. - pinctrl-n: Phandle(s) pointing to pin configuration nodes. For Pinctrl properties see ../pinctrl/pinctrl-bindings.txt - uart-has-rtscts: See description in serial.txt binding. - rs485-rts-delay, rs485-rx-during-tx, rs485-rts-active-low, linux,rs485-enabled-at-boot-time: See rs485.txt. - dmas: Phandle(s) to DMA controller node(s). Refer to stm32-dma.txt - dma-names: "rx" and/or "tx" - wakeup-source: Bool flag to indicate this device has wakeup capabilities Note for dma using: - "tx" dma can be used without any constraint since it uses single dma transfers. - "rx" dma using requires some attention: 1) if you cannot anticipate the length of your received packets and if your usart device embeds an internal fifo, then DON'T use dma mode. 2) if you enable dma mode WITHOUT mdma intermediate copy (cf. stm32-dma.txt), then the availability of the received data will depend on the dma driver policy and it may be delayed until dma internal fifo is full. The usart driver will see this checking the dma residue when rx interrupt (RXNE or RTO) occurs. 3) if you enable dma mode WITH mdma intermediate copy (cf. stm32-dma.txt) then the usart driver will never see the dma residue becoming smaller than RX_BUF_P but it will get its rx dma complete callback called when the cyclic transfer period (RX_BUF_P) is reached. The three possibilities above are ordered from the most cpu time consuming one to the least one. The counterpart of this optimisation is the reception granularity achievable by the usart driver, from one byte up to RX_BUF_P. Examples: usart4: serial@40004c00 { compatible = "st,stm32-uart"; reg = <0x40004c00 0x400>; interrupts = <52>; clocks = <&clk_pclk1>; pinctrl-names = "default", "sleep", "idle"; pinctrl-0 = <&pinctrl_usart4>; pinctrl-1 = <&pinctrl_usart4_sleep>; pinctrl-2 = <&pinctrl_usart4_idle>; pinctrl-3 = <&pinctrl_usart4>; }; usart2: serial@40004400 { compatible = "st,stm32-uart"; reg = <0x40004400 0x400>; interrupts = <38>; clocks = <&clk_pclk1>; st,hw-flow-ctrl; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rtscts>; }; usart1: serial@40011000 { compatible = "st,stm32-uart"; reg = <0x40011000 0x400>; interrupts = <37>; clocks = <&rcc 0 164>; dmas = <&dma2 2 4 0x414 0x0>, <&dma2 7 4 0x414 0x0>; dma-names = "rx", "tx"; };