mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 19:31:53 +00:00
ca3e35c7a3
The SAI mainly has the following clocks: bus clock control and configure registers and to generate synchronous interrupts and DMA requests. mclk1, mclk2, mclk3 to generate the bit clock when the receiver or transmitter is configured for an internally generated bit clock. So this patch adds these clocks and their clock controls to the driver. [ To concern the old DTB cases, I've added a bit of extra code to make the driver compatible with them. And by marking clock NULL if failed to get, the clk_prepare() or clk_get_rate() would easily return 0 so no further path should be broken. -- by Nicolin ] Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com> Acked-by: Xiubo Li <Li.Xiubo@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
44 lines
1.8 KiB
Plaintext
44 lines
1.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" or "fsl,imx6sx-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.
|
|
- 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.
|
|
- big-endian-regs: If this property is absent, the little endian mode will
|
|
be in use as default, or the big endian mode will be in use for all the
|
|
device registers.
|
|
- big-endian-data: If this property is absent, the little endian mode will
|
|
be in use as default, or the big endian mode will be in use for all the
|
|
fifo data.
|
|
|
|
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-regs;
|
|
big-endian-data;
|
|
};
|