Unverified Commit 41288c30 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: dt-bindings: qcom,apr: Split services to shared schema



The APR/GPR nodes are organized like:

  apr-or-gpr-device-node <- qcom,apr.yaml
    apr-gpr-service@[0-9] <- qcom,apr.yaml
      service-specific-components <- /schemas/sound/qcom,q6*.yaml

The schema for services (apr-gpr-service@[0-9]) already grows
considerably and is still quite not specific.  It allows several
incorrect combinations, like adding a clock-controller to a APM device.
Restricting it would complicate the schema even more.  Bringing new
support for sound on Qualcomm SM8450 and SC8280XP SoC would grow it as
well.

Simplify the qcom,apr.yaml by splitting the services to a shared file
which will be:
1. Referenced by qcom,apr.yaml with additionalProperties:true,
2. Referenced by specific bindings for services with
   additionalProperties:false (not yet in this commit).

While moving the code, add also required 'reg' and
'qcom,protection-domain' to further constrain the bindings.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20221115120235.167812-3-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0dd3618e
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/qcom/qcom,apr-services.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm APR/GPR services shared parts

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description:
  Common parts of a static service in Qualcomm APR/GPR (Asynchronous/Generic
  Packet Router).

properties:
  reg:
    minimum: 1
    maximum: 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.
      GPR Service ID
        1 = Audio Process Manager Service
        2 = Proxy Resource Manager Service.
        3 = AMDB Service.
        4 = Voice processing manager.

  qcom,protection-domain:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: |
      Protection domain service name and path for APR service
      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".

required:
  - reg
  - qcom,protection-domain

additionalProperties: true
+3 −95
Original line number Diff line number Diff line
@@ -80,12 +80,13 @@ properties:
  '#size-cells':
    const: 0

#APR/GPR Services
patternProperties:
  "^service@[1-9a-d]$":
    type: object
    $ref: /schemas/soc/qcom/qcom,apr-services.yaml
    additionalProperties: true
    description:
      APR/GPR node's client devices use subnodes for desired static port services.
      APR/GPR static port services.

    properties:
      compatible:
@@ -97,99 +98,6 @@ patternProperties:
          - qcom,q6apm
          - qcom,q6prm

      reg:
        minimum: 1
        maximum: 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.
          GPR Service ID
            1 = Audio Process Manager Service
            2 = Proxy Resource Manager Service.
            3 = AMDB Service.
            4 = Voice processing manager.

      clock-controller:
        $ref: /schemas/sound/qcom,q6dsp-lpass-clocks.yaml#
        description: Qualcomm DSP LPASS clock controller
        unevaluatedProperties: false

      dais:
        type: object
        oneOf:
          - $ref: /schemas/sound/qcom,q6apm-dai.yaml#
          - $ref: /schemas/sound/qcom,q6dsp-lpass-ports.yaml#
          - $ref: /schemas/sound/qcom,q6asm-dais.yaml#
        unevaluatedProperties: false
        description: Qualcomm DSP audio ports

      routing:
        type: object
        $ref: /schemas/sound/qcom,q6adm-routing.yaml#
        unevaluatedProperties: false
        description: Qualcomm DSP LPASS audio routing

      qcom,protection-domain:
        $ref: /schemas/types.yaml#/definitions/string-array
        description: protection domain service name and path for apr service
          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".

    allOf:
      - if:
          properties:
            compatible:
              enum:
                - qcom,q6afe
        then:
          properties:
            dais:
              properties:
                compatible:
                  const: qcom,q6afe-dais

      - if:
          properties:
            compatible:
              enum:
                - qcom,q6apm
        then:
          properties:
            dais:
              properties:
                compatible:
                  enum:
                    - qcom,q6apm-dais
                    - qcom,q6apm-lpass-dais

      - if:
          properties:
            compatible:
              enum:
                - qcom,q6asm
        then:
          properties:
            dais:
              properties:
                compatible:
                  const: qcom,q6asm-dais

    additionalProperties: false

required:
  - compatible
  - qcom,domain
+1 −1
Original line number Diff line number Diff line
@@ -16799,7 +16799,7 @@ M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
M:	Banajit Goswami <bgoswami@quicinc.com>
L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
S:	Supported
F:	Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml
F:	Documentation/devicetree/bindings/soc/qcom/qcom,apr*
F:	Documentation/devicetree/bindings/sound/qcom,*
F:	drivers/soc/qcom/apr.c
F:	include/dt-bindings/sound/qcom,wcd9335.h