Re: [PATCH v4 11/15] ASoC: dt-bindings: tegra: Add json-schema for Tegra audio graph card

From: Sameer Pujar
Date: Tue Oct 20 2020 - 02:16:51 EST



Add YAML schema for Tegra audio graph sound card DT bindings. It uses the
same DT bindings provided by generic audio graph driver. Along with this
few standard clock DT bindings are added which are specifically required
for Tegra audio.

Signed-off-by: Sameer Pujar <spujar@xxxxxxxxxx>
---
.../sound/nvidia,tegra-audio-graph-card.yaml | 158 +++++++++++++++++++++
1 file changed, 158 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml

diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml
new file mode 100644
index 0000000..284d185
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.yaml
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-graph-card.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Audio Graph based Tegra sound card driver
+
+description: |
+ This is based on generic audio graph card driver along with additional
+ customizations for Tegra platforms. It uses the same bindings with
+ additional standard clock DT bindings required for Tegra.
+
+ See{LINUX}/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
You should be able to just $ref this at the top level.

I am seeing one problem while using $ref like below.
allOf:
  - $ref: /schemas/sound/audio-graph-card.yaml

I see below while running doc validator.
"Documentation/devicetree/bindings/sound/nvidia,tegra-audio-graph-card.example.dt.yaml: tegra_sound: compatible:0: 'audio-graph-card' was expected"

Is there a way to avoid this?


+
+maintainers:
+ - Jon Hunter <jonathanh@xxxxxxxxxx>
+ - Sameer Pujar <spujar@xxxxxxxxxx>
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - nvidia,tegra210-audio-graph-card
+ - nvidia,tegra186-audio-graph-card
+

+ dais:
+ $ref: /schemas/sound/audio-graph-card.yaml#/properties/dais
+
+ label:
+ $ref: /schemas/sound/simple-card.yaml#/properties/label
+
+ pa-gpios:
+ $ref: /schemas/sound/audio-graph-card.yaml#/properties/pa-gpios
+
+ widgets:
+ $ref: /schemas/sound/simple-card.yaml#/definitions/widgets
+
+ routing:
+ $ref: /schemas/sound/simple-card.yaml#/definitions/routing
+
+ mclk-fs:
+ $ref: /schemas/sound/simple-card.yaml#/definitions/mclk-fs
+
+ prefix:
+ $ref: /schemas/sound/simple-card.yaml#/definitions/prefix
And drop all of these.

Could not re-use because of above compatible problem. Also require some additional properties for Tegra.

+
+ clocks:
+ minItems: 2
+
+ clock-names:
+ minItems: 2
Don't need this.

This is required for Tegra audio graph card to update clock rates at runtime.


+ items:
+ - const: pll_a
+ - const: plla_out0
+
+ assigned-clocks:
+ minItems: 1
+ maxItems: 3
+
+ assigned-clock-parents:
+ minItems: 1
+ maxItems: 3
+
+ assigned-clock-rates:
+ minItems: 1
+ maxItems: 3
+

It is required for initialisation of above clocks with specific rates.

+ ports:
+ $ref: /schemas/sound/audio-graph-card.yaml#/properties/ports
+
+patternProperties:
+ "^port(@[0-9a-f]+)?$":
+ $ref: /schemas/sound/audio-graph-card.yaml#/definitions/port
And these can be dropped. Unless what each port is is Tegra specific.

May be I can drop this if I could just directly include audio-graph-card.yaml and extend required properties for Tegra.