2021-11-26 05:04:59

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v3] 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', 'num-serializer' and 'port' which were not there
in the txt file.
Adds 'dmas' and 'dma-names' in the example which were not there in
the txt file.
Changes 'interrupts' and 'interrupt-names' from optional to
required properties.

Signed-off-by: Jayesh Choudhary <[email protected]>
---
Changelog:
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 'port' and 'num-serializer' as node properties

.../bindings/sound/davinci-mcasp-audio.txt | 86 ---------
.../bindings/sound/davinci-mcasp-audio.yaml | 178 ++++++++++++++++++
2 files changed, 178 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..c4d3f56470bf
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
@@ -0,0 +1,178 @@
+# 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:
+ description: I2S - 0 or DIT - 1 mode
+ enum:
+ - 0
+ - 1
+
+ tdm-slots:
+ maxItems: 1
+
+ serial-dir:
+ description:
+ A list of serializer configuration
+ Entry is indication for serializer pin direction
+ 0 - Inactive, 1 - TX, 2 - RX
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 1
+ maxItems: 16
+ 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:
+ maxItems: 1
+
+ rx-num-evt:
+ maxItems: 1
+
+ dismod:
+ enum:
+ - 0
+ - 2
+ - 3
+ default: 2
+
+ sram-size-playback:
+ maxItems: 1
+
+ sram-size-capture:
+ maxItems: 1
+
+ interrupts:
+ minItems: 1
+ items:
+ - description: TX FIFO interrupt
+ - description: RX FIFO interrupt
+
+ interrupt-names:
+ oneOf:
+ - minItems: 1
+ items:
+ - const: tx
+ - const: rx
+ - const: common
+
+ fck_parent:
+ description: parent clock for McASP fck
+ maxItems: 1
+
+ auxclk-fs-ratio:
+ description: ratio of AUCLK and FS if applicable
+ maxItems: 1
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+ function-gpios:
+ maxItems: 1
+
+ clocks:
+ minItems: 1
+ maxItems: 3
+
+ clock-names:
+ minItems: 1
+ items:
+ - const: fck
+ - const: ahclkx
+ - const: ahclkr
+
+ power-domains:
+ maxItems: 1
+
+ "#sound-dai-cells":
+ const: 0
+
+ num-serializer:
+ maxItems: 1
+
+ port:
+ type: object
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - dmas
+ - dma-names
+ - interrupts
+ - interrupt-names
+ - serial-dir
+ - op-mode
+ - tdm-slots
+
+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>;
+ };
--
2.17.1



2021-11-27 23:15:41

by Rob Herring

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

On Fri, 26 Nov 2021 10:32:28 +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', 'num-serializer' and 'port' which were not there
> in the txt file.
> Adds 'dmas' and 'dma-names' in the example which were not there in
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.
>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> 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 'port' and 'num-serializer' as node properties
>
> .../bindings/sound/davinci-mcasp-audio.txt | 86 ---------
> .../bindings/sound/davinci-mcasp-audio.yaml | 178 ++++++++++++++++++
> 2 files changed, 178 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/1559951


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

mcasp@2b00000: 'op-mode' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b00000: 'serial-dir' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b00000: 'tdm-slots' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b10000: 'op-mode' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b10000: 'serial-dir' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b10000: 'tdm-slots' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b20000: 'op-mode' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b20000: 'serial-dir' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml

mcasp@2b20000: 'tdm-slots' is a required property
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dt.yaml
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dt.yaml
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dt.yaml


2021-11-29 01:18:30

by Rob Herring

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

On Fri, Nov 26, 2021 at 10:32:28AM +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', 'num-serializer' and 'port' which were not there
> in the txt file.
> Adds 'dmas' and 'dma-names' in the example which were not there in
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.
>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> 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 'port' and 'num-serializer' as node properties
>
> .../bindings/sound/davinci-mcasp-audio.txt | 86 ---------
> .../bindings/sound/davinci-mcasp-audio.yaml | 178 ++++++++++++++++++
> 2 files changed, 178 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..c4d3f56470bf
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> @@ -0,0 +1,178 @@
> +# 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:
> + description: I2S - 0 or DIT - 1 mode
> + enum:
> + - 0
> + - 1

Needs a type.

> +
> + tdm-slots:
> + maxItems: 1

An array? Needs a type.

> +
> + serial-dir:
> + description:
> + A list of serializer configuration
> + Entry is indication for serializer pin direction
> + 0 - Inactive, 1 - TX, 2 - RX
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 16
> + 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:
> + maxItems: 1

Array? Needs a type.

> +
> + rx-num-evt:
> + maxItems: 1

Array? Needs a type.

> +
> + dismod:
> + enum:
> + - 0
> + - 2
> + - 3
> + default: 2

Needs a type.

And so on...

