diff mbox series

[v4,01/20] soc: dt-bindings: qcom: apr: convert to yaml

Message ID 20210809112339.8368-2-srinivas.kandagatla@linaro.org
State Superseded
Headers show
Series ASoC: qcom: Add AudioReach support | expand

Commit Message

Srinivas Kandagatla Aug. 9, 2021, 11:23 a.m. UTC
Convert APR bindings to yaml format so that we could add new bindings support.

All the dsp services bindings are now part of apr bindings instead
of adding them to audio bindings.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

---
 .../devicetree/bindings/soc/qcom/qcom,apr.txt | 134 ------------------
 .../bindings/soc/qcom/qcom,apr.yaml           | 127 +++++++++++++++++
 2 files changed, 127 insertions(+), 134 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

-- 
2.21.0

Comments

Rob Herring (Arm) Aug. 13, 2021, 10:23 p.m. UTC | #1
On Mon, Aug 09, 2021 at 12:23:20PM +0100, Srinivas Kandagatla wrote:
> Convert APR bindings to yaml format so that we could add new bindings support.

> 

> All the dsp services bindings are now part of apr bindings instead

> of adding them to audio bindings.

> 

> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> ---

>  .../devicetree/bindings/soc/qcom/qcom,apr.txt | 134 ------------------

>  .../bindings/soc/qcom/qcom,apr.yaml           | 127 +++++++++++++++++

>  2 files changed, 127 insertions(+), 134 deletions(-)

>  delete mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

>  create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

> 

> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

> deleted file mode 100644

> index 2e2f6dc351c0..000000000000

> --- a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

> +++ /dev/null

> @@ -1,134 +0,0 @@

> -Qualcomm APR (Asynchronous Packet Router) binding

> -

> -This binding describes the Qualcomm APR. APR is a IPC protocol for

> -communication between Application processor and QDSP. APR is mainly

> -used for audio/voice services on the QDSP.

> -

> -- compatible:

> -	Usage: required

> -	Value type: <stringlist>

> -	Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"

> -

> -- qcom,apr-domain

> -	Usage: required

> -	Value type: <u32>

> -	Definition: Destination processor ID.

> -	Possible values are :

> -			1 - APR simulator

> -			2 - PC

> -			3 - MODEM

> -			4 - ADSP

> -			5 - APPS

> -			6 - MODEM2

> -			7 - APPS2

> -

> -= APR SERVICES

> -Each subnode of the APR node represents service tied to this apr. The name

> -of the nodes are not important. The properties of these nodes are defined

> -by the individual bindings for the specific service

> -- All APR services MUST contain the following property:

> -

> -- reg

> -	Usage: required

> -	Value type: <u32>

> -	Definition: APR Service ID

> -	Possible values are :

> -			3 - DSP Core Service

> -			4 - Audio Front End Service.

> -			5 - Voice Stream Manager Service.

> -			6 - Voice processing manager.

> -			7 - Audio Stream Manager Service.

> -			8 - Audio Device Manager Service.

> -			9 - Multimode voice manager.

> -			10 - Core voice stream.

> -			11 - Core voice processor.

> -			12 - Ultrasound stream manager.

> -			13 - Listen stream manager.

> -

> -- qcom,protection-domain

> -	Usage: optional

> -	Value type: <stringlist>

> -	Definition: Must list the protection domain service name and path

> -		    that the particular apr service has a dependency on.

> -	Possible values are :

> -			"avs/audio", "msm/adsp/audio_pd".

> -			"kernel/elf_loader", "msm/modem/wlan_pd".

> -			"tms/servreg", "msm/adsp/audio_pd".

> -			"tms/servreg", "msm/modem/wlan_pd".

> -			"tms/servreg", "msm/slpi/sensor_pd".

> -

> -= EXAMPLE

> -The following example represents a QDSP based sound card on a MSM8996 device

> -which uses apr as communication between Apps and QDSP.

> -

> -	apr {

> -		compatible = "qcom,apr-v2";

> -		qcom,apr-domain = <APR_DOMAIN_ADSP>;

> -

> -		apr-service@3 {

> -			compatible = "qcom,q6core";

> -			reg = <APR_SVC_ADSP_CORE>;

> -		};

> -

> -		apr-service@4 {

> -			compatible = "qcom,q6afe";

> -			reg = <APR_SVC_AFE>;

> -

> -			dais {

> -				#sound-dai-cells = <1>;

> -				dai@1 {

> -					reg = <HDMI_RX>;

> -				};

> -			};

> -		};

> -

> -		apr-service@7 {

> -			compatible = "qcom,q6asm";

> -			reg = <APR_SVC_ASM>;

> -			...

> -		};

> -

> -		apr-service@8 {

> -			compatible = "qcom,q6adm";

> -			reg = <APR_SVC_ADM>;

> -			...

> -		};

> -	};

