Documentation / devicetree / bindings / serial / fsl-imx-uart.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/serial/fsl-imx-uart.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART)

maintainers:
  - Fabio Estevam <festevam@gmail.com>

properties:
  compatible:
    oneOf:
      - const: fsl,imx1-uart
      - const: fsl,imx21-uart
      - items:
          - enum:
              - fsl,imx25-uart
              - fsl,imx27-uart
              - fsl,imx31-uart
              - fsl,imx35-uart
              - fsl,imx50-uart
              - fsl,imx51-uart
              - fsl,imx53-uart
              - fsl,imx6q-uart
          - const: fsl,imx21-uart
      - items:
          - enum:
              - fsl,imx6sl-uart
              - fsl,imx6sll-uart
              - fsl,imx6sx-uart
          - const: fsl,imx6q-uart
          - const: fsl,imx21-uart
      - items:
          - enum:
              - fsl,imx6ul-uart
              - fsl,imx7d-uart
              - fsl,imx8mm-uart
              - fsl,imx8mn-uart
              - fsl,imx8mp-uart
              - fsl,imx8mq-uart
          - const: fsl,imx6q-uart

  reg:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: ipg
      - const: per

  dmas:
    items:
      - description: DMA controller phandle and request line for RX
      - description: DMA controller phandle and request line for TX

  dma-names:
    items:
      - const: rx
      - const: tx

  interrupts:
    items:
      - description: UART RX Interrupt
      - description: UART TX Interrupt
      - description: UART RTS Interrupt
    minItems: 1

  wakeup-source: true

  fsl,dte-mode:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      Indicate the uart works in DTE mode. The uart works in DCE mode by default.

  fsl,inverted-tx:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      Indicate that the hardware attached to the peripheral inverts the signal
      transmitted, and that the peripheral should invert its output using the
      INVT registers.

  fsl,inverted-rx:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      Indicate that the hardware attached to the peripheral inverts the signal
      received, and that the peripheral should invert its input using the
      INVR registers.

  fsl,dma-info:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2
    description: |
      First cell contains the size of DMA buffer chunks, second cell contains
      the amount of chunks used for the device. Multiplying both numbers is
      the total size of memory used for receiving data.
      When not being configured the system will use default settings, which
      are sensible for most use cases. If you need low latency processing on
      slow connections this needs to be configured appropriately.

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts

allOf:
  - $ref: serial.yaml#
  - $ref: rs485.yaml#

  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx1-uart
    then:
      properties:
        interrupts:
          minItems: 3
          maxItems: 3
    else:
      properties:
        interrupts:
          maxItems: 1

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/imx5-clock.h>
 
    aliases {
        serial0 = &uart1;
    };
 
    uart1: serial@73fbc000 {
        compatible = "fsl,imx51-uart", "fsl,imx21-uart";
        reg = <0x73fbc000 0x4000>;
        interrupts = <31>;
        clocks = <&clks IMX5_CLK_UART1_IPG_GATE>,
                 <&clks IMX5_CLK_UART1_PER_GATE>;
        clock-names = "ipg", "per";
        dmas = <&sdma 18 4 1>, <&sdma 19 4 2>;
        dma-names = "rx", "tx";
        uart-has-rtscts;
        fsl,dte-mode;
    };