from DSP.
                  example "qcom,q6afe"
 
-= AFE DAIs (Digital 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 = "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>;
 
--- /dev/null
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/sound/qcom,q6dsp-lpass-ports.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Qualcomm DSP LPASS(Low Power Audio SubSystem) Audio Ports binding
+
+maintainers:
+  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+
+description: |
+  This binding describes the Qualcomm DSP LPASS Audio ports
+
+properties:
+  compatible:
+    enum:
+      - qcom,q6afe-dais
+
+  reg:
+    maxItems: 1
+
+  '#sound-dai-cells':
+    const: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+#Digital Audio Interfaces
+patternProperties:
+  '^dai@[0-9]+$':
+    type: object
+    description:
+      Q6DSP Digital Audio Interfaces.
+
+    properties:
+      reg:
+        description:
+          Digital Audio Interface ID
+
+      qcom,sd-lines:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        description:
+          List of serial data lines used by this dai.should be one or more of the 0-3 sd lines.
+        minItems: 1
+        maxItems: 4
+        uniqueItems: true
+        items:
+          minimum: 0
+          maximum: 3
+
+      qcom,tdm-sync-mode:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1, 2]
+        description:
+          TDM Synchronization mode
+            0 = Short sync bit mode
+            1 = Long sync mode
+            2 = Short sync slot mode
+
+      qcom,tdm-sync-src:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description:
+          TDM Synchronization source
+            0 = External source
+            1 = Internal source
+
+      qcom,tdm-data-out:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description:
+          TDM Data out signal to drive with other masters
+            0 = Disable
+            1 = Enable
+
+      qcom,tdm-invert-sync:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description:
+          TDM Invert the sync
+            0 = Normal
+            1 = Invert
+
+      qcom,tdm-data-delay:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1, 2]
+        description:
+          TDM Number of bit clock to delay data
+            0 = 0 bit clock cycle
+            1 = 1 bit clock cycle
+            2 = 2 bit clock cycle
+
+      qcom,tdm-data-align:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description:
+          Indicate how data is packed within the slot. For example, 32 slot
+          width in case of sample bit width is 24TDM Invert the sync.
+            0 = MSB
+            1 = LSB
+
+    required:
+      - reg
+
+    allOf:
+      - if:
+          properties:
+            reg:
+              contains:
+                # TDM DAI ID range from PRIMARY_TDM_RX_0 - QUINARY_TDM_TX_7
+                items:
+                  minimum: 24
+                  maximum: 103
+        then:
+          required:
+            - qcom,tdm-sync-mode
+            - qcom,tdm-sync-src
+            - qcom,tdm-data-out
+            - qcom,tdm-invert-sync
+            - qcom,tdm-data-delay
+            - qcom,tdm-data-align
+
+      - if:
+          properties:
+            reg:
+              contains:
+                # MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
+                # QUINARY_MI2S_RX - QUINARY_MI2S_TX
+                items:
+                  oneOf:
+                    - minimum: 16
+                      maximum: 23
+                    - minimum: 127
+                      maximum: 128
+        then:
+          required:
+            - qcom,sd-lines
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - "#sound-dai-cells"
+  - "#address-cells"
+  - "#size-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/soc/qcom,apr.h>
+    #include <dt-bindings/sound/qcom,q6afe.h>
+    apr {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        apr-service@4 {
+            reg = <APR_SVC_AFE>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            q6afedai@1 {
+              compatible = "qcom,q6afe-dais";
+              reg = <1>;
+              #address-cells = <1>;
+              #size-cells = <0>;
+              #sound-dai-cells = <1>;
+
+              dai@22 {
+                reg = <QUATERNARY_MI2S_RX>;
+                qcom,sd-lines = <0 1 2 3>;
+              };
+            };
+        };
+      };