[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 j-choudhary@ti.com --- 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 j-choudhary@ti.com + +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>; + };
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 j-choudhary@ti.com
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
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 j-choudhary@ti.com
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 j-choudhary@ti.com
+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
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 j-choudhary@ti.com
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 j-choudhary@ti.com
+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>;
- };
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 j-choudhary@ti.com
- 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'.
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.
participants (3)
-
Jayesh Choudhary
-
Péter Ujfalusi
-
Rob Herring