> -

> -= EXAMPLE 2

> -The following example represents a QDSP based sound card with protection domain

> -dependencies specified. Here some of the apr services are dependent on services

> -running on protection domain hosted on ADSP/SLPI remote processors while others

> -have no such dependency.

> -

> -	apr {

> -		compatible = "qcom,apr-v2";

> -		qcom,glink-channels = "apr_audio_svc";

> -		qcom,apr-domain = <APR_DOMAIN_ADSP>;

> -

> -		apr-service@3 {

> -			compatible = "qcom,q6core";

> -			reg = <APR_SVC_ADSP_CORE>;

> -		};

> -

> -		q6afe: apr-service@4 {

> -			compatible = "qcom,q6afe";

> -			reg = <APR_SVC_AFE>;

> -			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> -			...

> -		};

> -

> -		q6asm: apr-service@7 {

> -			compatible = "qcom,q6asm";

> -			reg = <APR_SVC_ASM>;

> -			qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";

> -			...

> -		};

> -

> -		q6adm: apr-service@8 {

> -			compatible = "qcom,q6adm";

> -			reg = <APR_SVC_ADM>;

> -			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> -			...

> -		};

> -	};

> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

> new file mode 100644

> index 000000000000..12650f7084f4

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

> @@ -0,0 +1,127 @@

> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

> +%YAML 1.2

> +---

> +$id: "http://devicetree.org/schemas/soc/qcom/qcom,apr.yaml#"

> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

> +

> +title: Qualcomm APR (Asynchronous Packet Router) binding

> +

> +maintainers:

> +  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> +

> +description: |

> +  This binding describes the Qualcomm APR, APR is a IPC protocol for

> +  communication between Application processor and QDSP. APR is mainly

> +  used for audio/voice services on the QDSP.

> +

> +properties:

> +  compatible:

> +    enum:

> +      - qcom,apr


This wasn't a valid compatible before.

> +      - qcom,apr-v2

> +

> +  qcom,apr-domain:

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +    enum: [1, 2, 3, 4, 5, 6, 7]

> +    description:

> +      Selects the processor domain for apr

> +        1 = APR simulator

> +        2 = PC Domain

> +        3 = Modem Domain

> +        4 = ADSP Domain

> +        5 = Application processor Domain

> +        6 = Modem2 Domain

> +        7 = Application Processor2 Domain

> +

> +  '#address-cells':

> +    const: 1

> +

> +  '#size-cells':

> +    const: 0

> +

> +#APR Services

> +patternProperties:

> +  "^apr-service@[0-9a-e]$":


Based on reg, this should be: [3-9a-d]

> +    type: object

> +    description:

> +      APR node's client devices use subnodes for desired static port services.

> +

> +    properties:

> +      compatible:

> +        enum:

> +          - qcom,q6core

> +          - qcom,q6asm

> +          - qcom,q6afe

> +          - qcom,q6adm

> +

> +      reg:

> +        enum: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

> +        description:

> +          APR Service ID

> +            3 = DSP Core Service

> +            4 = Audio  Front End Service.

> +            5 = Voice Stream Manager Service.

> +            6 = Voice processing manager.

> +            7 = Audio Stream Manager Service.

> +            8 = Audio Device Manager Service.

> +            9 = Multimode voice manager.

> +            10 = Core voice stream.

> +            11 = Core voice processor.

> +            12 = Ultrasound stream manager.

> +            13 = Listen stream manager.

> +

> +      qcom,protection-domain:

> +        $ref: /schemas/types.yaml#/definitions/string-array

> +        description: protection domain service name and path for apr service

> +          has dependency on.

> +        items:

> +          - const: avs/audio

> +          - const: msm/adsp/audio_pd


You've dropped a bunch of possible values.

> +

> +      '#address-cells':

> +        const: 1

> +

> +      '#size-cells':

> +        const: 0

> +

> +    additionalProperties: false

> +

> +required:

> +  - compatible

> +  - qcom,apr-domain

> +

> +additionalProperties: false

> +

> +examples:

> +  - |

> +    #include <dt-bindings/soc/qcom,apr.h>

