Unverified Commit e52f3f29 authored by Sameer Pujar's avatar Sameer Pujar Committed by Mark Brown
Browse files

ASoC: audio-graph-card: Refactor schema



There can be customized sound cards which are based on generic audio
graph. In such cases most of the stuff is reused from generic audio
graph. To facilitate this, refactor audio graph schema into multiple
files and the base schema can be reused for specific sound cards.

The graph card nodes and port nodes are separate entities, so they
should be separate schemas.

Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
[robh: Split out port schema. Add graph.yaml in subsequent commit]
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarSameer Pujar <spujar@nvidia.com>
Link: https://lore.kernel.org/r/20201117013349.2458416-2-robh@kernel.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5268e0bf
Loading
Loading
Loading
Loading
+5 −101
Original line number Diff line number Diff line
@@ -4,120 +4,24 @@
$id: http://devicetree.org/schemas/sound/audio-graph-card.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Audio Graph Card Driver Device Tree Bindings
title: Audio Graph Card Device Tree Bindings

maintainers:
  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

allOf:
  - $ref: /schemas/sound/audio-graph.yaml#

properties:
  compatible:
    enum:
      - audio-graph-card
      - audio-graph-scu-card

  dais:
    $ref: /schemas/types.yaml#/definitions/phandle-array
  label:
    maxItems: 1
  prefix:
    description: "device name prefix"
    $ref: /schemas/types.yaml#/definitions/string
  routing:
    description: |
      A list of the connections between audio components.
      Each entry is a pair of strings, the first being the
      connection's sink, the second being the connection's source.
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
  widgets:
    description: User specified audio sound widgets.
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
  convert-rate:
    description: CPU to Codec rate convert.
    $ref: /schemas/types.yaml#/definitions/uint32
  convert-channels:
    description: CPU to Codec rate channels.
    $ref: /schemas/types.yaml#/definitions/uint32
  pa-gpios:
    maxItems: 1
  hp-det-gpio:
    maxItems: 1
  mic-det-gpio:
    maxItems: 1

  port:
    description: single OF-Graph subnode
    type: object
    properties:
      reg:
        maxItems: 1
      prefix:
        description: "device name prefix"
        $ref: /schemas/types.yaml#/definitions/string
      convert-rate:
        description: CPU to Codec rate convert.
        $ref: /schemas/types.yaml#/definitions/uint32
      convert-channels:
        description: CPU to Codec rate channels.
        $ref: /schemas/types.yaml#/definitions/uint32
    patternProperties:
      "^endpoint(@[0-9a-f]+)?":
        type: object
        properties:
          remote-endpoint:
            maxItems: 1
          mclk-fs:
            description: |
              Multiplication factor between stream rate and codec mclk.
              When defined, mclk-fs property defined in dai-link sub nodes are ignored.
            $ref: /schemas/types.yaml#/definitions/uint32
          frame-inversion:
            description: dai-link uses frame clock inversion
            $ref: /schemas/types.yaml#/definitions/flag
          bitclock-inversion:
            description: dai-link uses bit clock inversion
            $ref: /schemas/types.yaml#/definitions/flag
          frame-master:
            description: Indicates dai-link frame master.
            $ref: /schemas/types.yaml#/definitions/phandle-array
            maxItems: 1
          bitclock-master:
            description: Indicates dai-link bit clock master
            $ref: /schemas/types.yaml#/definitions/phandle-array
            maxItems: 1
          dai-format:
            description: audio format.
            items:
              enum:
                - i2s
                - right_j
                - left_j
                - dsp_a
                - dsp_b
                - ac97
                - pdm
                - msb
                - lsb
          convert-rate:
            description: CPU to Codec rate convert.
            $ref: /schemas/types.yaml#/definitions/uint32
          convert-channels:
            description: CPU to Codec rate channels.
            $ref: /schemas/types.yaml#/definitions/uint32
        required:
          - remote-endpoint

  ports:
    description: multi OF-Graph subnode
    type: object
    patternProperties:
      "^port(@[0-9a-f]+)?":
        $ref: "#/properties/port"

