80 lines
2.8 KiB
YAML
80 lines
2.8 KiB
YAML
# Copyright (c) 2022 Schlumberger
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: INFINEON XMC4XXX SPI controller
|
|
|
|
compatible: "infineon,xmc4xxx-spi"
|
|
|
|
include: [spi-controller.yaml, pinctrl-device.yaml]
|
|
|
|
properties:
|
|
reg:
|
|
required: true
|
|
|
|
miso-src:
|
|
description: |
|
|
Connects the SPI miso 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"
|
|
|
|
interrupts:
|
|
description: |
|
|
IRQ number and priority to use for interrupt driven SPI. If DMA is not used (enabled using
|
|
option CONFIG_SPI_XMC4XXX_DMA) then only one, for receiving, labelled with "rx" needs to be
|
|
set. When using DMA, two interrupts labelled "tx" and "rx" must be set.
|
|
Each USIC must use a certain interrupt range:
|
|
USIC0 = [84, 89]
|
|
USIC1 = [90, 95]
|
|
USIC2 = [96, 101]
|
|
|
|
dmas:
|
|
description: |
|
|
Optional TX & RX dma specifiers.
|
|
|
|
The dmas are referenced in the USIC/SPI 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, interrupt 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";
|
|
|
|
pinctrl-0:
|
|
required: true
|
|
|
|
pinctrl-names:
|
|
required: true
|