| 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>; |
| }; |
| }; |