162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci# Copyright (C) 2022 Microchip Technology, Inc. and its subsidiaries 362306a36Sopenharmony_ci%YAML 1.2 462306a36Sopenharmony_ci--- 562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/serial/atmel,at91-usart.yaml# 662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 762306a36Sopenharmony_ci 862306a36Sopenharmony_cititle: Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART) 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cimaintainers: 1162306a36Sopenharmony_ci - Richard Genoud <richard.genoud@gmail.com> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciproperties: 1462306a36Sopenharmony_ci compatible: 1562306a36Sopenharmony_ci oneOf: 1662306a36Sopenharmony_ci - enum: 1762306a36Sopenharmony_ci - atmel,at91rm9200-usart 1862306a36Sopenharmony_ci - atmel,at91sam9260-usart 1962306a36Sopenharmony_ci - items: 2062306a36Sopenharmony_ci - const: atmel,at91rm9200-dbgu 2162306a36Sopenharmony_ci - const: atmel,at91rm9200-usart 2262306a36Sopenharmony_ci - items: 2362306a36Sopenharmony_ci - const: atmel,at91sam9260-dbgu 2462306a36Sopenharmony_ci - const: atmel,at91sam9260-usart 2562306a36Sopenharmony_ci - items: 2662306a36Sopenharmony_ci - const: microchip,sam9x60-usart 2762306a36Sopenharmony_ci - const: atmel,at91sam9260-usart 2862306a36Sopenharmony_ci - items: 2962306a36Sopenharmony_ci - const: microchip,sam9x60-dbgu 3062306a36Sopenharmony_ci - const: microchip,sam9x60-usart 3162306a36Sopenharmony_ci - const: atmel,at91sam9260-dbgu 3262306a36Sopenharmony_ci - const: atmel,at91sam9260-usart 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci reg: 3562306a36Sopenharmony_ci maxItems: 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci interrupts: 3862306a36Sopenharmony_ci maxItems: 1 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci clock-names: 4162306a36Sopenharmony_ci minItems: 1 4262306a36Sopenharmony_ci items: 4362306a36Sopenharmony_ci - const: usart 4462306a36Sopenharmony_ci - const: gclk 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci clocks: 4762306a36Sopenharmony_ci minItems: 1 4862306a36Sopenharmony_ci items: 4962306a36Sopenharmony_ci - description: USART Peripheral Clock 5062306a36Sopenharmony_ci - description: USART Generic Clock 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci dmas: 5362306a36Sopenharmony_ci items: 5462306a36Sopenharmony_ci - description: TX DMA Channel 5562306a36Sopenharmony_ci - description: RX DMA Channel 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci dma-names: 5862306a36Sopenharmony_ci items: 5962306a36Sopenharmony_ci - const: tx 6062306a36Sopenharmony_ci - const: rx 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci atmel,usart-mode: 6362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 6462306a36Sopenharmony_ci description: 6562306a36Sopenharmony_ci Must be either <AT91_USART_MODE_SPI> for SPI or 6662306a36Sopenharmony_ci <AT91_USART_MODE_SERIAL> for USART (found in dt-bindings/mfd/at91-usart.h). 6762306a36Sopenharmony_ci enum: [ 0, 1 ] 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci atmel,use-dma-rx: 7062306a36Sopenharmony_ci type: boolean 7162306a36Sopenharmony_ci description: use of PDC or DMA for receiving data 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci atmel,use-dma-tx: 7462306a36Sopenharmony_ci type: boolean 7562306a36Sopenharmony_ci description: use of PDC or DMA for transmitting data 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci atmel,fifo-size: 7862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 7962306a36Sopenharmony_ci description: 8062306a36Sopenharmony_ci Maximum number of data the RX and TX FIFOs can store for FIFO 8162306a36Sopenharmony_ci capable USARTS. 8262306a36Sopenharmony_ci enum: [ 16, 32 ] 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_cirequired: 8562306a36Sopenharmony_ci - compatible 8662306a36Sopenharmony_ci - reg 8762306a36Sopenharmony_ci - interrupts 8862306a36Sopenharmony_ci - clock-names 8962306a36Sopenharmony_ci - clocks 9062306a36Sopenharmony_ci - atmel,usart-mode 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciallOf: 9362306a36Sopenharmony_ci - if: 9462306a36Sopenharmony_ci properties: 9562306a36Sopenharmony_ci atmel,usart-mode: 9662306a36Sopenharmony_ci const: 1 9762306a36Sopenharmony_ci then: 9862306a36Sopenharmony_ci allOf: 9962306a36Sopenharmony_ci - $ref: /schemas/spi/spi-controller.yaml# 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci properties: 10262306a36Sopenharmony_ci atmel,use-dma-rx: false 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci atmel,use-dma-tx: false 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci atmel,fifo-size: false 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci "#size-cells": 10962306a36Sopenharmony_ci const: 0 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci "#address-cells": 11262306a36Sopenharmony_ci const: 1 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci required: 11562306a36Sopenharmony_ci - "#size-cells" 11662306a36Sopenharmony_ci - "#address-cells" 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci else: 11962306a36Sopenharmony_ci allOf: 12062306a36Sopenharmony_ci - $ref: /schemas/serial/serial.yaml# 12162306a36Sopenharmony_ci - $ref: /schemas/serial/rs485.yaml# 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ciunevaluatedProperties: false 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ciexamples: 12662306a36Sopenharmony_ci - | 12762306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 12862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 12962306a36Sopenharmony_ci #include <dt-bindings/mfd/at91-usart.h> 13062306a36Sopenharmony_ci #include <dt-bindings/dma/at91.h> 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci /* use PDC */ 13362306a36Sopenharmony_ci usart0: serial@fff8c000 { 13462306a36Sopenharmony_ci compatible = "atmel,at91sam9260-usart"; 13562306a36Sopenharmony_ci reg = <0xfff8c000 0x4000>; 13662306a36Sopenharmony_ci atmel,usart-mode = <AT91_USART_MODE_SERIAL>; 13762306a36Sopenharmony_ci interrupts = <7>; 13862306a36Sopenharmony_ci clocks = <&usart0_clk>; 13962306a36Sopenharmony_ci clock-names = "usart"; 14062306a36Sopenharmony_ci atmel,use-dma-rx; 14162306a36Sopenharmony_ci atmel,use-dma-tx; 14262306a36Sopenharmony_ci rts-gpios = <&pioD 15 GPIO_ACTIVE_LOW>; 14362306a36Sopenharmony_ci cts-gpios = <&pioD 16 GPIO_ACTIVE_LOW>; 14462306a36Sopenharmony_ci dtr-gpios = <&pioD 17 GPIO_ACTIVE_LOW>; 14562306a36Sopenharmony_ci dsr-gpios = <&pioD 18 GPIO_ACTIVE_LOW>; 14662306a36Sopenharmony_ci dcd-gpios = <&pioD 20 GPIO_ACTIVE_LOW>; 14762306a36Sopenharmony_ci rng-gpios = <&pioD 19 GPIO_ACTIVE_LOW>; 14862306a36Sopenharmony_ci }; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci - | 15162306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 15262306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 15362306a36Sopenharmony_ci #include <dt-bindings/mfd/at91-usart.h> 15462306a36Sopenharmony_ci #include <dt-bindings/dma/at91.h> 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci /* use DMA */ 15762306a36Sopenharmony_ci usart1: serial@f001c000 { 15862306a36Sopenharmony_ci compatible = "atmel,at91sam9260-usart"; 15962306a36Sopenharmony_ci reg = <0xf001c000 0x100>; 16062306a36Sopenharmony_ci atmel,usart-mode = <AT91_USART_MODE_SERIAL>; 16162306a36Sopenharmony_ci interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>; 16262306a36Sopenharmony_ci clocks = <&usart0_clk>; 16362306a36Sopenharmony_ci clock-names = "usart"; 16462306a36Sopenharmony_ci atmel,use-dma-rx; 16562306a36Sopenharmony_ci atmel,use-dma-tx; 16662306a36Sopenharmony_ci dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(3)>, 16762306a36Sopenharmony_ci <&dma0 2 (AT91_DMA_CFG_PER_ID(4) | AT91_DMA_CFG_FIFOCFG_ASAP)>; 16862306a36Sopenharmony_ci dma-names = "tx", "rx"; 16962306a36Sopenharmony_ci atmel,fifo-size = <32>; 17062306a36Sopenharmony_ci }; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci - | 17362306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 17462306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 17562306a36Sopenharmony_ci #include <dt-bindings/mfd/at91-usart.h> 17662306a36Sopenharmony_ci #include <dt-bindings/dma/at91.h> 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci /* SPI mode */ 17962306a36Sopenharmony_ci spi0: spi@f001c000 { 18062306a36Sopenharmony_ci compatible = "atmel,at91sam9260-usart"; 18162306a36Sopenharmony_ci reg = <0xf001c000 0x100>; 18262306a36Sopenharmony_ci #address-cells = <1>; 18362306a36Sopenharmony_ci #size-cells = <0>; 18462306a36Sopenharmony_ci atmel,usart-mode = <AT91_USART_MODE_SPI>; 18562306a36Sopenharmony_ci interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>; 18662306a36Sopenharmony_ci clocks = <&usart0_clk>; 18762306a36Sopenharmony_ci clock-names = "usart"; 18862306a36Sopenharmony_ci dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(3)>, 18962306a36Sopenharmony_ci <&dma0 2 (AT91_DMA_CFG_PER_ID(4) | AT91_DMA_CFG_FIFOCFG_ASAP)>; 19062306a36Sopenharmony_ci dma-names = "tx", "rx"; 19162306a36Sopenharmony_ci cs-gpios = <&pioB 3 GPIO_ACTIVE_HIGH>; 19262306a36Sopenharmony_ci }; 193