xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/sound/fsl,asrc.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFreescale Asynchronous Sample Rate Converter (ASRC) Controller
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThe Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a
4*4882a593Smuzhiyunsignal associated with an input clock into a signal associated with a different
5*4882a593Smuzhiyunoutput clock. The driver currently works as a Front End of DPCM with other Back
6*4882a593SmuzhiyunEnds Audio controller such as ESAI, SSI and SAI. It has three pairs to support
7*4882a593Smuzhiyunthree substreams within totally 10 channels.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunRequired properties:
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun  - compatible		: Compatible list, should contain one of the following
12*4882a593Smuzhiyun			  compatibles:
13*4882a593Smuzhiyun			  "fsl,imx35-asrc",
14*4882a593Smuzhiyun			  "fsl,imx53-asrc",
15*4882a593Smuzhiyun			  "fsl,imx8qm-asrc",
16*4882a593Smuzhiyun			  "fsl,imx8qxp-asrc",
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun  - reg			: Offset and length of the register set for the device.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun  - interrupts		: Contains the spdif interrupt.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun  - dmas		: Generic dma devicetree binding as described in
23*4882a593Smuzhiyun			  Documentation/devicetree/bindings/dma/dma.txt.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun  - dma-names		: Contains "rxa", "rxb", "rxc", "txa", "txb" and "txc".
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun  - clocks		: Contains an entry for each entry in clock-names.
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun  - clock-names		: Contains the following entries
30*4882a593Smuzhiyun	"mem"		  Peripheral access clock to access registers.
31*4882a593Smuzhiyun	"ipg"		  Peripheral clock to driver module.
32*4882a593Smuzhiyun	"asrck_<0-f>"	  Clock sources for input and output clock.
33*4882a593Smuzhiyun	"spba"		  The spba clock is required when ASRC is placed as a
34*4882a593Smuzhiyun			  bus slave of the Shared Peripheral Bus and when two
35*4882a593Smuzhiyun			  or more bus masters (CPU, DMA or DSP) try to access
36*4882a593Smuzhiyun			  it. This property is optional depending on the SoC
37*4882a593Smuzhiyun			  design.
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun   - fsl,asrc-rate	: Defines a mutual sample rate used by DPCM Back Ends.
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun   - fsl,asrc-width	: Defines a mutual sample width used by DPCM Back Ends.
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun   - fsl,asrc-clk-map   : Defines clock map used in driver. which is required
44*4882a593Smuzhiyun			  by imx8qm/imx8qxp platform
45*4882a593Smuzhiyun			  <0> - select the map for asrc0 in imx8qm/imx8qxp
46*4882a593Smuzhiyun			  <1> - select the map for asrc1 in imx8qm/imx8qxp
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunOptional properties:
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun   - big-endian		: If this property is absent, the little endian mode
51*4882a593Smuzhiyun			  will be in use as default. Otherwise, the big endian
52*4882a593Smuzhiyun			  mode will be in use for all the device registers.
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun   - fsl,asrc-format	: Defines a mutual sample format used by DPCM Back
55*4882a593Smuzhiyun			  Ends, which can replace the fsl,asrc-width.
56*4882a593Smuzhiyun			  The value is 2 (S16_LE), or 6 (S24_LE).
57*4882a593Smuzhiyun
58*4882a593SmuzhiyunExample:
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunasrc: asrc@2034000 {
61*4882a593Smuzhiyun	compatible = "fsl,imx53-asrc";
62*4882a593Smuzhiyun	reg = <0x02034000 0x4000>;
63*4882a593Smuzhiyun	interrupts = <0 50 IRQ_TYPE_LEVEL_HIGH>;
64*4882a593Smuzhiyun	clocks = <&clks 107>, <&clks 107>, <&clks 0>,
65*4882a593Smuzhiyun	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
66*4882a593Smuzhiyun	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
67*4882a593Smuzhiyun	       <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
68*4882a593Smuzhiyun	       <&clks 107>, <&clks 0>, <&clks 0>;
69*4882a593Smuzhiyun	clock-names = "mem", "ipg", "asrck0",
70*4882a593Smuzhiyun		"asrck_1", "asrck_2", "asrck_3", "asrck_4",
71*4882a593Smuzhiyun		"asrck_5", "asrck_6", "asrck_7", "asrck_8",
72*4882a593Smuzhiyun		"asrck_9", "asrck_a", "asrck_b", "asrck_c",
73*4882a593Smuzhiyun		"asrck_d", "asrck_e", "asrck_f";
74*4882a593Smuzhiyun	dmas = <&sdma 17 23 1>, <&sdma 18 23 1>, <&sdma 19 23 1>,
75*4882a593Smuzhiyun	     <&sdma 20 23 1>, <&sdma 21 23 1>, <&sdma 22 23 1>;
76*4882a593Smuzhiyun	dma-names = "rxa", "rxb", "rxc",
77*4882a593Smuzhiyun		"txa", "txb", "txc";
78*4882a593Smuzhiyun	fsl,asrc-rate  = <48000>;
79*4882a593Smuzhiyun	fsl,asrc-width = <16>;
80*4882a593Smuzhiyun};
81