summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/mfd/atmel-usart.txt
blob: 7f0cd72f47d2cfa1e6ae7b19720b0a8ac46b9ffb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)

Required properties for USART:
- compatible: Should be "atmel,<chip>-usart" or "atmel,<chip>-dbgu"
  The compatible <chip> indicated will be the first SoC to support an
  additional mode or an USART new feature.
  For the dbgu UART, use "atmel,<chip>-dbgu", "atmel,<chip>-usart"
- reg: Should contain registers location and length
- interrupts: Should contain interrupt
- clock-names: tuple listing input clock names.
	Required elements: "usart"
- clocks: phandles to input clocks.

Required properties for USART in SPI mode:
- #size-cells      : Must be <0>
- #address-cells   : Must be <1>
- cs-gpios: chipselects (internal cs not supported)
- atmel,usart-mode : Must be <AT91_USART_MODE_SPI> (found in dt-bindings/mfd/at91-usart.h)

Optional properties in serial mode:
- atmel,use-dma-rx: use of PDC or DMA for receiving data
- atmel,use-dma-tx: use of PDC or DMA for transmitting data
- {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD line respectively.
  It will use specified PIO instead of the peripheral function pin for the USART feature.
  If unsure, don't specify this property.
- add dma bindings for dma transfer:
	- dmas: DMA specifier, consisting of a phandle to DMA controller node,
		memory peripheral interface and USART DMA channel ID, FIFO configuration.
		Refer to dma.txt and atmel-dma.txt for details.
	- dma-names: "rx" for RX channel, "tx" for TX channel.
- atmel,fifo-size: maximum number of data the RX and TX FIFOs can store for FIFO
  capable USARTs.
- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt

<chip> compatible description:
- at91rm9200:  legacy USART support
- at91sam9260: generic USART implementation for SAM9 SoCs

Example:
- use PDC:
	usart0: serial@fff8c000 {
		compatible = "atmel,at91sam9260-usart";
		reg = <0xfff8c000 0x4000>;
		interrupts = <7>;
		clocks = <&usart0_clk>;
		clock-names = "usart";
		atmel,use-dma-rx;
		atmel,use-dma-tx;
		rts-gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
		cts-gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
		dtr-gpios = <&pioD 17 GPIO_ACTIVE_LOW>;
		dsr-gpios = <&pioD 18 GPIO_ACTIVE_LOW>;
		dcd-gpios = <&pioD 20 GPIO_ACTIVE_LOW>;
		rng-gpios = <&pioD 19 GPIO_ACTIVE_LOW>;
	};

- use DMA:
	usart0: serial@f001c000 {
		compatible = "atmel,at91sam9260-usart";
		reg = <0xf001c000 0x100>;
		interrupts = <12 4 5>;
		clocks = <&usart0_clk>;
		clock-names = "usart";
		atmel,use-dma-rx;
		atmel,use-dma-tx;
		dmas = <&dma0 2 0x3>,
		       <&dma0 2 0x204>;
		dma-names = "tx", "rx";
		atmel,fifo-size = <32>;
	};

- SPI mode:
	#include <dt-bindings/mfd/at91-usart.h>

	spi0: spi@f001c000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "atmel,at91rm9200-usart", "atmel,at91sam9260-usart";
		atmel,usart-mode = <AT91_USART_MODE_SPI>;
		reg = <0xf001c000 0x100>;
		interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>;
		clocks = <&usart0_clk>;
		clock-names = "usart";
		cs-gpios = <&pioB 3 0>;
	};