Qualcomm SoundWire Controller Bindings


This binding describes the Qualcomm SoundWire Controller along with its
board specific bus parameters.

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,soundwire-v<MAJOR>.<MINOR>.<STEP>",
		    Example:
			"qcom,soundwire-v1.3.0"
			"qcom,soundwire-v1.5.0"
			"qcom,soundwire-v1.5.1"
			"qcom,soundwire-v1.6.0"
- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: the base address and size of SoundWire controller
		    address space.

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the SoundWire Controller IRQ

- clock-names:
	Usage: required
	Value type: <stringlist>
	Definition: should be "iface" for SoundWire Controller interface clock

- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the SoundWire Controller interface clock

- #sound-dai-cells:
	Usage: required
	Value type: <u32>
	Definition: must be 1 for digital audio interfaces on the controller.

- qcom,dout-ports:
	Usage: required
	Value type: <u32>
	Definition: must be count of data out ports

- qcom,din-ports:
	Usage: required
	Value type: <u32>
	Definition: must be count of data in ports

- qcom,ports-offset1:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify payload transport window offset1 of each
		    data port. Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-offset2:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify payload transport window offset2 of each
		    data port. Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-sinterval-low:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should be sample interval low of each data port.
		    Out ports followed by In ports. Used for Sample Interval
		    calculation.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-word-length:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be size of payload channel sample.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-block-pack-mode:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be 0 or 1 to indicate the block packing mode.
		    0 to indicate Blocks are per Channel
		    1 to indicate Blocks are per Port.
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-block-group-count:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be in range 1 to 4 to indicate how many sample
		    intervals are combined into a payload.
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-lane-control:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be in range 0 to 7 to identify which	data lane
		    the data port uses.
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-hstart:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be number identifying lowerst numbered coloum in
		    SoundWire Frame, i.e. left edge of the Transport sub-frame
		    for each port. Values between 0 and 15 are valid.
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-hstop:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be number identifying highest numbered coloum in
		    SoundWire Frame, i.e. the right edge of the Transport
		    sub-frame for each port. Values between 0 and 15 are valid.
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,dports-type:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be one of the following types
		    0 for reduced port
		    1 for simple ports
		    2 for full port
		    Out ports followed by In ports.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

Note:
	More Information on detail of encoding of these fields can be
found in MIPI Alliance SoundWire 1.0 Specifications.

= SoundWire devices
Each subnode of the bus represents SoundWire device attached to it.
The properties of these nodes are defined by the individual bindings.

= EXAMPLE
The following example represents a SoundWire controller on DB845c board
which has controller integrated inside WCD934x codec on SDM845 SoC.

soundwire: soundwire@c85 {
	compatible = "qcom,soundwire-v1.3.0";
	reg = <0xc85 0x20>;
	interrupts = <20 IRQ_TYPE_EDGE_RISING>;
	clocks = <&wcc>;
	clock-names = "iface";
	#sound-dai-cells = <1>;
	qcom,dports-type = <0>;
	qcom,dout-ports	= <6>;
	qcom,din-ports	= <2>;
	qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1F 0x3F 0x7 0x1F 0x3F 0x0F 0x0F>;
	qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0C 0x6 0x12 0x0D 0x07 0x0A >;
	qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1F 0x00 0x00 0x1F 0x00 0x00>;

	/* Left Speaker */
	left{
		....
	};

	/* Right Speaker */
	right{
		....
	};
};