> +    apr {

> +        compatible = "qcom,apr-v2";

> +        qcom,apr-domain = <APR_DOMAIN_ADSP>;

> +        #address-cells = <1>;

> +        #size-cells = <0>;

> +

> +        q6core: apr-service@3 {

> +          compatible = "qcom,q6core";

> +          reg = <APR_SVC_ADSP_CORE>;

> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> +        };

> +

> +        q6afe: apr-service@4 {

> +          compatible = "qcom,q6afe";

> +          reg = <APR_SVC_AFE>;

> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> +        };

> +

> +        q6asm: apr-service@7 {

> +          compatible = "qcom,q6asm";

> +          reg = <APR_SVC_ASM>;

> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> +        };

> +

> +        q6adm: apr-service@8 {

> +          compatible = "qcom,q6adm";

> +          reg = <APR_SVC_ADM>;

> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

> +        };

> +    };

> -- 

> 2.21.0

> 

>
Srinivas Kandagatla Sept. 1, 2021, 2:28 p.m. UTC | #2
Thanks Rob for the review,

On 13/08/2021 23:23, Rob Herring wrote:
> On Mon, Aug 09, 2021 at 12:23:20PM +0100, Srinivas Kandagatla wrote:

>> Convert APR bindings to yaml format so that we could add new bindings support.

>>

>> All the dsp services bindings are now part of apr bindings instead

>> of adding them to audio bindings.

>>

>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

>> ---

>>   .../devicetree/bindings/soc/qcom/qcom,apr.txt | 134 ------------------

>>   .../bindings/soc/qcom/qcom,apr.yaml           | 127 +++++++++++++++++

>>   2 files changed, 127 insertions(+), 134 deletions(-)

>>   delete mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

>>   create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

>>

>> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

>> deleted file mode 100644

>> index 2e2f6dc351c0..000000000000

>> --- a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

>> +++ /dev/null

>> @@ -1,134 +0,0 @@


...

>> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

>> new file mode 100644

>> index 000000000000..12650f7084f4

>> --- /dev/null

>> +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml

>> @@ -0,0 +1,127 @@

>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

>> +%YAML 1.2

>> +---

>> +$id: "http://devicetree.org/schemas/soc/qcom/qcom,apr.yaml#"

>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

>> +

>> +title: Qualcomm APR (Asynchronous Packet Router) binding

>> +

>> +maintainers:

>> +  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

>> +

>> +description: |

>> +  This binding describes the Qualcomm APR, APR is a IPC protocol for

>> +  communication between Application processor and QDSP. APR is mainly

>> +  used for audio/voice services on the QDSP.

>> +

>> +properties:

>> +  compatible:

>> +    enum:

>> +      - qcom,apr

> 

> This wasn't a valid compatible before.


True, Will remove that in next version.
> 

>> +      - qcom,apr-v2

>> +

>> +  qcom,apr-domain:

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +    enum: [1, 2, 3, 4, 5, 6, 7]

>> +    description:

>> +      Selects the processor domain for apr

>> +        1 = APR simulator

>> +        2 = PC Domain

>> +        3 = Modem Domain

>> +        4 = ADSP Domain

>> +        5 = Application processor Domain

>> +        6 = Modem2 Domain

>> +        7 = Application Processor2 Domain

>> +

>> +  '#address-cells':

>> +    const: 1

>> +

>> +  '#size-cells':

>> +    const: 0

>> +

>> +#APR Services

>> +patternProperties:

>> +  "^apr-service@[0-9a-e]$":

> 

> Based on reg, this should be: [3-9a-d]


Sure, will fix that.

> 

>> +    type: object

>> +    description:

>> +      APR node's client devices use subnodes for desired static port services.

>> +

>> +    properties:

>> +      compatible:

>> +        enum:

>> +          - qcom,q6core

>> +          - qcom,q6asm

>> +          - qcom,q6afe

>> +          - qcom,q6adm

>> +

>> +      reg:

>> +        enum: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

>> +        description:

>> +          APR Service ID

>> +            3 = DSP Core Service

>> +            4 = Audio  Front End Service.

>> +            5 = Voice Stream Manager Service.

>> +            6 = Voice processing manager.

>> +            7 = Audio Stream Manager Service.

>> +            8 = Audio Device Manager Service.

>> +            9 = Multimode voice manager.

>> +            10 = Core voice stream.

>> +            11 = Core voice processor.

>> +            12 = Ultrasound stream manager.

>> +            13 = Listen stream manager.

>> +

>> +      qcom,protection-domain:

