202 lines
4.3 KiB
Plaintext
202 lines
4.3 KiB
Plaintext
|
Qualcomm Audio Front End (Q6AFE) binding
|
||
|
|
||
|
AFE is one of the APR audio service on Q6DSP
|
||
|
Please refer to qcom,apr.txt for details of the common apr service bindings
|
||
|
used by all apr services. Must contain the following properties.
|
||
|
|
||
|
- compatible:
|
||
|
Usage: required
|
||
|
Value type: <stringlist>
|
||
|
Definition: must be "qcom,q6afe-v<MAJOR-NUMBER>.<MINOR-NUMBER>"
|
||
|
Or "qcom,q6afe" where the version number can be queried
|
||
|
from DSP.
|
||
|
example "qcom,q6afe"
|
||
|
|
||
|
= AFE DAIs (Digial Audio Interface)
|
||
|
"dais" subnode of the AFE node. It represents afe dais, each afe dai is a
|
||
|
subnode of "dais" representing board specific dai setup.
|
||
|
"dais" node should have following properties followed by dai children.
|
||
|
|
||
|
- compatible:
|
||
|
Usage: required
|
||
|
Value type: <stringlist>
|
||
|
Definition: must be "qcom,q6afe-dais"
|
||
|
|
||
|
- #sound-dai-cells
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Must be 1
|
||
|
|
||
|
- #address-cells
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Must be 1
|
||
|
|
||
|
- #size-cells
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Must be 0
|
||
|
|
||
|
== AFE DAI is subnode of "dais" and represent a dai, it includes board specific
|
||
|
configuration of each dai. Must contain the following properties.
|
||
|
|
||
|
- reg
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Must be dai id
|
||
|
|
||
|
- qcom,sd-lines
|
||
|
Usage: required for mi2s interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Must be list of serial data lines used by this dai.
|
||
|
should be one or more of the 0-3 sd lines.
|
||
|
|
||
|
- qcom,tdm-sync-mode:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Synchronization mode.
|
||
|
0 - Short sync bit mode
|
||
|
1 - Long sync mode
|
||
|
2 - Short sync slot mode
|
||
|
|
||
|
- qcom,tdm-sync-src:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Synchronization source.
|
||
|
0 - External source
|
||
|
1 - Internal source
|
||
|
|
||
|
- qcom,tdm-data-out:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Data out signal to drive with other masters.
|
||
|
0 - Disable
|
||
|
1 - Enable
|
||
|
|
||
|
- qcom,tdm-invert-sync:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Invert the sync.
|
||
|
0 - Normal
|
||
|
1 - Invert
|
||
|
|
||
|
- qcom,tdm-data-delay:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Number of bit clock to delay data
|
||
|
with respect to sync edge.
|
||
|
0 - 0 bit clock cycle
|
||
|
1 - 1 bit clock cycle
|
||
|
2 - 2 bit clock cycle
|
||
|
|
||
|
- qcom,tdm-data-align:
|
||
|
Usage: required for tdm interface
|
||
|
Value type: <prop-encoded-array>
|
||
|
Definition: Indicate how data is packed
|
||
|
within the slot. For example, 32 slot width in case of
|
||
|
sample bit width is 24.
|
||
|
0 - MSB
|
||
|
1 - LSB
|
||
|
|
||
|
= AFE CLOCKSS
|
||
|
"clocks" subnode of the AFE node. It represents q6afe clocks
|
||
|
"clocks" node should have following properties.
|
||
|
- compatible:
|
||
|
Usage: required
|
||
|
Value type: <stringlist>
|
||
|
Definition: must be "qcom,q6afe-clocks"
|
||
|
|
||
|
- #clock-cells:
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Must be 2. Clock Id followed by
|
||
|
below valid clock coupling attributes.
|
||
|
1 - for no coupled clock
|
||
|
2 - for dividend of the coupled clock
|
||
|
3 - for divisor of the coupled clock
|
||
|
4 - for inverted and no couple clock
|
||
|
|
||
|
= EXAMPLE
|
||
|
|
||
|
apr-service@4 {
|
||
|
compatible = "qcom,q6afe";
|
||
|
reg = <APR_SVC_AFE>;
|
||
|
|
||
|
dais {
|
||
|
compatible = "qcom,q6afe-dais";
|
||
|
#sound-dai-cells = <1>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
|
||
|
dai@1 {
|
||
|
reg = <HDMI_RX>;
|
||
|
};
|
||
|
|
||
|
dai@24 {
|
||
|
reg = <PRIMARY_TDM_RX_0>;
|
||
|
qcom,tdm-sync-mode = <1>:
|
||
|
qcom,tdm-sync-src = <1>;
|
||
|
qcom,tdm-data-out = <0>;
|
||
|
qcom,tdm-invert-sync = <1>;
|
||
|
qcom,tdm-data-delay = <1>;
|
||
|
qcom,tdm-data-align = <0>;
|
||
|
|
||
|
};
|
||
|
|
||
|
dai@25 {
|
||
|
reg = <PRIMARY_TDM_TX_0>;
|
||
|
qcom,tdm-sync-mode = <1>:
|
||
|
qcom,tdm-sync-src = <1>;
|
||
|
qcom,tdm-data-out = <0>;
|
||
|
qcom,tdm-invert-sync = <1>;
|
||
|
qcom,tdm-data-delay <1>:
|
||
|
qcom,tdm-data-align = <0>;
|
||
|
};
|
||
|
|
||
|
dai@16 {
|
||
|
reg = <PRIMARY_MI2S_RX>;
|
||
|
qcom,sd-lines = <0 2>;
|
||
|
};
|
||
|
|
||
|
dai@17 {
|
||
|
reg = <PRIMARY_MI2S_TX>;
|
||
|
qcom,sd-lines = <1>;
|
||
|
};
|
||
|
|
||
|
dai@18 {
|
||
|
reg = <SECONDARY_MI2S_RX>;
|
||
|
qcom,sd-lines = <0 3>;
|
||
|
};
|
||
|
|
||
|
dai@19 {
|
||
|
reg = <SECONDARY_MI2S_TX>;
|
||
|
qcom,sd-lines = <1>;
|
||
|
};
|
||
|
|
||
|
dai@20 {
|
||
|
reg = <TERTIARY_MI2S_RX>;
|
||
|
qcom,sd-lines = <1 3>;
|
||
|
};
|
||
|
|
||
|
dai@21 {
|
||
|
reg = <TERTIARY_MI2S_TX>;
|
||
|
qcom,sd-lines = <0>;
|
||
|
};
|
||
|
|
||
|
dai@22 {
|
||
|
reg = <QUATERNARY_MI2S_RX>;
|
||
|
qcom,sd-lines = <0>;
|
||
|
};
|
||
|
|
||
|
dai@23 {
|
||
|
reg = <QUATERNARY_MI2S_TX>;
|
||
|
qcom,sd-lines = <1>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
clocks {
|
||
|
compatible = "qcom,q6afe-clocks";
|
||
|
#clock-cells = <2>;
|
||
|
};
|
||
|
};
|