Re: [PATCH 1/6] ASoC: tegra: Add binding doc for OPE module

Krzysztof Kozlowski
2022-05-19T11:41:17Z

On 18/05/2022 19:36, Sameer Pujar wrote:
> This patch adds YAML schema for DT bindings of Output Processing
> Engine (OPE) module. It consists of Parametric Equalizer (PEQ)
> and Multi Band Dynamic Range Compressor (MBDRC) sub blocks and
> binding doc for these blocks are added as well. The OPE will be
> registered as an ASoC component and can be plugged into an audio
> path as per need via ALSA mixer controls. The DT bindings are
> applicable on Tegra210 and later SoCs where OPE module is present.
>
> Signed-off-by: Sameer Pujar <spujar@nvidia.com>
> ---
> .../bindings/sound/nvidia,tegra210-ahub.yaml | 4 +
> .../bindings/sound/nvidia,tegra210-mbdrc.yaml | 51 ++++++++++++
> .../bindings/sound/nvidia,tegra210-ope.yaml | 91 ++++++++++++++++++++++
> .../bindings/sound/nvidia,tegra210-peq.yaml | 52 +++++++++++++
> 4 files changed, 198 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-mbdrc.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra210-peq.yaml
>
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
> index 6df6f85..1fb93d9 100644
> --- a/Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
> @@ -110,6 +110,10 @@ patternProperties:
> type: object
> $ref: nvidia,tegra186-asrc.yaml#
>
> + '^ope@[0-9a-f]+$':
> + type: object
> + $ref: nvidia,tegra210-ope.yaml#
> +
> required:
> - compatible
> - reg
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra210-mbdrc.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra210-mbdrc.yaml
> new file mode 100644
> index 00000000..199712ed
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra210-mbdrc.yaml
> @@ -0,0 +1,51 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/nvidia,tegra210-mbdrc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Tegra210 MBDRC Device Tree Bindings

s/Device Tree Bindings//

and then you have enough space to de-acronym this MBDRC.

> +
> +description: |
> + The Multi Band Dynamic Range Compressor (MBDRC) is part of Output
> + Processing Engine (OPE) which interfaces with Audio Hub (AHUB) via
> + Audio Client Interface (ACIF). MBDRC can be used as a traditional
> + single full band or a dual band or a multi band dynamic processor.
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Mohan Kumar <mkumard@nvidia.com>
> + - Sameer Pujar <spujar@nvidia.com>
> +
> +properties:
> + $nodename:
> + pattern: "^mbdrc@[0-9a-f]*$"

Why? We enforce only generic names in shared schemas and this is neither
shared schema nor is it generic name.

> +
> + compatible:
> + oneOf:
> + - const: nvidia,tegra210-mbdrc
> + - items:
> + - enum:
> + - nvidia,tegra234-mbdrc
> + - nvidia,tegra194-mbdrc
> + - nvidia,tegra186-mbdrc
> + - const: nvidia,tegra210-mbdrc
> +
> + reg:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> +

No need for space

> + mbdrc@702d8200 {

Generic node name.

> + compatible = "nvidia,tegra210-mbdrc";
> + reg = <0x702d8200 0x200>;
> + };
> +
> +...
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml
> new file mode 100644
> index 00000000..92488fd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml
> @@ -0,0 +1,91 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/nvidia,tegra210-ope.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Tegra210 OPE Device Tree Bindings

Same comment.

> +
> +description: |
> + The Output Processing Engine (OPE) is one of the AHUB client. It has
> + PEQ (Parametric Equalizer) and MBDRC (Multi Band Dynamic Range Compressor)
> + sub blocks for data processing.
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Mohan Kumar <mkumard@nvidia.com>
> + - Sameer Pujar <spujar@nvidia.com>
> +
> +allOf:
> + - $ref: name-prefix.yaml#
> +
> +properties:
> + $nodename:
> + pattern: "^ope@[0-9a-f]*$"

Same comment.

> +
> + compatible:
> + oneOf:
> + - const: nvidia,tegra210-ope
> + - items:
> + - enum:
> + - nvidia,tegra234-ope
> + - nvidia,tegra194-ope
> + - nvidia,tegra186-ope
> + - const: nvidia,tegra210-ope
> +
> + reg:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + ranges: true
> +
> + sound-name-prefix:
> + pattern: "^OPE[1-9]$"
> +
> + ports:
> + $ref: /schemas/graph.yaml#/properties/ports
> + properties:
> + port@0:
> + $ref: audio-graph-port.yaml#
> + unevaluatedProperties: false
> + description: |

No need for |

> + OPE ACIF (Audio Client Interface) input port. This is connected
> + to corresponding ACIF output port on AHUB (Audio Hub).
> +
> + port@1:
> + $ref: audio-graph-port.yaml#
> + unevaluatedProperties: false
> + description: |

Ditto

> + OPE ACIF output port. This is connected to corresponding ACIF
> + input port on AHUB.
> +
> +patternProperties:
> + '^peq@[0-9a-f]+$':
> + type: object
> + $ref: nvidia,tegra210-peq.yaml#
> +
> + '^mbdrc@[0-9a-f]+$':
> + type: object
> + $ref: nvidia,tegra210-mbdrc.yaml#
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> +

Similar to other patch.

> + ope@702d8000 {

I would suggest generic node name, if it is possible.

> + compatible = "nvidia,tegra210-ope";
> + reg = <0x702d8000 0x100>;
> + sound-name-prefix = "OPE1";
> + };
> +
> +...
> diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra210-peq.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra210-peq.yaml
> new file mode 100644
> index 00000000..0f78746
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra210-peq.yaml
> @@ -0,0 +1,52 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/nvidia,tegra210-peq.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Tegra210 PEQ Device Tree Bindings

Ditto

> +
> +description: |
> + The Parametric Equalizer (PEQ) is a cascade of biquad filters with
> + each filter tuned based on certain parameters. It can be used to
> + equalize the irregularities in the speaker frequency response.
> + PEQ sits inside Output Processing Engine (OPE) which interfaces
> + with Audio Hub (AHUB) via Audio Client Interface (ACIF).
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Mohan Kumar <mkumard@nvidia.com>
> + - Sameer Pujar <spujar@nvidia.com>
> +
> +properties:
> + $nodename:
> + pattern: "^peq@[0-9a-f]*$"

Ditto

> +
> + compatible:
> + oneOf:
> + - const: nvidia,tegra210-peq
> + - items:
> + - enum:
> + - nvidia,tegra234-peq
> + - nvidia,tegra194-peq
> + - nvidia,tegra186-peq
> + - const: nvidia,tegra210-peq
> +
> + reg:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> +

Ditto

> + peq@702d8100 {

Generic node name, so this is "equalizer", I guess?

> + compatible = "nvidia,tegra210-peq";
> + reg = <0x702d8100 0x100>;
> + };
> +
> +...

Best regards,
Krzysztof