xref: /freebsd/sys/contrib/device-tree/Bindings/soundwire/qcom,sdw.txt (revision d5b0e70f7e04d971691517ce1304d86a1e367e2e)
1c66ec88fSEmmanuel VadotQualcomm SoundWire Controller Bindings
2c66ec88fSEmmanuel Vadot
3c66ec88fSEmmanuel Vadot
4c66ec88fSEmmanuel VadotThis binding describes the Qualcomm SoundWire Controller along with its
5c66ec88fSEmmanuel Vadotboard specific bus parameters.
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadot- compatible:
8c66ec88fSEmmanuel Vadot	Usage: required
9c66ec88fSEmmanuel Vadot	Value type: <stringlist>
10c66ec88fSEmmanuel Vadot	Definition: must be "qcom,soundwire-v<MAJOR>.<MINOR>.<STEP>",
11c66ec88fSEmmanuel Vadot		    Example:
12c66ec88fSEmmanuel Vadot			"qcom,soundwire-v1.3.0"
13c66ec88fSEmmanuel Vadot			"qcom,soundwire-v1.5.0"
146be33864SEmmanuel Vadot			"qcom,soundwire-v1.5.1"
15c66ec88fSEmmanuel Vadot			"qcom,soundwire-v1.6.0"
16c66ec88fSEmmanuel Vadot- reg:
17c66ec88fSEmmanuel Vadot	Usage: required
18c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
19c66ec88fSEmmanuel Vadot	Definition: the base address and size of SoundWire controller
20c66ec88fSEmmanuel Vadot		    address space.
21c66ec88fSEmmanuel Vadot
22c66ec88fSEmmanuel Vadot- interrupts:
23c66ec88fSEmmanuel Vadot	Usage: required
24c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
25c9ccf3a3SEmmanuel Vadot	Definition: should specify the SoundWire Controller core and optional
26c9ccf3a3SEmmanuel Vadot		    wake IRQ
27c9ccf3a3SEmmanuel Vadot
28c9ccf3a3SEmmanuel Vadot- interrupt-names:
29c9ccf3a3SEmmanuel Vadot	Usage: Optional
30c9ccf3a3SEmmanuel Vadot	Value type: boolean
31c9ccf3a3SEmmanuel Vadot	Value type: <stringlist>
32c9ccf3a3SEmmanuel Vadot	Definition: should be "core" for core and "wakeup" for wake interrupt.
33c9ccf3a3SEmmanuel Vadot
34c9ccf3a3SEmmanuel Vadot- wakeup-source:
35c9ccf3a3SEmmanuel Vadot	Usage: Optional
36c9ccf3a3SEmmanuel Vadot	Value type: boolean
37c9ccf3a3SEmmanuel Vadot	Definition: should specify if SoundWire Controller is wake up capable.
38c66ec88fSEmmanuel Vadot
39c66ec88fSEmmanuel Vadot- clock-names:
40c66ec88fSEmmanuel Vadot	Usage: required
41c66ec88fSEmmanuel Vadot	Value type: <stringlist>
42c66ec88fSEmmanuel Vadot	Definition: should be "iface" for SoundWire Controller interface clock
43c66ec88fSEmmanuel Vadot
44c66ec88fSEmmanuel Vadot- clocks:
45c66ec88fSEmmanuel Vadot	Usage: required
46c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
47c66ec88fSEmmanuel Vadot	Definition: should specify the SoundWire Controller interface clock
48c66ec88fSEmmanuel Vadot
49c66ec88fSEmmanuel Vadot- #sound-dai-cells:
50c66ec88fSEmmanuel Vadot	Usage: required
51c66ec88fSEmmanuel Vadot	Value type: <u32>
52c66ec88fSEmmanuel Vadot	Definition: must be 1 for digital audio interfaces on the controller.
53c66ec88fSEmmanuel Vadot
54c66ec88fSEmmanuel Vadot- qcom,dout-ports:
55c66ec88fSEmmanuel Vadot	Usage: required
56c66ec88fSEmmanuel Vadot	Value type: <u32>
57c66ec88fSEmmanuel Vadot	Definition: must be count of data out ports
58c66ec88fSEmmanuel Vadot
59c66ec88fSEmmanuel Vadot- qcom,din-ports:
60c66ec88fSEmmanuel Vadot	Usage: required
61c66ec88fSEmmanuel Vadot	Value type: <u32>
62c66ec88fSEmmanuel Vadot	Definition: must be count of data in ports
63c66ec88fSEmmanuel Vadot
64c66ec88fSEmmanuel Vadot- qcom,ports-offset1:
65c66ec88fSEmmanuel Vadot	Usage: required
66c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
67c66ec88fSEmmanuel Vadot	Definition: should specify payload transport window offset1 of each
68c66ec88fSEmmanuel Vadot		    data port. Out ports followed by In ports.
692eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
702eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
71c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel Vadot- qcom,ports-offset2:
74c66ec88fSEmmanuel Vadot	Usage: required
75c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
76c66ec88fSEmmanuel Vadot	Definition: should specify payload transport window offset2 of each
77c66ec88fSEmmanuel Vadot		    data port. Out ports followed by In ports.
782eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
792eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
80c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
81c66ec88fSEmmanuel Vadot
82c66ec88fSEmmanuel Vadot- qcom,ports-sinterval-low:
83c66ec88fSEmmanuel Vadot	Usage: required
84c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
85c66ec88fSEmmanuel Vadot	Definition: should be sample interval low of each data port.
86c66ec88fSEmmanuel Vadot		    Out ports followed by In ports. Used for Sample Interval
87c66ec88fSEmmanuel Vadot		    calculation.
882eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
892eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
90c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot- qcom,ports-word-length:
93c66ec88fSEmmanuel Vadot	Usage: optional
94c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
95c66ec88fSEmmanuel Vadot	Definition: should be size of payload channel sample.
962eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
972eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
98c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
99c66ec88fSEmmanuel Vadot
100c66ec88fSEmmanuel Vadot- qcom,ports-block-pack-mode:
101c66ec88fSEmmanuel Vadot	Usage: optional
102c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
103c66ec88fSEmmanuel Vadot	Definition: should be 0 or 1 to indicate the block packing mode.
104c66ec88fSEmmanuel Vadot		    0 to indicate Blocks are per Channel
105c66ec88fSEmmanuel Vadot		    1 to indicate Blocks are per Port.
106c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1072eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1082eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
109c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
110c66ec88fSEmmanuel Vadot
111c66ec88fSEmmanuel Vadot- qcom,ports-block-group-count:
112c66ec88fSEmmanuel Vadot	Usage: optional
113c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
114c66ec88fSEmmanuel Vadot	Definition: should be in range 1 to 4 to indicate how many sample
115c66ec88fSEmmanuel Vadot		    intervals are combined into a payload.
116c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1172eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1182eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
119c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
120c66ec88fSEmmanuel Vadot
121c66ec88fSEmmanuel Vadot- qcom,ports-lane-control:
122c66ec88fSEmmanuel Vadot	Usage: optional
123c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
124c66ec88fSEmmanuel Vadot	Definition: should be in range 0 to 7 to identify which	data lane
125c66ec88fSEmmanuel Vadot		    the data port uses.
126c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1272eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1282eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
129c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
130c66ec88fSEmmanuel Vadot
131c66ec88fSEmmanuel Vadot- qcom,ports-hstart:
132c66ec88fSEmmanuel Vadot	Usage: optional
133c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
134c66ec88fSEmmanuel Vadot	Definition: should be number identifying lowerst numbered coloum in
135c66ec88fSEmmanuel Vadot		    SoundWire Frame, i.e. left edge of the Transport sub-frame
136c66ec88fSEmmanuel Vadot		    for each port. Values between 0 and 15 are valid.
137c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1382eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1392eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
140c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
141c66ec88fSEmmanuel Vadot
142c66ec88fSEmmanuel Vadot- qcom,ports-hstop:
143c66ec88fSEmmanuel Vadot	Usage: optional
144c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
145c66ec88fSEmmanuel Vadot	Definition: should be number identifying highest numbered coloum in
146c66ec88fSEmmanuel Vadot		    SoundWire Frame, i.e. the right edge of the Transport
147c66ec88fSEmmanuel Vadot		    sub-frame for each port. Values between 0 and 15 are valid.
148c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1492eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1502eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
151c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
152c66ec88fSEmmanuel Vadot
153c66ec88fSEmmanuel Vadot- qcom,dports-type:
154c66ec88fSEmmanuel Vadot	Usage: optional
155c66ec88fSEmmanuel Vadot	Value type: <prop-encoded-array>
156c66ec88fSEmmanuel Vadot	Definition: should be one of the following types
157c66ec88fSEmmanuel Vadot		    0 for reduced port
158c66ec88fSEmmanuel Vadot		    1 for simple ports
159c66ec88fSEmmanuel Vadot		    2 for full port
160c66ec88fSEmmanuel Vadot		    Out ports followed by In ports.
1612eb4d8dcSEmmanuel Vadot		    Value of 0xFF indicates that this option is not implemented
1622eb4d8dcSEmmanuel Vadot		    or applicable for the respective data port.
163c66ec88fSEmmanuel Vadot		    More info in MIPI Alliance SoundWire 1.0 Specifications.
164c66ec88fSEmmanuel Vadot
165*d5b0e70fSEmmanuel Vadot- reset:
166*d5b0e70fSEmmanuel Vadot	Usage: optional
167*d5b0e70fSEmmanuel Vadot	Value type: <prop-encoded-array>
168*d5b0e70fSEmmanuel Vadot	Definition: Should specify the SoundWire audio CSR reset controller interface,
169*d5b0e70fSEmmanuel Vadot		    which is required for SoundWire version 1.6.0 and above.
170*d5b0e70fSEmmanuel Vadot
171*d5b0e70fSEmmanuel Vadot- reset-names:
172*d5b0e70fSEmmanuel Vadot	Usage: optional
173*d5b0e70fSEmmanuel Vadot	Value type: <stringlist>
174*d5b0e70fSEmmanuel Vadot	Definition: should be "swr_audio_cgcr" for SoundWire audio CSR reset
175*d5b0e70fSEmmanuel Vadot		    controller interface.
176*d5b0e70fSEmmanuel Vadot
177c66ec88fSEmmanuel VadotNote:
178c66ec88fSEmmanuel Vadot	More Information on detail of encoding of these fields can be
179c66ec88fSEmmanuel Vadotfound in MIPI Alliance SoundWire 1.0 Specifications.
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot= SoundWire devices
182c66ec88fSEmmanuel VadotEach subnode of the bus represents SoundWire device attached to it.
183c66ec88fSEmmanuel VadotThe properties of these nodes are defined by the individual bindings.
184c66ec88fSEmmanuel Vadot
185c66ec88fSEmmanuel Vadot= EXAMPLE
186c66ec88fSEmmanuel VadotThe following example represents a SoundWire controller on DB845c board
187c66ec88fSEmmanuel Vadotwhich has controller integrated inside WCD934x codec on SDM845 SoC.
188c66ec88fSEmmanuel Vadot
189c66ec88fSEmmanuel Vadotsoundwire: soundwire@c85 {
190c66ec88fSEmmanuel Vadot	compatible = "qcom,soundwire-v1.3.0";
191c66ec88fSEmmanuel Vadot	reg = <0xc85 0x20>;
192c66ec88fSEmmanuel Vadot	interrupts = <20 IRQ_TYPE_EDGE_RISING>;
193c66ec88fSEmmanuel Vadot	clocks = <&wcc>;
194c66ec88fSEmmanuel Vadot	clock-names = "iface";
195*d5b0e70fSEmmanuel Vadot	resets = <&lpass_audiocc LPASS_AUDIO_SWR_TX_CGCR>;
196*d5b0e70fSEmmanuel Vadot	reset-names = "swr_audio_cgcr";
197c66ec88fSEmmanuel Vadot	#sound-dai-cells = <1>;
198c66ec88fSEmmanuel Vadot	qcom,dports-type = <0>;
199c66ec88fSEmmanuel Vadot	qcom,dout-ports	= <6>;
200c66ec88fSEmmanuel Vadot	qcom,din-ports	= <2>;
201c66ec88fSEmmanuel Vadot	qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1F 0x3F 0x7 0x1F 0x3F 0x0F 0x0F>;
202c66ec88fSEmmanuel Vadot	qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0C 0x6 0x12 0x0D 0x07 0x0A >;
203c66ec88fSEmmanuel Vadot	qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1F 0x00 0x00 0x1F 0x00 0x00>;
204c66ec88fSEmmanuel Vadot
205c66ec88fSEmmanuel Vadot	/* Left Speaker */
206c66ec88fSEmmanuel Vadot	left{
207c66ec88fSEmmanuel Vadot		....
208c66ec88fSEmmanuel Vadot	};
209c66ec88fSEmmanuel Vadot
210c66ec88fSEmmanuel Vadot	/* Right Speaker */
211c66ec88fSEmmanuel Vadot	right{
212c66ec88fSEmmanuel Vadot		....
213c66ec88fSEmmanuel Vadot	};
214c66ec88fSEmmanuel Vadot};
215