* [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params
2022-08-01 16:07 [PATCH v2 0/3] DT binding for sample format conversion Sameer Pujar
@ 2022-08-01 16:07 ` Sameer Pujar
2022-08-01 19:30 ` Rob Herring
2022-08-01 16:07 ` [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion Sameer Pujar
2022-08-01 16:07 ` [PATCH v2 3/3] ASoC: simple-card-utils: Fixup DAI sample format Sameer Pujar
2 siblings, 1 reply; 10+ messages in thread
From: Sameer Pujar @ 2022-08-01 16:07 UTC (permalink / raw)
To: broonie, lgirdwood, robh+dt, krzysztof.kozlowski+dt, perex,
tiwai, kuninori.morimoto.gx
Cc: Sameer Pujar, devicetree, alsa-devel, linux-kernel
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
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:
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params
2022-08-01 16:07 ` [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params Sameer Pujar
@ 2022-08-01 19:30 ` Rob Herring
2022-08-02 10:45 ` Sameer Pujar
0 siblings, 1 reply; 10+ messages in thread
From: Rob Herring @ 2022-08-01 19:30 UTC (permalink / raw)
To: Sameer Pujar
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, lgirdwood,
linux-kernel, broonie, tiwai, robh+dt, krzysztof.kozlowski+dt
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.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params
2022-08-01 19:30 ` Rob Herring
@ 2022-08-02 10:45 ` Sameer Pujar
2022-08-02 14:46 ` Rob Herring
0 siblings, 1 reply; 10+ messages in thread
From: Sameer Pujar @ 2022-08-02 10:45 UTC (permalink / raw)
To: Rob Herring
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, lgirdwood,
linux-kernel, broonie, tiwai, robh+dt, krzysztof.kozlowski+dt
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?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params
2022-08-02 10:45 ` Sameer Pujar
@ 2022-08-02 14:46 ` Rob Herring
2022-08-04 10:09 ` Sameer Pujar
0 siblings, 1 reply; 10+ messages in thread
From: Rob Herring @ 2022-08-02 14:46 UTC (permalink / raw)
To: Sameer Pujar
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, lgirdwood,
linux-kernel, tiwai, broonie, krzysztof.kozlowski+dt
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.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params
2022-08-02 14:46 ` Rob Herring
@ 2022-08-04 10:09 ` Sameer Pujar
0 siblings, 0 replies; 10+ messages in thread
From: Sameer Pujar @ 2022-08-04 10:09 UTC (permalink / raw)
To: Rob Herring
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, lgirdwood,
linux-kernel, tiwai, broonie, krzysztof.kozlowski+dt
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").
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion
2022-08-01 16:07 [PATCH v2 0/3] DT binding for sample format conversion Sameer Pujar
2022-08-01 16:07 ` [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params Sameer Pujar
@ 2022-08-01 16:07 ` Sameer Pujar
2022-08-02 14:50 ` Rob Herring
2022-08-01 16:07 ` [PATCH v2 3/3] ASoC: simple-card-utils: Fixup DAI sample format Sameer Pujar
2 siblings, 1 reply; 10+ messages in thread
From: Sameer Pujar @ 2022-08-01 16:07 UTC (permalink / raw)
To: broonie, lgirdwood, robh+dt, krzysztof.kozlowski+dt, perex,
tiwai, kuninori.morimoto.gx
Cc: Sameer Pujar, devicetree, alsa-devel, linux-kernel
Presently "convert-channels" and "convert-rate" DT bindings are available
for channel and rate fixups respectively.
Similarly add "convert-sample-format" binding to fixup DAI sample format
as well. This is added to simple-card and audio-graph based sound cards.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
Documentation/devicetree/bindings/sound/audio-graph-port.yaml | 4 ++++
Documentation/devicetree/bindings/sound/audio-graph.yaml | 2 ++
Documentation/devicetree/bindings/sound/dai-params.yaml | 10 ++++++++++
Documentation/devicetree/bindings/sound/simple-card.yaml | 4 ++++
4 files changed, 20 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
index 30a644d9..8e64192 100644
--- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
+++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
@@ -22,6 +22,8 @@ properties:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
convert-channels:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
+ convert-sample-format:
+ $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
patternProperties:
"^endpoint(@[0-9a-f]+)?":
@@ -67,6 +69,8 @@ patternProperties:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
convert-channels:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
+ convert-sample-format:
+ $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
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 a9cd52e..93ddd55 100644
--- a/Documentation/devicetree/bindings/sound/audio-graph.yaml
+++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml
@@ -30,6 +30,8 @@ properties:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
convert-channels:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
+ convert-sample-format:
+ $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
pa-gpios:
maxItems: 1
diff --git a/Documentation/devicetree/bindings/sound/dai-params.yaml b/Documentation/devicetree/bindings/sound/dai-params.yaml
index aae60cb..933957d 100644
--- a/Documentation/devicetree/bindings/sound/dai-params.yaml
+++ b/Documentation/devicetree/bindings/sound/dai-params.yaml
@@ -19,6 +19,16 @@ properties:
minimum: 1
maximum: 32
+ dai-sample-format:
+ description: Audio sample format used by DAI
+ $ref: /schemas/types.yaml#/definitions/string
+ enum:
+ - s8
+ - s16_le
+ - s24_le
+ - s24_3le
+ - s32_le
+
dai-sample-rate:
description: Audio sample rate used by DAI
$ref: /schemas/types.yaml#/definitions/uint32
diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml
index ab03a2b..ec21190 100644
--- a/Documentation/devicetree/bindings/sound/simple-card.yaml
+++ b/Documentation/devicetree/bindings/sound/simple-card.yaml
@@ -183,6 +183,8 @@ properties:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
simple-audio-card,convert-channels:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
+ simple-audio-card,convert-sample-format:
+ $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
simple-audio-card,prefix:
$ref: "#/definitions/prefix"
simple-audio-card,pin-switches:
@@ -226,6 +228,8 @@ patternProperties:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
convert-channels:
$ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
+ convert-sample-format:
+ $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
prefix:
$ref: "#/definitions/prefix"
pin-switches:
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion
2022-08-01 16:07 ` [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion Sameer Pujar
@ 2022-08-02 14:50 ` Rob Herring
2022-08-04 11:09 ` Sameer Pujar
0 siblings, 1 reply; 10+ messages in thread
From: Rob Herring @ 2022-08-02 14:50 UTC (permalink / raw)
To: Sameer Pujar
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, linux-kernel,
tiwai, lgirdwood, broonie, krzysztof.kozlowski+dt
On Mon, Aug 01, 2022 at 09:37:31PM +0530, Sameer Pujar wrote:
> Presently "convert-channels" and "convert-rate" DT bindings are available
> for channel and rate fixups respectively.
>
> Similarly add "convert-sample-format" binding to fixup DAI sample format
> as well. This is added to simple-card and audio-graph based sound cards.
Do you have users for both cases?
>
> Signed-off-by: Sameer Pujar <spujar@nvidia.com>
> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> Documentation/devicetree/bindings/sound/audio-graph-port.yaml | 4 ++++
> Documentation/devicetree/bindings/sound/audio-graph.yaml | 2 ++
> Documentation/devicetree/bindings/sound/dai-params.yaml | 10 ++++++++++
> Documentation/devicetree/bindings/sound/simple-card.yaml | 4 ++++
> 4 files changed, 20 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
> index 30a644d9..8e64192 100644
> --- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
> +++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
> @@ -22,6 +22,8 @@ properties:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
> convert-channels:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
> + convert-sample-format:
> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
>
> patternProperties:
> "^endpoint(@[0-9a-f]+)?":
> @@ -67,6 +69,8 @@ patternProperties:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
> convert-channels:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
> + convert-sample-format:
> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
>
> 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 a9cd52e..93ddd55 100644
> --- a/Documentation/devicetree/bindings/sound/audio-graph.yaml
> +++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml
> @@ -30,6 +30,8 @@ properties:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
> convert-channels:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
> + convert-sample-format:
> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
Can someone explain why we need these properties defined in 3 different
locations? That's not a great pattern to continue.
>
> pa-gpios:
> maxItems: 1
> diff --git a/Documentation/devicetree/bindings/sound/dai-params.yaml b/Documentation/devicetree/bindings/sound/dai-params.yaml
> index aae60cb..933957d 100644
> --- a/Documentation/devicetree/bindings/sound/dai-params.yaml
> +++ b/Documentation/devicetree/bindings/sound/dai-params.yaml
> @@ -19,6 +19,16 @@ properties:
> minimum: 1
> maximum: 32
>
> + dai-sample-format:
> + description: Audio sample format used by DAI
> + $ref: /schemas/types.yaml#/definitions/string
> + enum:
> + - s8
> + - s16_le
> + - s24_le
> + - s24_3le
> + - s32_le
> +
> dai-sample-rate:
> description: Audio sample rate used by DAI
> $ref: /schemas/types.yaml#/definitions/uint32
> diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml
> index ab03a2b..ec21190 100644
> --- a/Documentation/devicetree/bindings/sound/simple-card.yaml
> +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml
> @@ -183,6 +183,8 @@ properties:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
> simple-audio-card,convert-channels:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
> + simple-audio-card,convert-sample-format:
Don't add more properties with 'simple-audio-card,' prefix. That's not a
pattern we want to be consistent with...
> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
> simple-audio-card,prefix:
> $ref: "#/definitions/prefix"
> simple-audio-card,pin-switches:
> @@ -226,6 +228,8 @@ patternProperties:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
> convert-channels:
> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
> + convert-sample-format:
> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
> prefix:
> $ref: "#/definitions/prefix"
> pin-switches:
> --
> 2.7.4
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion
2022-08-02 14:50 ` Rob Herring
@ 2022-08-04 11:09 ` Sameer Pujar
0 siblings, 0 replies; 10+ messages in thread
From: Sameer Pujar @ 2022-08-04 11:09 UTC (permalink / raw)
To: Rob Herring
Cc: devicetree, alsa-devel, kuninori.morimoto.gx, linux-kernel,
tiwai, lgirdwood, broonie, krzysztof.kozlowski+dt
On 02-08-2022 20:20, Rob Herring wrote:
> On Mon, Aug 01, 2022 at 09:37:31PM +0530, Sameer Pujar wrote:
>> Presently "convert-channels" and "convert-rate" DT bindings are available
>> for channel and rate fixups respectively.
>>
>> Similarly add "convert-sample-format" binding to fixup DAI sample format
>> as well. This is added to simple-card and audio-graph based sound cards.
> Do you have users for both cases?
I don't plan to use simple-card. Just added for consistency. Will drop this.
It would be required for audio-graph.
>
>> Signed-off-by: Sameer Pujar<spujar@nvidia.com>
>> Cc: Kuninori Morimoto<kuninori.morimoto.gx@renesas.com>
>> ---
>> Documentation/devicetree/bindings/sound/audio-graph-port.yaml | 4 ++++
>> Documentation/devicetree/bindings/sound/audio-graph.yaml | 2 ++
>> Documentation/devicetree/bindings/sound/dai-params.yaml | 10 ++++++++++
>> Documentation/devicetree/bindings/sound/simple-card.yaml | 4 ++++
>> 4 files changed, 20 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
>> index 30a644d9..8e64192 100644
>> --- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
>> +++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml
>> @@ -22,6 +22,8 @@ properties:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
>> convert-channels:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
>> + convert-sample-format:
>> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
>>
>> patternProperties:
>> "^endpoint(@[0-9a-f]+)?":
>> @@ -67,6 +69,8 @@ patternProperties:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
>> convert-channels:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
>> + convert-sample-format:
>> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
>>
>> 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 a9cd52e..93ddd55 100644
>> --- a/Documentation/devicetree/bindings/sound/audio-graph.yaml
>> +++ b/Documentation/devicetree/bindings/sound/audio-graph.yaml
>> @@ -30,6 +30,8 @@ properties:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
>> convert-channels:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
>> + convert-sample-format:
>> + $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-format"
> Can someone explain why we need these properties defined in 3 different
> locations? That's not a great pattern to continue.
The properties are defined at sound card, port and endpoint node level.
I guess the idea is to selectively apply a configuration to a group of
endpoints/ports or just specific endpoint. Morimoto-san can comment if
there are other reasons to do so.
>> pa-gpios:
>> maxItems: 1
>> diff --git a/Documentation/devicetree/bindings/sound/dai-params.yaml b/Documentation/devicetree/bindings/sound/dai-params.yaml
>> index aae60cb..933957d 100644
>> --- a/Documentation/devicetree/bindings/sound/dai-params.yaml
>> +++ b/Documentation/devicetree/bindings/sound/dai-params.yaml
>> @@ -19,6 +19,16 @@ properties:
>> minimum: 1
>> maximum: 32
>>
>> + dai-sample-format:
>> + description: Audio sample format used by DAI
>> + $ref: /schemas/types.yaml#/definitions/string
>> + enum:
>> + - s8
>> + - s16_le
>> + - s24_le
>> + - s24_3le
>> + - s32_le
>> +
>> dai-sample-rate:
>> description: Audio sample rate used by DAI
>> $ref: /schemas/types.yaml#/definitions/uint32
>> diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml
>> index ab03a2b..ec21190 100644
>> --- a/Documentation/devicetree/bindings/sound/simple-card.yaml
>> +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml
>> @@ -183,6 +183,8 @@ properties:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-sample-rate"
>> simple-audio-card,convert-channels:
>> $ref: "/schemas/sound/dai-params.yaml#/properties/dai-channels"
>> + simple-audio-card,convert-sample-format:
> Don't add more properties with 'simple-audio-card,' prefix. That's not a
> pattern we want to be consistent with...
Will drop this in next revision.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/3] ASoC: simple-card-utils: Fixup DAI sample format
2022-08-01 16:07 [PATCH v2 0/3] DT binding for sample format conversion Sameer Pujar
2022-08-01 16:07 ` [PATCH v2 1/3] ASoC: dt-bindings: Add schema for common DAI params Sameer Pujar
2022-08-01 16:07 ` [PATCH v2 2/3] ASoC: dt-bindings: Add sample format conversion Sameer Pujar
@ 2022-08-01 16:07 ` Sameer Pujar
2 siblings, 0 replies; 10+ messages in thread
From: Sameer Pujar @ 2022-08-01 16:07 UTC (permalink / raw)
To: broonie, lgirdwood, robh+dt, krzysztof.kozlowski+dt, perex,
tiwai, kuninori.morimoto.gx
Cc: Sameer Pujar, devicetree, alsa-devel, linux-kernel
Parse "convert-sample-format" DT binding and fixup the sample format
as applicable. This is similar to the existing "convert-channels" and
"convert-rate" properties for channels and rate fixup respectively.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
include/sound/simple_card_utils.h | 1 +
sound/soc/generic/simple-card-utils.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h
index ab55f40..a0b827f 100644
--- a/include/sound/simple_card_utils.h
+++ b/include/sound/simple_card_utils.h
@@ -39,6 +39,7 @@ struct asoc_simple_dai {
struct asoc_simple_data {
u32 convert_rate;
u32 convert_channels;
+ const char *convert_sample_format;
};
struct asoc_simple_jack {
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
index 4a29e31..1b201dd 100644
--- a/sound/soc/generic/simple-card-utils.c
+++ b/sound/soc/generic/simple-card-utils.c
@@ -15,6 +15,33 @@
#include <sound/pcm_params.h>
#include <sound/simple_card_utils.h>
+static void asoc_simple_fixup_sample_fmt(struct asoc_simple_data *data,
+ struct snd_pcm_hw_params *params)
+{
+ int i;
+ struct snd_mask *mask = hw_param_mask(params,
+ SNDRV_PCM_HW_PARAM_FORMAT);
+ struct {
+ char *fmt;
+ u32 val;
+ } of_sample_fmt_table[] = {
+ { "s8", SNDRV_PCM_FORMAT_S8},
+ { "s16_le", SNDRV_PCM_FORMAT_S16_LE},
+ { "s24_le", SNDRV_PCM_FORMAT_S24_LE},
+ { "s24_3le", SNDRV_PCM_FORMAT_S24_3LE},
+ { "s32_le", SNDRV_PCM_FORMAT_S32_LE},
+ };
+
+ for (i = 0; i < ARRAY_SIZE(of_sample_fmt_table); i++) {
+ if (!strcmp(data->convert_sample_format,
+ of_sample_fmt_table[i].fmt)) {
+ snd_mask_none(mask);
+ snd_mask_set(mask, of_sample_fmt_table[i].val);
+ break;
+ }
+ }
+}
+
void asoc_simple_convert_fixup(struct asoc_simple_data *data,
struct snd_pcm_hw_params *params)
{
@@ -30,6 +57,9 @@ void asoc_simple_convert_fixup(struct asoc_simple_data *data,
if (data->convert_channels)
channels->min =
channels->max = data->convert_channels;
+
+ if (data->convert_sample_format)
+ asoc_simple_fixup_sample_fmt(data, params);
}
EXPORT_SYMBOL_GPL(asoc_simple_convert_fixup);
@@ -49,6 +79,10 @@ void asoc_simple_parse_convert(struct device_node *np,
/* channels transfer */
snprintf(prop, sizeof(prop), "%s%s", prefix, "convert-channels");
of_property_read_u32(np, prop, &data->convert_channels);
+
+ /* convert sample format */
+ snprintf(prop, sizeof(prop), "%s%s", prefix, "convert-sample-format");
+ of_property_read_string(np, prop, &data->convert_sample_format);
}
EXPORT_SYMBOL_GPL(asoc_simple_parse_convert);
--
2.7.4
^ permalink raw reply related [flat|nested] 10+ messages in thread