summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/sound/renesas,rsnd.txt
blob: 503967ba39dba3e003c9c2b5e38aeac62e485eaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Renesas R-Car sound

Required properties:
- compatible			: "renesas,rcar_sound-<soctype>", fallbacks
				  "renesas,rcar_sound-gen1" if generation1, and
				  "renesas,rcar_sound-gen2" if generation2
				  Examples with soctypes are:
				    - "renesas,rcar_sound-r8a7790" (R-Car H2)
				    - "renesas,rcar_sound-r8a7791" (R-Car M2-W)
- reg				: Should contain the register physical address.
				  required register is
				   SRU/ADG/SSI      if generation1
				   SRU/ADG/SSIU/SSI if generation2
- rcar_sound,ssi		: Should contain SSI feature.
				  The number of SSI subnode should be same as HW.
				  see below for detail.
- rcar_sound,src		: Should contain SRC feature.
				  The number of SRC subnode should be same as HW.
				  see below for detail.
- rcar_sound,dvc		: Should contain DVC feature.
				  The number of DVC subnode should be same as HW.
				  see below for detail.
- rcar_sound,dai		: DAI contents.
				  The number of DAI subnode should be same as HW.
				  see below for detail.

SSI subnode properties:
- interrupts			: Should contain SSI interrupt for PIO transfer
- shared-pin			: if shared clock pin
- pio-transfer			: use PIO transfer mode
- no-busif			: BUSIF is not ussed when [mem -> SSI] via DMA case

SRC subnode properties:
no properties at this point

DAI subnode properties:
- playback			: list of playback modules
- capture			: list of capture  modules

Example:

rcar_sound: rcar_sound@ec500000 {
	#sound-dai-cells = <1>;
	compatible = "renesas,rcar_sound-r8a7791", "renesas,rcar_sound-gen2";
	reg =	<0 0xec500000 0 0x1000>, /* SCU */
		<0 0xec5a0000 0 0x100>,  /* ADG */
		<0 0xec540000 0 0x1000>, /* SSIU */
		<0 0xec541000 0 0x1280>; /* SSI */

	clocks = <&mstp10_clks R8A7790_CLK_SSI_ALL>,
		<&mstp10_clks R8A7790_CLK_SSI9>, <&mstp10_clks R8A7790_CLK_SSI8>,
		<&mstp10_clks R8A7790_CLK_SSI7>, <&mstp10_clks R8A7790_CLK_SSI6>,
		<&mstp10_clks R8A7790_CLK_SSI5>, <&mstp10_clks R8A7790_CLK_SSI4>,
		<&mstp10_clks R8A7790_CLK_SSI3>, <&mstp10_clks R8A7790_CLK_SSI2>,
		<&mstp10_clks R8A7790_CLK_SSI1>, <&mstp10_clks R8A7790_CLK_SSI0>,
		<&mstp10_clks R8A7790_CLK_SCU_SRC9>, <&mstp10_clks R8A7790_CLK_SCU_SRC8>,
		<&mstp10_clks R8A7790_CLK_SCU_SRC7>, <&mstp10_clks R8A7790_CLK_SCU_SRC6>,
		<&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
		<&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
		<&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
		<&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
		<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
	clock-names = "ssi-all",
			"ssi.9", "ssi.8", "ssi.7", "ssi.6", "ssi.5",
			"ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
			"src.9", "src.8", "src.7", "src.6", "src.5",
			"src.4", "src.3", "src.2", "src.1", "src.0",
			"dvc.0", "dvc.1",
			"clk_a", "clk_b", "clk_c", "clk_i";

	rcar_sound,dvc {
		dvc0: dvc@0 { };
		dvc1: dvc@1 { };
	};

	rcar_sound,src {
		src0: src@0 {
			interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
		};
		src1: src@1 {
			interrupts = <0 353 IRQ_TYPE_LEVEL_HIGH>;
		};
		src2: src@2 {
			interrupts = <0 354 IRQ_TYPE_LEVEL_HIGH>;
		};
		src3: src@3 {
			interrupts = <0 355 IRQ_TYPE_LEVEL_HIGH>;
		};
		src4: src@4 {
			interrupts = <0 356 IRQ_TYPE_LEVEL_HIGH>;
		};
		src5: src@5 {
			interrupts = <0 357 IRQ_TYPE_LEVEL_HIGH>;
		};
		src6: src@6 {
			interrupts = <0 358 IRQ_TYPE_LEVEL_HIGH>;
		};
		src7: src@7 {
			interrupts = <0 359 IRQ_TYPE_LEVEL_HIGH>;
		};
		src8: src@8 {
			interrupts = <0 360 IRQ_TYPE_LEVEL_HIGH>;
		};
		src9: src@9 {
			interrupts = <0 361 IRQ_TYPE_LEVEL_HIGH>;
		};
	};

	rcar_sound,ssi {
		ssi0: ssi@0 {
			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi1: ssi@1 {
			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi2: ssi@2 {
			interrupts = <0 372 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi3: ssi@3 {
			interrupts = <0 373 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi4: ssi@4 {
			interrupts = <0 374 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi5: ssi@5 {
			interrupts = <0 375 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi6: ssi@6 {
			interrupts = <0 376 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi7: ssi@7 {
			interrupts = <0 377 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi8: ssi@8 {
			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>;
		};
		ssi9: ssi@9 {
			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>;
		};
	};

	rcar_sound,dai {
		dai0 {
			playback = <&ssi5 &src5>;
			capture  = <&ssi6>;
		};
		dai1 {
			playback = <&ssi3>;
		};
		dai2 {
			capture  = <&ssi4>;
		};
		dai3 {
			playback = <&ssi7>;
		};
		dai4 {
			capture  = <&ssi8>;
		};
	};
};
OpenPOWER on IntegriCloud