required:
  - compatible
  - dais

additionalProperties: false
unevaluatedProperties: false

examples:
  - |
+86 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/audio-graph-port.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Audio Graph Card 'port' Node Bindings

maintainers:
  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

select: false

properties:
  port:
    description: single OF-Graph subnode
    type: object
    properties:
      reg:
        maxItems: 1
      prefix:
        description: "device name prefix"
        $ref: /schemas/types.yaml#/definitions/string
      convert-rate:
        description: CPU to Codec rate convert.
        $ref: /schemas/types.yaml#/definitions/uint32
      convert-channels:
        description: CPU to Codec rate channels.
        $ref: /schemas/types.yaml#/definitions/uint32
    patternProperties:
      "^endpoint(@[0-9a-f]+)?":
        type: object
        properties:
          remote-endpoint:
            maxItems: 1
          mclk-fs:
            description: |
              Multiplication factor between stream rate and codec mclk.
              When defined, mclk-fs property defined in dai-link sub nodes are
              ignored.
            $ref: /schemas/types.yaml#/definitions/uint32
          frame-inversion:
            description: dai-link uses frame clock inversion
            $ref: /schemas/types.yaml#/definitions/flag
          bitclock-inversion:
            description: dai-link uses bit clock inversion
            $ref: /schemas/types.yaml#/definitions/flag
          frame-master:
            description: Indicates dai-link frame master.
            $ref: /schemas/types.yaml#/definitions/phandle-array
            maxItems: 1
          bitclock-master:
            description: Indicates dai-link bit clock master
            $ref: /schemas/types.yaml#/definitions/phandle-array
            maxItems: 1
          dai-format:
            description: audio format.
            items:
              enum:
                - i2s
                - right_j
                - left_j
                - dsp_a
                - dsp_b
                - ac97
                - pdm
                - msb
                - lsb
          convert-rate:
            description: CPU to Codec rate convert.
            $ref: /schemas/types.yaml#/definitions/uint32
          convert-channels:
            description: CPU to Codec rate channels.
            $ref: /schemas/types.yaml#/definitions/uint32

        required:
          - remote-endpoint

  ports:
    description: multi OF-Graph subnode
    type: object
    patternProperties:
      "^port(@[0-9a-f]+)?":
        $ref: "#/properties/port"

additionalProperties: true
+45 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/audio-graph.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Audio Graph Device Tree Bindings

maintainers:
  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

properties:
  dais:
    $ref: /schemas/types.yaml#/definitions/phandle-array
  label:
    maxItems: 1
  prefix:
    description: "device name prefix"
    $ref: /schemas/types.yaml#/definitions/string
  routing:
    description: |
      A list of the connections between audio components.
      Each entry is a pair of strings, the first being the
      connection's sink, the second being the connection's source.
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
  widgets:
    description: User specified audio sound widgets.
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
  convert-rate:
    description: CPU to Codec rate convert.
    $ref: /schemas/types.yaml#/definitions/uint32
  convert-channels:
    description: CPU to Codec rate channels.
    $ref: /schemas/types.yaml#/definitions/uint32
  pa-gpios:
    maxItems: 1
  hp-det-gpio:
    maxItems: 1
  mic-det-gpio:
    maxItems: 1

required:
  - dais

additionalProperties: true
+5 −7
Original line number Diff line number Diff line
@@ -9,6 +9,10 @@ title: Renesas R-Car Sound Driver Device Tree Bindings
maintainers:
  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

allOf:
  - $ref: audio-graph.yaml#
  - $ref: audio-graph-port.yaml#

properties:

  compatible:
@@ -111,13 +115,7 @@ properties:
        - pattern: '^dvc\.[0-1]$'
        - pattern: '^clk_(a|b|c|i)$'

  port:
    description: OF-Graph subnode
    $ref: "audio-graph-card.yaml#/properties/port"

  ports:
    description: multi OF-Graph subnode
    $ref: "audio-graph-card.yaml#/properties/ports"
  port: true

# use patternProperties to avoid naming "xxx,yyy" issue
patternProperties: