linux/linux-5.4.31/Documentation/devicetree/bindings/serial/st,stm32-usart.txt

82 lines
3.0 KiB
Plaintext

* 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";
};