>> +        $ref: /schemas/types.yaml#/definitions/string-array

>> +        description: protection domain service name and path for apr service

>> +          has dependency on.

>> +        items:

>> +          - const: avs/audio

>> +          - const: msm/adsp/audio_pd

> 

> You've dropped a bunch of possible values.

> 

PDR services used for APR driver are only these two audio services.
so the others are really list of other services that APR driver will not 
using.

I can retain them as it was before, but we can tidy this list up in a 
cleanup patch later.

--srini

>> +

>> +      '#address-cells':

>> +        const: 1

>> +

>> +      '#size-cells':

>> +        const: 0

>> +

>> +    additionalProperties: false

>> +

>> +required:

>> +  - compatible

>> +  - qcom,apr-domain

>> +

>> +additionalProperties: false

>> +

>> +examples:

>> +  - |

>> +    #include <dt-bindings/soc/qcom,apr.h>

>> +    apr {

>> +        compatible = "qcom,apr-v2";

>> +        qcom,apr-domain = <APR_DOMAIN_ADSP>;

>> +        #address-cells = <1>;

>> +        #size-cells = <0>;

>> +

>> +        q6core: apr-service@3 {

>> +          compatible = "qcom,q6core";

>> +          reg = <APR_SVC_ADSP_CORE>;

>> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

>> +        };

>> +

>> +        q6afe: apr-service@4 {

>> +          compatible = "qcom,q6afe";

>> +          reg = <APR_SVC_AFE>;

>> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

>> +        };

>> +

>> +        q6asm: apr-service@7 {

>> +          compatible = "qcom,q6asm";

>> +          reg = <APR_SVC_ASM>;

>> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

>> +        };

>> +

>> +        q6adm: apr-service@8 {

>> +          compatible = "qcom,q6adm";

>> +          reg = <APR_SVC_ADM>;

>> +          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

>> +        };

>> +    };

>> -- 

>> 2.21.0

>>

