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 core and optional
		    wake IRQ

- interrupt-names:
	Usage: Optional
	Value type: boolean
	Value type: <stringlist>
	Definition: should be "core" for core and "wakeup" for wake interrupt.

- wakeup-source:
	Usage: Optional
	Value type: boolean
	Definition: should specify if SoundWire Controller is wake up capable.

- 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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    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{
		....
	};
};
