On Tue, Oct 20, 2020 at 1:16 AM Sameer Pujar spujar@nvidia.com wrote:
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@nvidia.com
.../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?
Adjust the schemas so the constraints match. You can't say it must be one thing in one place and something else here. Your choices are:
- Drop compatible from audio-graph-card.yaml. You can define a 2nd schema that references audio-graph-card.yaml and defines the compatible. - Use 'contains' in audio-graph-card.yaml and then make 'audio-graph-card' a fallback here.
The best option depends on what existing users have.
+maintainers:
- Jon Hunter jonathanh@nvidia.com
- Sameer Pujar spujar@nvidia.com
+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.
I mean you can drop 'minItems: 2' as it is redundant. The 'items' list size implies the size.
- 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.
There are numerous examples of doing that.
Rob