2021-12-03 12:02:56

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

Convert the bindings for McASP controllers for TI SOCs from txt
to YAML schema.

Adds additional properties 'clocks', 'clock-names', 'power-domains',
'#sound-dai-cells' and 'port' which were missing from txt file.
Removes properties 'sram-size-playback' and 'sram-size-capture'
since they are not used.
Adds 'dmas' and 'dma-names' in the example which were missing from
the txt file.
Changes 'interrupts' and 'interrupt-names' from optional to
required properties.
Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
as they are not needed if the McASP is used only as GPIO.

Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
INSTRUMENTS ASoC DRIVERS'

Signed-off-by: Jayesh Choudhary <[email protected]>
---
Changelog:
v4:
- changes the commit message
- adds type and description to relevant properties
- changes maxItems for 'serial-dir'
- removes properties 'sram-size-playback' and 'sram-size-capture'
as they are not used
- removes 'function-gpios'
- removes 'num-serializer'
- marks 'tdm-slots', 'serial-dir' and 'op-mode' as optional properties
- adds the yaml file in MAINTAINERS

v3:
- removes maxItems from 'clock-names'

v2:
- changes the commit message
- modifies the properties 'clocks', 'clock-names', 'dma-names',
'dmas', 'interrupts' and 'interrupt-names' according to the
arm SOCs
- adds 'ports' and 'num-serializer' as node properties

.../bindings/sound/davinci-mcasp-audio.txt | 86 --------
.../bindings/sound/davinci-mcasp-audio.yaml | 185 ++++++++++++++++++
MAINTAINERS | 1 +
3 files changed, 186 insertions(+), 86 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
create mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml

diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
deleted file mode 100644
index bd863bd69501..000000000000
--- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-Texas Instruments McASP controller
-
-Required properties:
-- compatible :
- "ti,dm646x-mcasp-audio" : for DM646x platforms
- "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms
- "ti,am33xx-mcasp-audio" : for AM33xx platforms (AM33xx, AM43xx, TI81xx)
- "ti,dra7-mcasp-audio" : for DRA7xx platforms
- "ti,omap4-mcasp-audio" : for OMAP4
-
-- reg : Should contain reg specifiers for the entries in the reg-names property.
-- reg-names : Should contain:
- * "mpu" for the main registers (required). For compatibility with
- existing software, it is recommended this is the first entry.
- * "dat" for separate data port register access (optional).
-- op-mode : I2S/DIT ops mode. 0 for I2S mode. 1 for DIT mode used for S/PDIF,
- IEC60958-1, and AES-3 formats.
-- tdm-slots : Slots for TDM operation. Indicates number of channels transmitted
- or received over one serializer.
-- serial-dir : A list of serializer configuration. Each entry is a number
- indication for serializer pin direction.
- (0 - INACTIVE, 1 - TX, 2 - RX)
-- dmas: two element list of DMA controller phandles and DMA request line
- ordered pairs.
-- dma-names: identifier string for each DMA request line in the dmas property.
- These strings correspond 1:1 with the ordered pairs in dmas. The dma
- identifiers must be "rx" and "tx".
-
-Optional properties:
-
-- ti,hwmods : Must be "mcasp<n>", n is controller instance starting 0
-- tx-num-evt : FIFO levels.
-- rx-num-evt : FIFO levels.
-- dismod : Specify the drive on TX pin during inactive slots
- 0 : 3-state
- 2 : logic low
- 3 : logic high
- Defaults to 'logic low' when the property is not present
-- sram-size-playback : size of sram to be allocated during playback
-- sram-size-capture : size of sram to be allocated during capture
-- interrupts : Interrupt numbers for McASP
-- interrupt-names : Known interrupt names are "tx" and "rx"
-- pinctrl-0: Should specify pin control group used for this controller.
-- pinctrl-names: Should contain only one value - "default", for more details
- please refer to pinctrl-bindings.txt
-- fck_parent : Should contain a valid clock name which will be used as parent
- for the McASP fck
-- auxclk-fs-ratio: When McASP is bus master indicates the ratio between AUCLK
- and FS rate if applicable:
- AUCLK rate = auxclk-fs-ratio * FS rate
-
-Optional GPIO support:
-If any McASP pin need to be used as GPIO then the McASP node must have:
-...
- gpio-controller
- #gpio-cells = <2>;
-...
-
-When requesting a GPIO, the first parameter is the PIN index in McASP_P*
-registers.
-For example to request the AXR2 pin of mcasp8:
-function-gpios = <&mcasp8 2 0>;
-
-Or to request the ACLKR pin of mcasp8:
-function-gpios = <&mcasp8 29 0>;
-
-For generic gpio information, please refer to bindings/gpio/gpio.txt
-
-Example:
-
-mcasp0: mcasp0@1d00000 {
- compatible = "ti,da830-mcasp-audio";
- reg = <0x100000 0x3000>;
- reg-names "mpu";
- interrupts = <82>, <83>;
- interrupt-names = "tx", "rx";
- op-mode = <0>; /* MCASP_IIS_MODE */
- tdm-slots = <2>;
- serial-dir = <
- 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
- 0 0 0 0
- 0 0 0 1
- 2 0 0 0 >;
- tx-num-evt = <1>;
- rx-num-evt = <1>;
-};
diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
new file mode 100644
index 000000000000..5b553c90771a
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
@@ -0,0 +1,185 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/davinci-mcasp-audio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: McASP Controller for TI SoCs
+
+maintainers:
+ - Jayesh Choudhary <[email protected]>
+
+properties:
+ compatible:
+ enum:
+ - ti,dm646x-mcasp-audio
+ - ti,da830-mcasp-audio
+ - ti,am33xx-mcasp-audio
+ - ti,dra7-mcasp-audio
+ - ti,omap4-mcasp-audio
+
+ reg:
+ minItems: 1
+ items:
+ - description: main registers
+ - description: data port register
+
+ reg-names:
+ minItems: 1
+ items:
+ - const: mpu
+ - const: dat
+
+ op-mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: I2S - 0 or DIT - 1 operation mode
+ enum:
+ - 0
+ - 1
+
+ tdm-slots:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: number of channels over one serializer
+ maxItems: 1
+
+ serial-dir:
+ description:
+ A list of serializer configuration
+ Entry is indication for serializer pin direction
+ 0 - Inactive, 1 - TX, 2 - RX
+ All AXR pins should be present in the array even if inactive
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 1
+ maxItems: 25
+ items:
+ minimum: 0
+ maximum: 2
+ default: 0
+
+ dmas:
+ minItems: 1
+ items:
+ - description: transmission DMA channel
+ - description: reception DMA channel
+
+ dma-names:
+ minItems: 1
+ items:
+ - const: tx
+ - const: rx
+
+ ti,hwmods:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: Name of hwmod associated with McASP
+ maxItems: 1
+ deprecated: true
+
+ tx-num-evt:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: configures WFIFO threshold
+ maxItems: 1
+
+ rx-num-evt:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: configures RFIFO threshold
+ maxItems: 1
+
+ dismod:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ specify the drive on TX pin during inactive time slots
+ 0 - 3-state, 2 - logic low, 3 - logic high
+ enum:
+ - 0
+ - 2
+ - 3
+ default: 2
+
+ interrupts:
+ anyOf:
+ - minItems: 1
+ items:
+ - description: TX FIFO interrupt
+ - description: RX FIFO interrupt
+ - items:
+ - description: common FIFO interrupt
+
+ interrupt-names:
+ oneOf:
+ - minItems: 1
+ items:
+ - const: tx
+ - const: rx
+ - const: common
+
+ fck_parent:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: parent clock name for McASP fck
+ maxItems: 1
+
+ auxclk-fs-ratio:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: ratio of AUCLK and FS rate if applicable
+ maxItems: 1
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+ clocks:
+ minItems: 1
+ items:
+ - description: functional clock
+ - description: module specific optional ahclkx clock
+ - description: module specific optional ahclkr clock
+
+ clock-names:
+ minItems: 1
+ items:
+ - const: fck
+ - const: ahclkx
+ - const: ahclkr
+
+ power-domains:
+ description: phandle to the corresponding power-domain
+ maxItems: 1
+
+ "#sound-dai-cells":
+ const: 0
+
+ port:
+ description: connection for when McASP is used via graph card
+ type: object
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - dmas
+ - dma-names
+ - interrupts
+ - interrupt-names
+
+additionalProperties: false
+
+examples:
+ - |
+ mcasp0: mcasp0@1d00000 {
+ compatible = "ti,da830-mcasp-audio";
+ reg = <0x100000 0x3000>;
+ reg-names = "mpu";
+ interrupts = <82>, <83>;
+ interrupt-names = "tx", "rx";
+ op-mode = <0>; /* MCASP_IIS_MODE */
+ tdm-slots = <2>;
+ dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
+ dma-names = "tx", "rx";
+ serial-dir = <
+ 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
+ 0 0 0 0
+ 0 0 0 1
+ 2 0 0 0 >;
+ tx-num-evt = <1>;
+ rx-num-evt = <1>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 00ad0cb5cb05..3fdf1e23f7d7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -18855,6 +18855,7 @@ TEXAS INSTRUMENTS ASoC DRIVERS
M: Peter Ujfalusi <[email protected]>
L: [email protected] (moderated for non-subscribers)
S: Maintained
+F: Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
F: sound/soc/ti/

TEXAS INSTRUMENTS' DAC7612 DAC DRIVER
--
2.17.1



2021-12-03 23:34:41

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

On Fri, 03 Dec 2021 17:32:43 +0530, Jayesh Choudhary wrote:
> Convert the bindings for McASP controllers for TI SOCs from txt
> to YAML schema.
>
> Adds additional properties 'clocks', 'clock-names', 'power-domains',
> '#sound-dai-cells' and 'port' which were missing from txt file.
> Removes properties 'sram-size-playback' and 'sram-size-capture'
> since they are not used.
> Adds 'dmas' and 'dma-names' in the example which were missing from
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.
> Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
> as they are not needed if the McASP is used only as GPIO.
>
> Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
> INSTRUMENTS ASoC DRIVERS'
>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> v4:
> - changes the commit message
> - adds type and description to relevant properties
> - changes maxItems for 'serial-dir'
> - removes properties 'sram-size-playback' and 'sram-size-capture'
> as they are not used
> - removes 'function-gpios'
> - removes 'num-serializer'
> - marks 'tdm-slots', 'serial-dir' and 'op-mode' as optional properties
> - adds the yaml file in MAINTAINERS
>
> v3:
> - removes maxItems from 'clock-names'
>
> v2:
> - changes the commit message
> - modifies the properties 'clocks', 'clock-names', 'dma-names',
> 'dmas', 'interrupts' and 'interrupt-names' according to the
> arm SOCs
> - adds 'ports' and 'num-serializer' as node properties
>
> .../bindings/sound/davinci-mcasp-audio.txt | 86 --------
> .../bindings/sound/davinci-mcasp-audio.yaml | 185 ++++++++++++++++++
> MAINTAINERS | 1 +
> 3 files changed, 186 insertions(+), 86 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
> create mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
>

Running 'make dtbs_check' with the schema in this patch gives the
following warnings. Consider if they are expected or the schema is
incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check.
This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/patch/1563206


mcasp@0: 'num-serializer' does not match any of the regexes: 'pinctrl-[0-9]+'
arch/arm/boot/dts/am335x-cm-t335.dt.yaml
arch/arm/boot/dts/am335x-sbc-t335.dt.yaml

mcasp@0: 'rt-num-evt' does not match any of the regexes: 'pinctrl-[0-9]+'
arch/arm/boot/dts/am335x-wega-rdk.dt.yaml


2021-12-04 08:20:23

by Péter Ujfalusi

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

Hi,

On 03/12/2021 14:02, Jayesh Choudhary wrote:
> Convert the bindings for McASP controllers for TI SOCs from txt
> to YAML schema.
>
> Adds additional properties 'clocks', 'clock-names', 'power-domains',
> '#sound-dai-cells' and 'port' which were missing from txt file.
> Removes properties 'sram-size-playback' and 'sram-size-capture'
> since they are not used.
> Adds 'dmas' and 'dma-names' in the example which were missing from
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.
> Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
> as they are not needed if the McASP is used only as GPIO.
>
> Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
> INSTRUMENTS ASoC DRIVERS'
>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> v4:
> - changes the commit message
> - adds type and description to relevant properties
> - changes maxItems for 'serial-dir'
> - removes properties 'sram-size-playback' and 'sram-size-capture'
> as they are not used
> - removes 'function-gpios'
> - removes 'num-serializer'
> - marks 'tdm-slots', 'serial-dir' and 'op-mode' as optional properties
> - adds the yaml file in MAINTAINERS
>

...

> diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> new file mode 100644
> index 000000000000..5b553c90771a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> @@ -0,0 +1,185 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/davinci-mcasp-audio.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: McASP Controller for TI SoCs
> +
> +maintainers:
> + - Jayesh Choudhary <[email protected]>
> +
> +properties:
> + compatible:
> + enum:
> + - ti,dm646x-mcasp-audio
> + - ti,da830-mcasp-audio
> + - ti,am33xx-mcasp-audio
> + - ti,dra7-mcasp-audio
> + - ti,omap4-mcasp-audio
> +
> + reg:
> + minItems: 1
> + items:
> + - description: main registers

The TRM refers to this area as CFG registers

> + - description: data port register

Data registers

> +
> + reg-names:
> + minItems: 1
> + items:
> + - const: mpu
> + - const: dat
> +
> + op-mode:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: I2S - 0 or DIT - 1 operation mode

0 - I2S, or 1 - DIT operation mode

> + enum:
> + - 0
> + - 1
> +
> + tdm-slots:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: number of channels over one serializer
> + maxItems: 1

and it has to be between 2 and 32, ignored in DIT mode (384 slots)

> +
> + serial-dir:
> + description:
> + A list of serializer configuration
> + Entry is indication for serializer pin direction
> + 0 - Inactive, 1 - TX, 2 - RX
> + All AXR pins should be present in the array even if inactive
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 25
> + items:
> + minimum: 0
> + maximum: 2
> + default: 0

There is no default as all pins must be accounted for.

> +
> + dmas:
> + minItems: 1
> + items:
> + - description: transmission DMA channel
> + - description: reception DMA channel
> +
> + dma-names:
> + minItems: 1
> + items:
> + - const: tx
> + - const: rx
> +
> + ti,hwmods:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: Name of hwmod associated with McASP
> + maxItems: 1
> + deprecated: true
> +
> + tx-num-evt:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: configures WFIFO threshold

0 disables the FIFO use
If the property is missing, it also disables the FIFO use.

> + maxItems: 1
> +
> + rx-num-evt:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: configures RFIFO threshold
> + maxItems: 1
> +
> + dismod:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + specify the drive on TX pin during inactive time slots
> + 0 - 3-state, 2 - logic low, 3 - logic high
> + enum:
> + - 0
> + - 2
> + - 3
> + default: 2
> +
> + interrupts:
> + anyOf:
> + - minItems: 1
> + items:
> + - description: TX FIFO interrupt
> + - description: RX FIFO interrupt
> + - items:
> + - description: common FIFO interrupt

These has nothing to do with FIFO, they are just transmit, receive and
common or combined

> +
> + interrupt-names:
> + oneOf:
> + - minItems: 1
> + items:
> + - const: tx
> + - const: rx
> + - const: common
> +
> + fck_parent:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: parent clock name for McASP fck
> + maxItems: 1
> +
> + auxclk-fs-ratio:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: ratio of AUCLK and FS rate if applicable
> + maxItems: 1
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + clocks:
> + minItems: 1
> + items:
> + - description: functional clock
> + - description: module specific optional ahclkx clock
> + - description: module specific optional ahclkr clock
> +
> + clock-names:
> + minItems: 1
> + items:
> + - const: fck
> + - const: ahclkx
> + - const: ahclkr
> +
> + power-domains:
> + description: phandle to the corresponding power-domain
> + maxItems: 1
> +
> + "#sound-dai-cells":
> + const: 0
> +
> + port:
> + description: connection for when McASP is used via graph card
> + type: object

I understand that it can be present under the mcasp node as it is part
of the graph card binding (or a card binding using graph).
I mean if a new card binding comes around then we need to document it
here as well?

> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - dmas
> + - dma-names
> + - interrupts
> + - interrupt-names
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + mcasp0: mcasp0@1d00000 {
> + compatible = "ti,da830-mcasp-audio";
> + reg = <0x100000 0x3000>;
> + reg-names = "mpu";
> + interrupts = <82>, <83>;
> + interrupt-names = "tx", "rx";
> + op-mode = <0>; /* MCASP_IIS_MODE */
> + tdm-slots = <2>;
> + dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
> + dma-names = "tx", "rx";
> + serial-dir = <
> + 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
> + 0 0 0 0
> + 0 0 0 1
> + 2 0 0 0 >;
> + tx-num-evt = <1>;
> + rx-num-evt = <1>;
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 00ad0cb5cb05..3fdf1e23f7d7 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18855,6 +18855,7 @@ TEXAS INSTRUMENTS ASoC DRIVERS
> M: Peter Ujfalusi <[email protected]>
> L: [email protected] (moderated for non-subscribers)
> S: Maintained
> +F: Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> F: sound/soc/ti/
>
> TEXAS INSTRUMENTS' DAC7612 DAC DRIVER
>

--
Péter

2021-12-07 05:03:22

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

Hi,

On 04/12/21 1:50 pm, Péter Ujfalusi wrote:
> Hi,
>
> On 03/12/2021 14:02, Jayesh Choudhary wrote:
>> Convert the bindings for McASP controllers for TI SOCs from txt
>> to YAML schema.
>>
>> Adds additional properties 'clocks', 'clock-names', 'power-domains',
>> '#sound-dai-cells' and 'port' which were missing from txt file.
>> Removes properties 'sram-size-playback' and 'sram-size-capture'
>> since they are not used.
>> Adds 'dmas' and 'dma-names' in the example which were missing from
>> the txt file.
>> Changes 'interrupts' and 'interrupt-names' from optional to
>> required properties.
>> Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
>> as they are not needed if the McASP is used only as GPIO.
>>
>> Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
>> INSTRUMENTS ASoC DRIVERS'
>>
>> Signed-off-by: Jayesh Choudhary <[email protected]>
>> ---
>> Changelog:
>> v4:
>> - changes the commit message
>> - adds type and description to relevant properties
>> - changes maxItems for 'serial-dir'
>> - removes properties 'sram-size-playback' and 'sram-size-capture'
>> as they are not used
>> - removes 'function-gpios'
>> - removes 'num-serializer'
>> - marks 'tdm-slots', 'serial-dir' and 'op-mode' as optional properties
>> - adds the yaml file in MAINTAINERS
>>
>
> ...
>
>> + reg:
>> + minItems: 1
>> + items:
>> + - description: main registers
>
> The TRM refers to this area as CFG registers
>
>> + - description: data port register
>
> Data registers
>
>> +
>> + op-mode:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: I2S - 0 or DIT - 1 operation mode
>
> 0 - I2S, or 1 - DIT operation mode
>

I will change the description for 'reg' and 'op-mode'.

>> + enum:
>> + - 0
>> + - 1
>> +
>> + tdm-slots:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: number of channels over one serializer
>> + maxItems: 1
>
> and it has to be between 2 and 32, ignored in DIT mode (384 slots)
>

Will add minimum and maximum. Should this be added as a conditional
property when op-mode is 0 (I2S mode) and mark it as required?

>> +
>> + serial-dir:
>> + description:
>> + A list of serializer configuration
>> + Entry is indication for serializer pin direction
>> + 0 - Inactive, 1 - TX, 2 - RX
>> + All AXR pins should be present in the array even if inactive
>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>> + minItems: 1
>> + maxItems: 25
>> + items:
>> + minimum: 0
>> + maximum: 2
>> + default: 0
>
> There is no default as all pins must be accounted for.
>

Okay. Will remove it.

>> +
>> + tx-num-evt:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: configures WFIFO threshold
>
> 0 disables the FIFO use
> If the property is missing, it also disables the FIFO use.
>

Will mention this in the description of both tx/rx-num-evt.

>> + maxItems: 1
>> +
>> + rx-num-evt:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: configures RFIFO threshold
>> + maxItems: 1

>> +
>> + interrupts:
>> + anyOf:
>> + - minItems: 1
>> + items:
>> + - description: TX FIFO interrupt
>> + - description: RX FIFO interrupt
>> + - items:
>> + - description: common FIFO interrupt
>
> These has nothing to do with FIFO, they are just transmit, receive and
> common or combined
>

Okay.

>> +
>> + port:
>> + description: connection for when McASP is used via graph card
>> + type: object
>
> I understand that it can be present under the mcasp node as it is part
> of the graph card binding (or a card binding using graph).
> I mean if a new card binding comes around then we need to document it
> here as well?
>

Specific properties are not marked for the port. So it should not be an
issue. Other alternative is to mark the additional properties as true
but that is not preferred.

Peter,
Any other changes I should make?

>> +
>

2021-12-07 19:40:24

by Péter Ujfalusi

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

Hi,

On 12/7/21 07:03, Jayesh Choudhary wrote:
>>> +  tdm-slots:
>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>> +    description: number of channels over one serializer
>>> +    maxItems: 1
>>
>> and it has to be between 2 and 32, ignored in DIT mode (384 slots)
>>
>
> Will add minimum and maximum. Should this be added as a conditional
> property when op-mode is 0 (I2S mode) and mark it as required?

That would make it much nicer, yes, thank you!

>>> +  port:
>>> +    description: connection for when McASP is used via graph card
>>> +    type: object
>>
>> I understand that it can be present under the mcasp node as it is part
>> of the graph card binding (or a card binding using graph).
>> I mean if a new card binding comes around then we need to document it
>> here as well?
>>
>
> Specific properties are not marked for the port. So it should not be an
> issue. Other alternative is to mark the additional properties as true
> but that is not preferred.

If the McASP is used with simple-sound-card (as it is the case most of
the time) then the port is not present under the node for this device as
the card is not using graph.
I consider the port (and the #sound-dai-cells if we are here) not part
of the McASP hardware description as they are part of the graph or
simple-card binding.

I'm fine if the port remains here

> Peter,
> Any other changes I should make?

Not much, this already looking good.
I would fix the dts files which generates warning/error with this yaml
as they are incorrect.

--
Péter

2021-12-09 05:49:29

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema



On 08/12/21 1:14 am, Péter Ujfalusi wrote:

>
> I'm fine if the port remains here
>
>> Peter,
>> Any other changes I should make?
>
> Not much, this already looking good.
> I would fix the dts files which generates warning/error with this yaml
> as they are incorrect.
>

One patch has already been sent for the typo error in the dts file which
generates a warning:
https://lore.kernel.org/all/[email protected]/

The 'num-serializer' issue needs to be fixed.

-Jayesh

2021-12-10 21:24:34

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema

On Fri, Dec 03, 2021 at 05:32:43PM +0530, Jayesh Choudhary wrote:
> Convert the bindings for McASP controllers for TI SOCs from txt
> to YAML schema.
>
> Adds additional properties 'clocks', 'clock-names', 'power-domains',
> '#sound-dai-cells' and 'port' which were missing from txt file.
> Removes properties 'sram-size-playback' and 'sram-size-capture'
> since they are not used.
> Adds 'dmas' and 'dma-names' in the example which were missing from
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.
> Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
> as they are not needed if the McASP is used only as GPIO.
>
> Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
> INSTRUMENTS ASoC DRIVERS'
>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> v4:
> - changes the commit message
> - adds type and description to relevant properties
> - changes maxItems for 'serial-dir'
> - removes properties 'sram-size-playback' and 'sram-size-capture'
> as they are not used
> - removes 'function-gpios'
> - removes 'num-serializer'
> - marks 'tdm-slots', 'serial-dir' and 'op-mode' as optional properties
> - adds the yaml file in MAINTAINERS
>
> v3:
> - removes maxItems from 'clock-names'
>
> v2:
> - changes the commit message
> - modifies the properties 'clocks', 'clock-names', 'dma-names',
> 'dmas', 'interrupts' and 'interrupt-names' according to the
> arm SOCs
> - adds 'ports' and 'num-serializer' as node properties
>
> .../bindings/sound/davinci-mcasp-audio.txt | 86 --------
> .../bindings/sound/davinci-mcasp-audio.yaml | 185 ++++++++++++++++++
> MAINTAINERS | 1 +
> 3 files changed, 186 insertions(+), 86 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
> create mode 100644 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml


> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> @@ -0,0 +1,185 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/davinci-mcasp-audio.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: McASP Controller for TI SoCs
> +
> +maintainers:
> + - Jayesh Choudhary <[email protected]>
> +
> +properties:
> + compatible:
> + enum:
> + - ti,dm646x-mcasp-audio
> + - ti,da830-mcasp-audio
> + - ti,am33xx-mcasp-audio
> + - ti,dra7-mcasp-audio
> + - ti,omap4-mcasp-audio
> +
> + reg:
> + minItems: 1
> + items:
> + - description: main registers
> + - description: data port register
> +
> + reg-names:
> + minItems: 1
> + items:
> + - const: mpu
> + - const: dat
> +
> + op-mode:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: I2S - 0 or DIT - 1 operation mode
> + enum:
> + - 0
> + - 1
> +
> + tdm-slots:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: number of channels over one serializer
> + maxItems: 1

It's a uint32, so there's always 1 item. Drop.

No constraints? 0-2^32 is valid?

> +
> + serial-dir:
> + description:
> + A list of serializer configuration
> + Entry is indication for serializer pin direction
> + 0 - Inactive, 1 - TX, 2 - RX
> + All AXR pins should be present in the array even if inactive
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 25
> + items:
> + minimum: 0
> + maximum: 2
> + default: 0
> +
> + dmas:
> + minItems: 1
> + items:
> + - description: transmission DMA channel
> + - description: reception DMA channel
> +
> + dma-names:
> + minItems: 1
> + items:
> + - const: tx
> + - const: rx
> +
> + ti,hwmods:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: Name of hwmod associated with McASP
> + maxItems: 1
> + deprecated: true
> +
> + tx-num-evt:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: configures WFIFO threshold
> + maxItems: 1
> +
> + rx-num-evt:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: configures RFIFO threshold
> + maxItems: 1
> +
> + dismod:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + specify the drive on TX pin during inactive time slots
> + 0 - 3-state, 2 - logic low, 3 - logic high
> + enum:
> + - 0
> + - 2
> + - 3
> + default: 2
> +
> + interrupts:
> + anyOf:
> + - minItems: 1
> + items:
> + - description: TX FIFO interrupt
> + - description: RX FIFO interrupt
> + - items:
> + - description: common FIFO interrupt
> +
> + interrupt-names:
> + oneOf:
> + - minItems: 1
> + items:
> + - const: tx
> + - const: rx
> + - const: common
> +
> + fck_parent:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: parent clock name for McASP fck
> + maxItems: 1
> +
> + auxclk-fs-ratio:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: ratio of AUCLK and FS rate if applicable
> + maxItems: 1
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + clocks:
> + minItems: 1
> + items:
> + - description: functional clock
> + - description: module specific optional ahclkx clock
> + - description: module specific optional ahclkr clock
> +
> + clock-names:
> + minItems: 1
> + items:
> + - const: fck
> + - const: ahclkx
> + - const: ahclkr
> +
> + power-domains:
> + description: phandle to the corresponding power-domain
> + maxItems: 1
> +
> + "#sound-dai-cells":
> + const: 0
> +
> + port:
> + description: connection for when McASP is used via graph card
> + type: object
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - dmas
> + - dma-names
> + - interrupts
> + - interrupt-names
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + mcasp0: mcasp0@1d00000 {

Drop unused labels.

> + compatible = "ti,da830-mcasp-audio";
> + reg = <0x100000 0x3000>;
> + reg-names = "mpu";
> + interrupts = <82>, <83>;
> + interrupt-names = "tx", "rx";
> + op-mode = <0>; /* MCASP_IIS_MODE */
> + tdm-slots = <2>;
> + dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
> + dma-names = "tx", "rx";
> + serial-dir = <
> + 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
> + 0 0 0 0
> + 0 0 0 1
> + 2 0 0 0 >;
> + tx-num-evt = <1>;
> + rx-num-evt = <1>;
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 00ad0cb5cb05..3fdf1e23f7d7 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18855,6 +18855,7 @@ TEXAS INSTRUMENTS ASoC DRIVERS
> M: Peter Ujfalusi <[email protected]>
> L: [email protected] (moderated for non-subscribers)
> S: Maintained
> +F: Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> F: sound/soc/ti/
>
> TEXAS INSTRUMENTS' DAC7612 DAC DRIVER
> --
> 2.17.1
>
>

2021-12-14 04:58:16

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v4] ASoC: dt-bindings: davinci-mcasp: convert McASP bindings to yaml schema



On 11/12/21 2:54 am, Rob Herring wrote:
> On Fri, Dec 03, 2021 at 05:32:43PM +0530, Jayesh Choudhary wrote:
>> Convert the bindings for McASP controllers for TI SOCs from txt
>> to YAML schema.
>>
>> Adds additional properties 'clocks', 'clock-names', 'power-domains',
>> '#sound-dai-cells' and 'port' which were missing from txt file.
>> Removes properties 'sram-size-playback' and 'sram-size-capture'
>> since they are not used.
>> Adds 'dmas' and 'dma-names' in the example which were missing from
>> the txt file.
>> Changes 'interrupts' and 'interrupt-names' from optional to
>> required properties.
>> Changes 'op-mode', 'serial-dir' and 'tdm-slots' to optional properties
>> as they are not needed if the McASP is used only as GPIO.
>>
>> Adds the yaml file in the 'MAINTAINERS' under the heading 'TEXAS
>> INSTRUMENTS ASoC DRIVERS'
>>
>> Signed-off-by: Jayesh Choudhary <[email protected]>
>> ---

>> +
>> + tdm-slots:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: number of channels over one serializer
>> + maxItems: 1
>
> It's a uint32, so there's always 1 item. Drop.
>

Will drop it from tdm-slots, tx-num-evt, rx-num-evt and auxclk-fs-ratio
since they are also uint32.

> No constraints? 0-2^32 is valid?

Yes it should be between 2 to 32 as pointed out by Peter.
Will add that.

>
>> +
>> +
>> + tx-num-evt:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: configures WFIFO threshold
>> + maxItems: 1
>> +
>> + rx-num-evt:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: configures RFIFO threshold
>> + maxItems: 1
>> +
>> +
>> + auxclk-fs-ratio:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: ratio of AUCLK and FS rate if applicable
>> + maxItems: 1
>> +

>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + mcasp0: mcasp0@1d00000 {
>
> Drop unused labels.

Yeah okay.

>
>> + compatible = "ti,da830-mcasp-audio";
>> + reg = <0x100000 0x3000>;
>> + reg-names = "mpu";
>> + interrupts = <82>, <83>;
>> + interrupt-names = "tx", "rx";
>> + op-mode = <0>; /* MCASP_IIS_MODE */
>> + tdm-slots = <2>;
>> + dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
>> + dma-names = "tx", "rx";
>> + serial-dir = <
>> + 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
>> + 0 0 0 0
>> + 0 0 0 1
>> + 2 0 0 0 >;
>> + tx-num-evt = <1>;
>> + rx-num-evt = <1>;
>> + };
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 00ad0cb5cb05..3fdf1e23f7d7 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -18855,6 +18855,7 @@ TEXAS INSTRUMENTS ASoC DRIVERS
>> M: Peter Ujfalusi <[email protected]>
>> L: [email protected] (moderated for non-subscribers)
>> S: Maintained
>> +F: Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
>> F: sound/soc/ti/
>>
>> TEXAS INSTRUMENTS' DAC7612 DAC DRIVER
>> --
>> 2.17.1
>>
>>