> +
> + sram-size-playback:
> + maxItems: 1
> +
> + sram-size-capture:
> + maxItems: 1
> +
> + interrupts:
> + minItems: 1
> + items:
> + - description: TX FIFO interrupt
> + - description: RX FIFO interrupt
> +
> + interrupt-names:
> + oneOf:
> + - minItems: 1
> + items:
> + - const: tx
> + - const: rx
> + - const: common
> +
> + fck_parent:
> + description: parent clock for McASP fck
> + maxItems: 1
> +
> + auxclk-fs-ratio:
> + description: ratio of AUCLK and FS if applicable
> + maxItems: 1
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + function-gpios:
> + maxItems: 1
> +
> + clocks:
> + minItems: 1
> + maxItems: 3
> +
> + clock-names:
> + minItems: 1
> + items:
> + - const: fck
> + - const: ahclkx
> + - const: ahclkr
> +
> + power-domains:
> + maxItems: 1
> +
> + "#sound-dai-cells":
> + const: 0
> +
> + num-serializer:
> + maxItems: 1
> +
> + port:
> + type: object
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - dmas
> + - dma-names
> + - interrupts
> + - interrupt-names
> + - serial-dir
> + - op-mode
> + - tdm-slots
> +
> +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>;
> + };
> --
> 2.17.1
>
>

2021-11-29 06:59:05

by Péter Ujfalusi

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



On 26/11/2021 07:02, Jayesh Choudhary wrote:
> Convert the bindings for McASP controllers for TI SOCs
> from txt to YAML schema.

Can you CC the sound/soc/ti/ maintainer next time, I have found this
patch in my Spam folder...

> Adds additional properties 'clocks', 'clock-names', 'power-domains',
> '#sound-dai-cells',

> 'num-serializer'

Which use was removed by 1427e660b49e87cd842dba94158b0fc73030c17e

> and 'port'

And what this "port" is?

> which were not there in the txt file.

Most likely for a reason?

> Adds 'dmas' and 'dma-names' in the example which were not there in
> the txt file.
> Changes 'interrupts' and 'interrupt-names' from optional to
> required properties.

My biggest problem with the davinci-mcasp-audio.txt is that it was done
in a wrong way and it just documented the pdata parameters as DT binding.
If we convert it to yaml, this is going to be 'written in stone'.

>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> Changelog:
> 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 'port' and 'num-serializer' as node properties
>
> .../bindings/sound/davinci-mcasp-audio.txt | 86 ---------
> .../bindings/sound/davinci-mcasp-audio.yaml | 178 ++++++++++++++++++
> 2 files changed, 178 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..c4d3f56470bf
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
> @@ -0,0 +1,178 @@
> +# 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:
> + description: I2S - 0 or DIT - 1 mode
> + enum:
> + - 0
> + - 1
> +
> + tdm-slots:

description?

> + maxItems: 1
> +
> + serial-dir:
> + description:
> + A list of serializer configuration
> + Entry is indication for serializer pin direction
> + 0 - Inactive, 1 - TX, 2 - RX

You should mention that _all_ AXR pins should be present in the array,
even if they are no in use.

> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 16

a McASP could have up to 25 AXR pins...

> + 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:

description?

> + maxItems: 1
> +
> + rx-num-evt:

description?

> + maxItems: 1
> +
> + dismod:

description?

> + enum:
> + - 0
> + - 2
> + - 3
> + default: 2
> +
> + sram-size-playback:
> + maxItems: 1

should be dropped, not used

> +
> + sram-size-capture:
> + maxItems: 1

not used, please drop

> +
> + interrupts:
> + minItems: 1
> + items:
> + - description: TX FIFO interrupt
> + - description: RX FIFO interrupt

The 'common' does not deserve a description?

> +
> + interrupt-names:
> + oneOf:
> + - minItems: 1
> + items:
> + - const: tx
> + - const: rx
> + - const: common
> +
> + fck_parent:
> + description: parent clock for McASP fck
> + maxItems: 1
> +
> + auxclk-fs-ratio:
> + description: ratio of AUCLK and FS if applicable
> + maxItems: 1
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> +
> + function-gpios:
> + maxItems: 1

This is not McASP property, it was an example on how to use a pin as
GPIO from the outside...

> +
> + clocks:
> + minItems: 1
> + maxItems: 3
> +
> + clock-names:
> + minItems: 1
> + items:
> + - const: fck
> + - const: ahclkx
> + - const: ahclkr

I can not find any use in the code for ahclkx/r?

> +
> + power-domains:
> + maxItems: 1
> +
> + "#sound-dai-cells":
> + const: 0
> +
> + num-serializer:
> + maxItems: 1

Not used, the number of serializers is derived from the serial-dir array

