| description: INFINEON XMC4XXX UART |
| |
| compatible: "infineon,xmc4xxx-uart" |
| |
| include: [uart-controller.yaml, pinctrl-device.yaml] |
| |
| properties: |
| reg: |
| required: true |
| |
| input-src: |
| description: | |
| Connects the UART receive line (USIC DX0 input) to a specific GPIO pin. |
| The USIC DX0 input is a multiplexer which connects to different GPIO pins. |
| Refer to the XMC4XXX reference manual for the GPIO pin/mux mappings. DX0G |
| is the loopback input line. |
| type: string |
| required: true |
| enum: |
| - "DX0A" |
| - "DX0B" |
| - "DX0C" |
| - "DX0D" |
| - "DX0E" |
| - "DX0F" |
| - "DX0G" |
| |
| pinctrl-0: |
| required: true |
| |
| pinctrl-names: |
| required: true |
| |
| fifo-start-offset: |
| description: | |
| Each USIC0..2 has a fifo that is shared between two channels. For example, |
| usic0ch0 and usic0ch1 will share the same fifo. This parameter defines an offset |
| where the tx and rx fifos will start. When sharing the fifo, the user must properly |
| define the offset based on the configuration of the other channel. The fifo has a |
| capacity of 64 entries. The tx/rx fifos are created on fifo-xx-size aligned |
| boundaries. |
| |
| required: true |
| type: int |
| |
| fifo-tx-size: |
| description: | |
| Fifo size used for buffering transmit bytes. A value of 0 implies that |
| the fifo is not used while transmitting. transmitting. If the UART is used in async mode |
| then fifo-tx-size should be set to 0. |
| required: true |
| type: int |
| enum: |
| - 0 |
| - 2 |
| - 4 |
| - 8 |
| - 16 |
| - 32 |
| - 64 |
| |
| fifo-rx-size: |
| description: | |
| Fifo size used for buffering received bytes. A value of 0 implies that |
| the fifo is not used while receiving. If the UART is used in async mode |
| then fifo-rx-size should be set to 0. |
| required: true |
| type: int |
| enum: |
| - 0 |
| - 2 |
| - 4 |
| - 8 |
| - 16 |
| - 32 |
| - 64 |
| |
| interrupts: |
| description: | |
| IRQ number and priority to use for interrupt driven UART. |
| USIC0..2 have their own interrupt range as follows: |
| USIC0 = [84, 89] |
| USIC1 = [90, 95] |
| USIC2 = [96, 101] |
| |
| dmas: |
| description: | |
| Optional TX & RX dma specifiers used by async UART. |
| |
| The dmas are referenced in the UART node using the following syntax: |
| dmas = <&dma1 1 0 XMC4XXX_SET_CONFIG(10,6)>, <&dma1 2 0 XMC4XXX_SET_CONFIG(11,6)>; |
| where the first entry is for the TX, and the second for RX. |
| |
| The parameters in the dma entry are: dma device phandle, dma channel, dma priority (0 is |
| lowest and 7 is highest), and an opaque entry for the dma line routing parameters set |
| by the macro XMC4XXX_SET_CONFIG(line, request_source). Use the following steps to properly |
| select parameters line, request_source: |
| 1. Select a dma device and a free dma channel. |
| 1. Select a free dma line. dma0 device can only connect to lines [0, 7] and |
| dma1 can connect to lines [8, 11]. |
| 2. For a given interrupt, calculate the service request (SR) number. Note the following |
| simple mapping: in USIC0 interrupt 84->SR0, interrupt 85->SR1, ... etc. |
| In USIC1, intterupt 90->SR0, 91->SR1, etc. |
| 3. Select request_source from Table "DMA Request Source Selection" in XMC4XXX reference |
| manual. |
| |
| For example, say we select interrupt 85 on USIC0, dma0, channel 3, priority 4, and line 7. |
| The interrupt would map to SR1. From Table "DMA Request Source Selection", request_source |
| would need to be set to 10 and the dts entry would be: |
| dma = <&dma0 3 4 XMC4XXX_SET_CONFIG(7,10) ... >; |
| |
| dma-names: |
| description: | |
| Required if the dmas property exists. Should be set to "tx" and "rx" |
| to match the dmas property. |
| |
| For example |
| dma-names = "tx", "rx"; |