>>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt
deleted file mode 100644
index 2e2f6dc351c0..000000000000
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt
+++ /dev/null
@@ -1,134 +0,0 @@ 
-Qualcomm APR (Asynchronous Packet Router) binding
-
-This binding describes the Qualcomm APR. APR is a IPC protocol for
-communication between Application processor and QDSP. APR is mainly
-used for audio/voice services on the QDSP.
-
-- compatible:
-	Usage: required
-	Value type: <stringlist>
-	Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"
-
-- qcom,apr-domain
-	Usage: required
-	Value type: <u32>
-	Definition: Destination processor ID.
-	Possible values are :
-			1 - APR simulator
-			2 - PC
-			3 - MODEM
-			4 - ADSP
-			5 - APPS
-			6 - MODEM2
-			7 - APPS2
-
-= APR SERVICES
-Each subnode of the APR node represents service tied to this apr. The name
-of the nodes are not important. The properties of these nodes are defined
-by the individual bindings for the specific service
-- All APR services MUST contain the following property:
-
-- reg
-	Usage: required
-	Value type: <u32>
-	Definition: APR Service ID
-	Possible values are :
-			3 - DSP Core Service
-			4 - Audio Front End Service.
-			5 - Voice Stream Manager Service.
-			6 - Voice processing manager.
-			7 - Audio Stream Manager Service.
-			8 - Audio Device Manager Service.
-			9 - Multimode voice manager.
-			10 - Core voice stream.
-			11 - Core voice processor.
-			12 - Ultrasound stream manager.
-			13 - Listen stream manager.
-
-- qcom,protection-domain
-	Usage: optional
-	Value type: <stringlist>
-	Definition: Must list the protection domain service name and path
-		    that the particular apr service has a dependency on.
-	Possible values are :
-			"avs/audio", "msm/adsp/audio_pd".
-			"kernel/elf_loader", "msm/modem/wlan_pd".
-			"tms/servreg", "msm/adsp/audio_pd".
-			"tms/servreg", "msm/modem/wlan_pd".
-			"tms/servreg", "msm/slpi/sensor_pd".
-
-= EXAMPLE
-The following example represents a QDSP based sound card on a MSM8996 device
-which uses apr as communication between Apps and QDSP.
-
-	apr {
-		compatible = "qcom,apr-v2";
-		qcom,apr-domain = <APR_DOMAIN_ADSP>;
-
-		apr-service@3 {
-			compatible = "qcom,q6core";
-			reg = <APR_SVC_ADSP_CORE>;
-		};
-
-		apr-service@4 {
-			compatible = "qcom,q6afe";
-			reg = <APR_SVC_AFE>;
-
-			dais {
-				#sound-dai-cells = <1>;
-				dai@1 {
-					reg = <HDMI_RX>;
-				};
-			};
-		};
-
-		apr-service@7 {
-			compatible = "qcom,q6asm";
-			reg = <APR_SVC_ASM>;
-			...
-		};
-
-		apr-service@8 {
-			compatible = "qcom,q6adm";
-			reg = <APR_SVC_ADM>;
-			...
-		};
-	};
-
-= EXAMPLE 2
-The following example represents a QDSP based sound card with protection domain
-dependencies specified. Here some of the apr services are dependent on services
-running on protection domain hosted on ADSP/SLPI remote processors while others
-have no such dependency.
-
-	apr {
-		compatible = "qcom,apr-v2";
-		qcom,glink-channels = "apr_audio_svc";
-		qcom,apr-domain = <APR_DOMAIN_ADSP>;
-
-		apr-service@3 {
-			compatible = "qcom,q6core";
-			reg = <APR_SVC_ADSP_CORE>;
-		};
-
-		q6afe: apr-service@4 {
-			compatible = "qcom,q6afe";
-			reg = <APR_SVC_AFE>;
-			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-			...
-		};
-
-		q6asm: apr-service@7 {
-			compatible = "qcom,q6asm";
-			reg = <APR_SVC_ASM>;
-			qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";
-			...
-		};
-
-		q6adm: apr-service@8 {
-			compatible = "qcom,q6adm";
-			reg = <APR_SVC_ADM>;
-			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-			...
-		};
-	};
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml
new file mode 100644
index 000000000000..12650f7084f4
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml
@@ -0,0 +1,127 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/soc/qcom/qcom,apr.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Qualcomm APR (Asynchronous Packet Router) binding
+
+maintainers:
+  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+
+description: |
+  This binding describes the Qualcomm APR, APR is a IPC protocol for
+  communication between Application processor and QDSP. APR is mainly
+  used for audio/voice services on the QDSP.
+
+properties:
+  compatible:
+    enum:
+      - qcom,apr
+      - qcom,apr-v2
+
+  qcom,apr-domain:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2, 3, 4, 5, 6, 7]
+    description:
+      Selects the processor domain for apr
+        1 = APR simulator
+        2 = PC Domain
+        3 = Modem Domain
+        4 = ADSP Domain
+        5 = Application processor Domain
+        6 = Modem2 Domain
+        7 = Application Processor2 Domain
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+#APR Services
+patternProperties:
+  "^apr-service@[0-9a-e]$":
+    type: object
+    description:
+      APR node's client devices use subnodes for desired static port services.
+
+    properties:
+      compatible:
+        enum:
+          - qcom,q6core
+          - qcom,q6asm
+          - qcom,q6afe
+          - qcom,q6adm
+
+      reg:
+        enum: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
+        description:
+          APR Service ID
+            3 = DSP Core Service
+            4 = Audio  Front End Service.
+            5 = Voice Stream Manager Service.
+            6 = Voice processing manager.
+            7 = Audio Stream Manager Service.
+            8 = Audio Device Manager Service.
+            9 = Multimode voice manager.
+            10 = Core voice stream.
+            11 = Core voice processor.
+            12 = Ultrasound stream manager.
+            13 = Listen stream manager.
+
+      qcom,protection-domain:
+        $ref: /schemas/types.yaml#/definitions/string-array
+        description: protection domain service name and path for apr service
+          has dependency on.
+        items:
+          - const: avs/audio
+          - const: msm/adsp/audio_pd
+
+      '#address-cells':
+        const: 1
+
+      '#size-cells':
+        const: 0
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - qcom,apr-domain
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/soc/qcom,apr.h>
+    apr {
+        compatible = "qcom,apr-v2";
+        qcom,apr-domain = <APR_DOMAIN_ADSP>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        q6core: apr-service@3 {
+          compatible = "qcom,q6core";
+          reg = <APR_SVC_ADSP_CORE>;
+          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+        };
+
+        q6afe: apr-service@4 {
+          compatible = "qcom,q6afe";
+          reg = <APR_SVC_AFE>;
+          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+        };
+
+        q6asm: apr-service@7 {
+          compatible = "qcom,q6asm";
+          reg = <APR_SVC_ASM>;
+          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+        };
+
+        q6adm: apr-service@8 {
+          compatible = "qcom,q6adm";
+          reg = <APR_SVC_ADM>;
+          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+        };
+    };