> + port:
> + type: object
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - dmas
> + - dma-names
> + - interrupts
> + - interrupt-names
> + - serial-dir
> + - op-mode
> + - tdm-slots

The last three is not needed if the McASP is used only as GPIO.
The dmas and interrupts should not be needed in this case, but I think
it is not taken care of atm.

The tdm-slots is ignored for DIT mode

> +
> +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>;
> + };
>

--
Péter

2021-11-29 11:24:07

by Jayesh Choudhary

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



On 29/11/21 12:23 pm, Péter Ujfalusi wrote:
>
>
> On 26/11/2021 07:02, Jayesh Choudhary wrote:
>> Convert the bindings for McASP controllers for TI SOCs
>> from txt to YAML schema.
>
> Can you CC the sound/soc/ti/ maintainer next time, I have found this
> patch in my Spam folder...

Okay. Also, I will add this file in the MAINTAINERS file under the
heading 'TEXAS INSTRUMENTS ASoC DRIVERS'

>
>> Adds additional properties 'clocks', 'clock-names', 'power-domains',
>> '#sound-dai-cells',
>
>> 'num-serializer'
>
> Which use was removed by 1427e660b49e87cd842dba94158b0fc73030c17e

The dts file of arm SOCs is not updated and was generating an error in
dtbs_check. I will remove this property.

>
>> and 'port'
>
> And what this "port" is?

The mcasp node in the file 'arch/arm/boot/dts/am335x-sl50.dts' has this
as child node.

>
>> which were not there in the txt file.
>
> Most likely for a reason?
>
>> Adds 'dmas' and 'dma-names' in the example which were not there in
>> the txt file.
>> Changes 'interrupts' and 'interrupt-names' from optional to
>> required properties.
>
> My biggest problem with the davinci-mcasp-audio.txt is that it was done
> in a wrong way and it just documented the pdata parameters as DT binding.
> If we convert it to yaml, this is going to be 'written in stone'.
>
>>
>> Signed-off-by: Jayesh Choudhary <[email protected]>
>> ---


>> +
>> + tdm-slots:
>
> description?

I will add description.

>
>> + maxItems: 1
>> +
>> + serial-dir:
>> + description:
>> + A list of serializer configuration
>> + Entry is indication for serializer pin direction
>> + 0 - Inactive, 1 - TX, 2 - RX
>
> You should mention that _all_ AXR pins should be present in the array,
> even if they are no in use.
>
>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>> + minItems: 1
>> + maxItems: 16
>
> a McASP could have up to 25 AXR pins...
>

Will update the description and the maximum.

>> + items:
>> + minimum: 0
>> + maximum: 2
>> + default: 0
>> +


>> +
>> + tx-num-evt:
>
> description?
>
>> + maxItems: 1
>> +
>> + rx-num-evt:
>
> description?
>
>> + maxItems: 1
>> +
>> + dismod:
>
> description?
>

For the above three properties, is the description in the txt file
sufficient?



>> +
>> + sram-size-playback:
>> + maxItems: 1
>
> should be dropped, not used
>
>> +
>> + sram-size-capture:
>> + maxItems: 1
>
> not used, please drop
>

Okay.

>> +
>> + interrupts:
>> + minItems: 1
>> + items:
>> + - description: TX FIFO interrupt
>> + - description: RX FIFO interrupt
>
> The 'common' does not deserve a description?
>

Will add this.


>> + gpio-controller: true
>> +
>> + "#gpio-cells":
>> + const: 2
>> +
>> + function-gpios:
>> + maxItems: 1
>
> This is not McASP property, it was an example on how to use a pin as
> GPIO from the outside...
>

Okay. will remove function-gpios.

>> +
>> + clocks:
>> + minItems: 1
>> + maxItems: 3
>> +
>> + clock-names:
>> + minItems: 1
>> + items:
>> + - const: fck
>> + - const: ahclkx
>> + - const: ahclkr
>
> I can not find any use in the code for ahclkx/r?
>

Some arm SOCs had additional clocks in the DT nodes.


>> +
>> +required:
>> + - compatible
>> + - reg
>> + - reg-names
>> + - dmas
>> + - dma-names
>> + - interrupts
>> + - interrupt-names
>> + - serial-dir
>> + - op-mode
>> + - tdm-slots
>
> The last three is not needed if the McASP is used only as GPIO.
> The dmas and interrupts should not be needed in this case, but I think
> it is not taken care of atm.
>
> The tdm-slots is ignored for DIT mode
>

These were mentioned in txt file as required.
In light of this new knowledge, I will remove 'serial-dir', 'op-mode'
and 'tdm-slots'.

>


2021-11-29 20:37:59

by Péter Ujfalusi

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



