96 lines
3.8 KiB
Plaintext
96 lines
3.8 KiB
Plaintext
Freescale Synchronous Audio Interface (SAI).
|
|
|
|
The SAI is based on I2S module that used communicating with audio codecs,
|
|
which provides a synchronous audio interface that supports fullduplex
|
|
serial interfaces with frame synchronization such as I2S, AC97, TDM, and
|
|
codec/DSP interfaces.
|
|
|
|
Required properties:
|
|
|
|
- compatible : Compatible list, contains "fsl,vf610-sai",
|
|
"fsl,imx6sx-sai", "fsl,imx6ul-sai",
|
|
"fsl,imx7ulp-sai", "fsl,imx8mq-sai",
|
|
"fsl,imx8qm-sai", "fsl,imx8mm-sai",
|
|
"fsl,imx8mn-sai", "fsl,imx8mp-sai", or
|
|
"fsl,imx8ulp-sai".
|
|
|
|
- reg : Offset and length of the register set for the device.
|
|
|
|
- clocks : Must contain an entry for each entry in clock-names.
|
|
|
|
- clock-names : Must include the "bus" for register access and
|
|
"mclk1", "mclk2", "mclk3" for bit clock and frame
|
|
clock providing.
|
|
"pll8k", "pll11k" are optional, they are the clock
|
|
source for root clock, one is for 8kHz series rates
|
|
another one is for 11kHz series rates.
|
|
- dmas : Generic dma devicetree binding as described in
|
|
Documentation/devicetree/bindings/dma/dma.txt.
|
|
|
|
- dma-names : Two dmas have to be defined, "tx" and "rx".
|
|
|
|
- pinctrl-names : Must contain a "default" entry.
|
|
|
|
- pinctrl-NNN : One property must exist for each entry in
|
|
pinctrl-names. See ../pinctrl/pinctrl-bindings.txt
|
|
for details of the property values.
|
|
|
|
- lsb-first : Configures whether the LSB or the MSB is transmitted
|
|
first for the fifo data. If this property is absent,
|
|
the MSB is transmitted first as default, or the LSB
|
|
is transmitted first.
|
|
|
|
- fsl,sai-synchronous-rx: This is a boolean property. If present, indicating
|
|
that SAI will work in the synchronous mode (sync Tx
|
|
with Rx) which means both the transmitter and the
|
|
receiver will send and receive data by following
|
|
receiver's bit clocks and frame sync clocks.
|
|
|
|
- fsl,sai-asynchronous: This is a boolean property. If present, indicating
|
|
that SAI will work in the asynchronous mode, which
|
|
means both transmitter and receiver will send and
|
|
receive data by following their own bit clocks and
|
|
frame sync clocks separately.
|
|
|
|
- fsl,dataline : configure the dataline. it has 3 value for each configuration
|
|
first one means the type: I2S(1) or PDM(2)
|
|
second one is dataline mask for 'rx'
|
|
third one is dataline mask for 'tx'.
|
|
for example: fsl,dataline = <1 0xff 0xff 2 0xff 0x11>;
|
|
it means I2S type rx mask is 0xff, tx mask is 0xff, PDM type
|
|
rx mask is 0xff, tx mask is 0x11 (dataline 1 and 4 enabled).
|
|
|
|
Optional properties:
|
|
|
|
- big-endian : Boolean property, required if all the SAI
|
|
registers are big-endian rather than little-endian.
|
|
|
|
Optional properties (for mx6ul):
|
|
|
|
- fsl,sai-mclk-direction-output: This is a boolean property. If present,
|
|
indicates that SAI will output the SAI MCLK clock.
|
|
|
|
Note:
|
|
- If both fsl,sai-asynchronous and fsl,sai-synchronous-rx are absent, the
|
|
default synchronous mode (sync Rx with Tx) will be used, which means both
|
|
transmitter and receiver will send and receive data by following clocks
|
|
of transmitter.
|
|
- fsl,sai-asynchronous and fsl,sai-synchronous-rx are exclusive.
|
|
|
|
Example:
|
|
sai2: sai@40031000 {
|
|
compatible = "fsl,vf610-sai";
|
|
reg = <0x40031000 0x1000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_sai2_1>;
|
|
clocks = <&clks VF610_CLK_PLATFORM_BUS>,
|
|
<&clks VF610_CLK_SAI2>,
|
|
<&clks 0>, <&clks 0>;
|
|
clock-names = "bus", "mclk1", "mclk2", "mclk3";
|
|
dma-names = "tx", "rx";
|
|
dmas = <&edma0 0 VF610_EDMA_MUXID0_SAI2_TX>,
|
|
<&edma0 0 VF610_EDMA_MUXID0_SAI2_RX>;
|
|
big-endian;
|
|
lsb-first;
|
|
};
|