diff mbox series

[1/2] ASoC: audio-graph-card: Refactor schema

Message ID 1605097613-25301-2-git-send-email-spujar@nvidia.com (mailing list archive)
State New, archived
Headers show
Series Refactor Audio Graph schema | expand

Commit Message

Sameer Pujar Nov. 11, 2020, 12:26 p.m. UTC
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.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 .../bindings/sound/audio-graph-card.yaml           | 102 +-------------------
 .../devicetree/bindings/sound/audio-graph.yaml     | 107 +++++++++++++++++++++
 2 files changed, 110 insertions(+), 99 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/audio-graph.yaml

Comments

Rob Herring Nov. 12, 2020, 4:06 p.m. UTC | #1
On Wed, Nov 11, 2020 at 05:56:52PM +0530, Sameer Pujar wrote:
> 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.

I did ack it, but it's not great that this was just applied and now it's 
being changed. If the submitter doesn't have time to work on it more 
then the maintainers shouldn't really have time to apply it.

> Signed-off-by: Sameer Pujar <spujar@nvidia.com>
> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  .../bindings/sound/audio-graph-card.yaml           | 102 +-------------------
>  .../devicetree/bindings/sound/audio-graph.yaml     | 107 +++++++++++++++++++++
>  2 files changed, 110 insertions(+), 99 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/sound/audio-graph.yaml
> 
> diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> index 2329aeb..e047d7d 100644
> --- a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> +++ b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> @@ -9,113 +9,17 @@ title: Audio Graph Card Driver 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

This is not going to work with all the properties moved. 
'additionalProperties' can't 'see' into the reference. This needs to be 
unevaluatedProperties instead which solves that problem.

>  
> diff --git a/Documentation/devicetree/bindings/sound/audio-graph.yaml b/Documentation/devicetree/bindings/sound/audio-graph.yaml
> new file mode 100644
> index 0000000..1e338d6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml
> @@ -0,0 +1,107 @@
> +# 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 Card Driver Device Tree Bindings
> +
> +maintainers:
> +  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> +
> +allOf:
> +  - $ref: /schemas/graph.yaml#
> +
> +select: false
> +
> +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
> +
> +  port:
> +    description: single OF-Graph subnode
> +    type: object
> +    properties:
> +      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:
> +          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:
> +  - dais
> +
> +additionalProperties: true
> -- 
> 2.7.4
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
index 2329aeb..e047d7d 100644
--- a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
+++ b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
@@ -9,113 +9,17 @@  title: Audio Graph Card Driver 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
 
diff --git a/Documentation/devicetree/bindings/sound/audio-graph.yaml b/Documentation/devicetree/bindings/sound/audio-graph.yaml
new file mode 100644
index 0000000..1e338d6
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml
@@ -0,0 +1,107 @@ 
+# 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 Card Driver Device Tree Bindings
+
+maintainers:
+  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+allOf:
+  - $ref: /schemas/graph.yaml#
+
+select: false
+
+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
+
+  port:
+    description: single OF-Graph subnode
+    type: object
+    properties:
+      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:
+          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:
+  - dais
+
+additionalProperties: true