Message ID | 1659370052-18966-2-git-send-email-spujar@nvidia.com |
---|---|
State | New |
Headers | show |
Series | DT binding for sample format conversion | expand |
On Mon, 01 Aug 2022 21:37:30 +0530, Sameer Pujar wrote: > The "convert-channels" and "convert-rate" bindings are provided for both > simple-card and audio-graph-card. However these are separately defined in > their respective schemas. For any new binding addition, which is common to > both, there will be duplication. > > Introduce a new schema to have common DAI params properties and these can > be re-used in other schemas wherever applicable. > > Signed-off-by: Sameer Pujar <spujar@nvidia.com> > Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > --- > .../bindings/sound/audio-graph-port.yaml | 13 ++++------ > .../devicetree/bindings/sound/audio-graph.yaml | 7 +++--- > .../devicetree/bindings/sound/dai-params.yaml | 28 ++++++++++++++++++++++ > .../devicetree/bindings/sound/simple-card.yaml | 16 ++++--------- > 4 files changed, 40 insertions(+), 24 deletions(-) > create mode 100644 Documentation/devicetree/bindings/sound/dai-params.yaml > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13): yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: 'type' is a required property hint: A vendor boolean property can use "type: boolean" 'description' is a required property hint: A vendor boolean property can use "type: boolean" Additional properties are not allowed ('$ref' was unexpected) hint: A vendor boolean property can use "type: boolean" /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: 'enum' is a required property 'const' is a required property hint: A vendor string property with exact values has an implicit type from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match 'types.yaml#/definitions/' hint: A vendor property needs a $ref to types.yaml '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match '^#/(definitions|\\$defs)/' hint: A vendor property can have a $ref to a a $defs schema hint: Vendor specific properties must have a type and description unless they have a defined, common suffix. from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-channels: 'oneOf' conditional failed, one must be fixed: 'type' is a required property hint: A vendor boolean property can use "type: boolean" 'description' is a required property hint: A vendor boolean property can use "type: boolean" Additional properties are not allowed ('$ref' was unexpected) hint: A vendor boolean property can use "type: boolean" /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-channels: 'oneOf' conditional failed, one must be fixed: 'enum' is a required property 'const' is a required property hint: A vendor string property with exact values has an implicit type from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# '/schemas/sound/dai-params.yaml#/properties/dai-channels' does not match 'types.yaml#/definitions/' hint: A vendor property needs a $ref to types.yaml '/schemas/sound/dai-params.yaml#/properties/dai-channels' does not match '^#/(definitions|\\$defs)/' hint: A vendor property can have a $ref to a a $defs schema hint: Vendor specific properties must have a type and description unless they have a defined, common suffix. from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# ./Documentation/devicetree/bindings/sound/simple-card.yaml: Error in referenced schema matching $id: http://devicetree.org/schemas/sound/simple-card.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: ignoring, error in schema: properties: simple-audio-card,convert-channels /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.example.dtb: sound: simple-audio-card,widgets: b'Microphone\x00Microphone Jack\x00Headphone\x00Headphone Jack\x00Speaker\x00External Speaker\x00' is not of type 'object', 'array', 'boolean', 'null' From schema: /usr/local/lib/python3.10/dist-packages/dtschema/schemas/dt-core.yaml /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.example.dtb: sound: simple-audio-card,routing: b'MIC_IN\x00Microphone Jack\x00Headphone Jack\x00HP_OUT\x00External Speaker\x00LINE_OUT\x00' is not of type 'object', 'array', 'boolean', 'null' From schema: /usr/local/lib/python3.10/dist-packages/dtschema/schemas/dt-core.yaml Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-0/sound: failed to match any schema with compatible: ['simple-audio-card'] Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-1/sound: failed to match any schema with compatible: ['simple-audio-card'] /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.example.dtb: sound: simple-audio-card,widgets: b'Headphone\x00Headphone Jack\x00' is not of type 'object', 'array', 'boolean', 'null' From schema: /usr/local/lib/python3.10/dist-packages/dtschema/schemas/dt-core.yaml Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-2/sound: failed to match any schema with compatible: ['simple-audio-card'] /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.example.dtb: sound: simple-audio-card,routing: b'ak4642 Playback\x00DAI0 Playback\x00DAI0 Capture\x00ak4642 Capture\x00' is not of type 'object', 'array', 'boolean', 'null' From schema: /usr/local/lib/python3.10/dist-packages/dtschema/schemas/dt-core.yaml Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-3/sound: failed to match any schema with compatible: ['simple-audio-card'] Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-4/sound: failed to match any schema with compatible: ['simple-audio-card'] Documentation/devicetree/bindings/sound/simple-card.example.dtb:0:0: /example-5/sound: failed to match any schema with compatible: ['simple-audio-card'] doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/patch/ This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit.
Hi Rob, Krzysztof On 02-08-2022 01:00, Rob Herring wrote: > On Mon, 01 Aug 2022 21:37:30 +0530, Sameer Pujar wrote: >> The "convert-channels" and "convert-rate" bindings are provided for both >> simple-card and audio-graph-card. However these are separately defined in >> their respective schemas. For any new binding addition, which is common to >> both, there will be duplication. >> >> Introduce a new schema to have common DAI params properties and these can >> be re-used in other schemas wherever applicable. >> >> Signed-off-by: Sameer Pujar <spujar@nvidia.com> >> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> >> --- >> .../bindings/sound/audio-graph-port.yaml | 13 ++++------ >> .../devicetree/bindings/sound/audio-graph.yaml | 7 +++--- >> .../devicetree/bindings/sound/dai-params.yaml | 28 ++++++++++++++++++++++ >> .../devicetree/bindings/sound/simple-card.yaml | 16 ++++--------- >> 4 files changed, 40 insertions(+), 24 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/sound/dai-params.yaml >> > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' > on your patch (DT_CHECKER_FLAGS is new in v5.13): > > yamllint warnings/errors: > > dtschema/dtc warnings/errors: > /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: > 'type' is a required property > hint: A vendor boolean property can use "type: boolean" > 'description' is a required property > hint: A vendor boolean property can use "type: boolean" > Additional properties are not allowed ('$ref' was unexpected) > hint: A vendor boolean property can use "type: boolean" > /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: > 'enum' is a required property > 'const' is a required property > hint: A vendor string property with exact values has an implicit type > from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# > '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match 'types.yaml#/definitions/' > hint: A vendor property needs a $ref to types.yaml > '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match '^#/(definitions|\\$defs)/' > hint: A vendor property can have a $ref to a a $defs schema > hint: Vendor specific properties must have a type and description unless they have a defined, common suffix. > from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# I am hitting this error if I use properties/definitions from another schema. If I define it locally, it works. I see there are examples where properties from different schema are used. But not able to understand why errors are seen in my case. Am I missing anything here?
On Tue, Aug 02, 2022 at 04:15:28PM +0530, Sameer Pujar wrote: > Hi Rob, Krzysztof > > On 02-08-2022 01:00, Rob Herring wrote: > > On Mon, 01 Aug 2022 21:37:30 +0530, Sameer Pujar wrote: > > > The "convert-channels" and "convert-rate" bindings are provided for both > > > simple-card and audio-graph-card. However these are separately defined in > > > their respective schemas. For any new binding addition, which is common to > > > both, there will be duplication. > > > > > > Introduce a new schema to have common DAI params properties and these can > > > be re-used in other schemas wherever applicable. > > > > > > Signed-off-by: Sameer Pujar <spujar@nvidia.com> > > > Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > > --- > > > .../bindings/sound/audio-graph-port.yaml | 13 ++++------ > > > .../devicetree/bindings/sound/audio-graph.yaml | 7 +++--- > > > .../devicetree/bindings/sound/dai-params.yaml | 28 ++++++++++++++++++++++ > > > .../devicetree/bindings/sound/simple-card.yaml | 16 ++++--------- > > > 4 files changed, 40 insertions(+), 24 deletions(-) > > > create mode 100644 Documentation/devicetree/bindings/sound/dai-params.yaml > > > > > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' > > on your patch (DT_CHECKER_FLAGS is new in v5.13): > > > > yamllint warnings/errors: > > > > dtschema/dtc warnings/errors: > > /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: > > 'type' is a required property > > hint: A vendor boolean property can use "type: boolean" > > 'description' is a required property > > hint: A vendor boolean property can use "type: boolean" > > Additional properties are not allowed ('$ref' was unexpected) > > hint: A vendor boolean property can use "type: boolean" > > /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: > > 'enum' is a required property > > 'const' is a required property > > hint: A vendor string property with exact values has an implicit type > > from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# > > '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match 'types.yaml#/definitions/' > > hint: A vendor property needs a $ref to types.yaml > > '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match '^#/(definitions|\\$defs)/' > > hint: A vendor property can have a $ref to a a $defs schema > > hint: Vendor specific properties must have a type and description unless they have a defined, common suffix. > > from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml# > > I am hitting this error if I use properties/definitions from another schema. > If I define it locally, it works. I see there are examples where properties > from different schema are used. But not able to understand why errors are > seen in my case. Am I missing anything here? You either need to use 'properties' with actual property names and reference that schema from the node level. Or you use '$defs' if you are going to have references from the (DT) property level. I think I'd just leave simple-card out of this and do the former.
On 02-08-2022 20:16, Rob Herring wrote: > On Tue, Aug 02, 2022 at 04:15:28PM +0530, Sameer Pujar wrote: >> Hi Rob, Krzysztof >> >> On 02-08-2022 01:00, Rob Herring wrote: >>> On Mon, 01 Aug 2022 21:37:30 +0530, Sameer Pujar wrote: >>>> The "convert-channels" and "convert-rate" bindings are provided for both >>>> simple-card and audio-graph-card. However these are separately defined in >>>> their respective schemas. For any new binding addition, which is common to >>>> both, there will be duplication. >>>> >>>> Introduce a new schema to have common DAI params properties and these can >>>> be re-used in other schemas wherever applicable. >>>> >>>> Signed-off-by: Sameer Pujar<spujar@nvidia.com> >>>> Cc: Kuninori Morimoto<kuninori.morimoto.gx@renesas.com> >>>> --- >>>> .../bindings/sound/audio-graph-port.yaml | 13 ++++------ >>>> .../devicetree/bindings/sound/audio-graph.yaml | 7 +++--- >>>> .../devicetree/bindings/sound/dai-params.yaml | 28 ++++++++++++++++++++++ >>>> .../devicetree/bindings/sound/simple-card.yaml | 16 ++++--------- >>>> 4 files changed, 40 insertions(+), 24 deletions(-) >>>> create mode 100644 Documentation/devicetree/bindings/sound/dai-params.yaml >>>> >>> My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' >>> on your patch (DT_CHECKER_FLAGS is new in v5.13): >>> >>> yamllint warnings/errors: >>> >>> dtschema/dtc warnings/errors: >>> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: >>> 'type' is a required property >>> hint: A vendor boolean property can use "type: boolean" >>> 'description' is a required property >>> hint: A vendor boolean property can use "type: boolean" >>> Additional properties are not allowed ('$ref' was unexpected) >>> hint: A vendor boolean property can use "type: boolean" >>> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/sound/simple-card.yaml: properties:simple-audio-card,convert-rate: 'oneOf' conditional failed, one must be fixed: >>> 'enum' is a required property >>> 'const' is a required property >>> hint: A vendor string property with exact values has an implicit type >>> from schema $id:http://devicetree.org/meta-schemas/vendor-props.yaml# >>> '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not >>> match 'types.yaml#/definitions/' >>> hint: A vendor property needs a $ref to types.yaml >>> '/schemas/sound/dai-params.yaml#/properties/dai-sample-rate' does not match '^#/(definitions|\\$defs)/' >>> hint: A vendor property can have a $ref to a a $defs schema >>> hint: Vendor specific properties must have a type and description unless they have a defined, common suffix. >>> from schema $id:http://devicetree.org/meta-schemas/vendor-props.yaml# >> I am hitting this error if I use properties/definitions from another schema. >> If I define it locally, it works. I see there are examples where properties >> from different schema are used. But not able to understand why errors are >> seen in my case. Am I missing anything here? > You either need to use 'properties' with actual property names and > reference that schema from the node level. Or you use '$defs' if you are > going to have references from the (DT) property level. I think I'd just > leave simple-card out of this and do the former. Above errors are coming only from simple-card. The audio-graph related binding checks are clean. It seems having "," in the property name is causing errors for simple-card. Is this intentional? Thanks Rob for inputs. I will leave simple-card out for now, but will use $defs. The reason is any other vendor schema can make use of these DAI defines. One such use I see is for (../sound/fsl,easrc.yaml for "fsl,asrc-rate").
diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml index 5c36867..30a644d9 100644 --- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml +++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml @@ -19,11 +19,10 @@ properties: description: "device name prefix" $ref: /schemas/types.yaml#/definitions/string convert-rate: - description: CPU to Codec rate convert. - $ref: /schemas/types.yaml#/definitions/uint32 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate" convert-channels: - description: CPU to Codec rate channels. - $ref: /schemas/types.yaml#/definitions/uint32 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels" + patternProperties: "^endpoint(@[0-9a-f]+)?": $ref: /schemas/graph.yaml#/$defs/endpoint-base @@ -65,11 +64,9 @@ patternProperties: - msb - lsb convert-rate: - description: CPU to Codec rate convert. - $ref: /schemas/types.yaml#/definitions/uint32 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate" convert-channels: - description: CPU to Codec rate channels. - $ref: /schemas/types.yaml#/definitions/uint32 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels" dai-tdm-slot-width-map: description: Mapping of sample widths to slot widths. For hardware diff --git a/Documentation/devicetree/bindings/sound/audio-graph.yaml b/Documentation/devicetree/bindings/sound/audio-graph.yaml index 4b46794..a9cd52e 100644 --- a/Documentation/devicetree/bindings/sound/audio-graph.yaml +++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml @@ -27,11 +27,10 @@ properties: 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 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate" convert-channels: - description: CPU to Codec rate channels. - $ref: /schemas/types.yaml#/definitions/uint32 + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels" + pa-gpios: maxItems: 1 hp-det-gpio: diff --git a/Documentation/devicetree/bindings/sound/dai-params.yaml b/Documentation/devicetree/bindings/sound/dai-params.yaml new file mode 100644 index 0000000..aae60cb --- /dev/null +++ b/Documentation/devicetree/bindings/sound/dai-params.yaml @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/dai-params.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Digital Audio Interface (DAI) Stream Parameters + +maintainers: + - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> + +select: false + +properties: + + dai-channels: + description: Number of audio channels used by DAI + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 1 + maximum: 32 + + dai-sample-rate: + description: Audio sample rate used by DAI + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 8000 + maximum: 192000 + +additionalProperties: true diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml index b261d49..ab03a2b 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.yaml +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml @@ -69,14 +69,6 @@ definitions: as amplifiers, to be added to the sound card. $ref: /schemas/types.yaml#/definitions/phandle-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 - prefix: description: "device name prefix" $ref: /schemas/types.yaml#/definitions/string @@ -188,9 +180,9 @@ properties: simple-audio-card,aux-devs: $ref: "#/definitions/aux-devs" simple-audio-card,convert-rate: - $ref: "#/definitions/convert-rate" + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate" simple-audio-card,convert-channels: - $ref: "#/definitions/convert-channels" + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels" simple-audio-card,prefix: $ref: "#/definitions/prefix" simple-audio-card,pin-switches: @@ -231,9 +223,9 @@ patternProperties: aux-devs: $ref: "#/definitions/aux-devs" convert-rate: - $ref: "#/definitions/convert-rate" + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate" convert-channels: - $ref: "#/definitions/convert-channels" + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels" prefix: $ref: "#/definitions/prefix" pin-switches:
The "convert-channels" and "convert-rate" bindings are provided for both simple-card and audio-graph-card. However these are separately defined in their respective schemas. For any new binding addition, which is common to both, there will be duplication. Introduce a new schema to have common DAI params properties and these can be re-used in other schemas wherever applicable. Signed-off-by: Sameer Pujar <spujar@nvidia.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> --- .../bindings/sound/audio-graph-port.yaml | 13 ++++------ .../devicetree/bindings/sound/audio-graph.yaml | 7 +++--- .../devicetree/bindings/sound/dai-params.yaml | 28 ++++++++++++++++++++++ .../devicetree/bindings/sound/simple-card.yaml | 16 ++++--------- 4 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/dai-params.yaml