On 29/11/2021 13:21, Jayesh Choudhary wrote:
>
>
> On 29/11/21 12:23 pm, Péter Ujfalusi wrote:
>>
>>
>> On 26/11/2021 07:02, Jayesh Choudhary wrote:
>>> Convert the bindings for McASP controllers for TI SOCs
>>> from txt to YAML schema.
>>
>> Can you CC the sound/soc/ti/ maintainer next time, I have found this
>> patch in my Spam folder...
>
> Okay. Also, I will add this file in the MAINTAINERS file under the
> heading 'TEXAS INSTRUMENTS ASoC DRIVERS'

OK, thank you. I'm sure I have missed some other binding document...

>>> Adds additional properties 'clocks', 'clock-names', 'power-domains',
>>> '#sound-dai-cells',
>>
>>> 'num-serializer'
>>
>> Which use was removed by 1427e660b49e87cd842dba94158b0fc73030c17e
>
> The dts file of arm SOCs is not updated and was generating an error in
> dtbs_check. I will remove this property.

Yes, that dts file was added 2 years after the num-serializer got removed...

>
>>
>>> and 'port'
>>
>> And what this "port" is?
>
> The mcasp node in the file 'arch/arm/boot/dts/am335x-sl50.dts' has this
> as child node.

Right, it is there if McASP is used via the graph card.

>>> +
>>> +  tdm-slots:
>>
>> description?
>
> I will add description.
>
>>
>>> +    maxItems: 1
>>> +
>>> +  serial-dir:
>>> +    description:
>>> +      A list of serializer configuration
>>> +      Entry is indication for serializer pin direction
>>> +      0 - Inactive, 1 - TX, 2 - RX
>>
>> You should mention that _all_ AXR pins should be present in the array,
>> even if they are no in use.
>>
>>> +    $ref: /schemas/types.yaml#/definitions/uint32-array
>>> +    minItems: 1
>>> +    maxItems: 16
>>
>> a McASP could have up to 25 AXR pins...
>>
>
> Will update the description and the maximum.
>
>>> +    items:
>>> +      minimum: 0
>>> +      maximum: 2
>>> +      default: 0
>>> +
>
>
>>> +
>>> +  tx-num-evt:
>>
>> description?
>>
>>> +    maxItems: 1
>>> +
>>> +  rx-num-evt:
>>
>> description?
>>
>>> +    maxItems: 1
>>> +
>>> +  dismod:
>>
>> description?
>>
>
> For the above three properties, is the description in the txt file
> sufficient?

I would add a bit more detail than just 'FIFO levels'

>>> +
>>> +  sram-size-playback:
>>> +    maxItems: 1
>>
>> should be dropped, not used
>>
>>> +
>>> +  sram-size-capture:
>>> +    maxItems: 1
>>
>> not used, please drop
>>
>
> Okay.

Thanks

>
>>> +
>>> +  interrupts:
>>> +    minItems: 1
>>> +    items:
>>> +      - description: TX FIFO interrupt
>>> +      - description: RX FIFO interrupt
>>
>> The 'common' does not deserve a description?
>>
>
> Will add this.

Great

>
>
>>> +  gpio-controller: true
>>> +
>>> +  "#gpio-cells":
>>> +    const: 2
>>> +
>>> +  function-gpios:
>>> +    maxItems: 1
>>
>> This is not McASP property, it was an example on how to use a pin as
>> GPIO from the outside...
>>
>
> Okay. will remove function-gpios.
>
>>> +
>>> +  clocks:
>>> +    minItems: 1
>>> +    maxItems: 3
>>> +
>>> +  clock-names:
>>> +    minItems: 1
>>> +    items:
>>> +      - const: fck
>>> +      - const: ahclkx
>>> +      - const: ahclkr
>>
>> I can not find any use in the code for ahclkx/r?
>>
>
> Some arm SOCs had additional clocks in the DT nodes.

It looks like dra7 family have it. On those the AHCLK x/r have other
source option than from outside (ATL for example).
I'm not certain if they are absolutely needed, but there were something
about the optional clocks...

Tony, can you recall?

>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>> +  - reg-names
>>> +  - dmas
>>> +  - dma-names
>>> +  - interrupts
>>> +  - interrupt-names
>>> +  - serial-dir
>>> +  - op-mode
>>> +  - tdm-slots
>>
>> The last three is not needed if the McASP is used only as GPIO.
>> The dmas and interrupts should not be needed in this case, but I think
>> it is not taken care of atm.
>>
>> The tdm-slots is ignored for DIT mode
>>
>
> These were mentioned in txt file as required.
> In light of this new knowledge, I will remove 'serial-dir', 'op-mode'
> and 'tdm-slots'.

Yes, I know.
The trick is that serial-dir op-mode and tdm-slots only needed when
audio is used and tdm-slots is only needed in I2S mode.
I would check the dmas and interrupts, but from the hardware pow they
are not needed in GPIO only mode.

--
Péter