| # 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: CFG registers |
| - description: data registers |
| |
| reg-names: |
| minItems: 1 |
| items: |
| - const: mpu |
| - const: dat |
| |
| op-mode: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: 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. This property |
| specifies the TX playback TDM slot count, along with default RX slot count |
| if tdm-slots-rx is not specified. |
| The property is ignored in DIT mode. |
| minimum: 2 |
| maximum: 32 |
| |
| tdm-slots-rx: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| Number of RX capture channels over one serializer. If specified, |
| allows independent RX TDM slot count separate from TX. Requires |
| ti,async-mode to be enabled for independent TX/RX clock rates. |
| The property is ignored in DIT mode. |
| minimum: 2 |
| maximum: 32 |
| |
| ti,async-mode: |
| description: |
| Specify to allow independent TX & RX clocking, |
| to enable audio playback & record with different sampling rate, |
| and different number of bits per frame. |
| if property is omitted, TX and RX will share same bit clock and frame clock signals, |
| thus RX need to use same bits per frame and sampling rate as TX in synchronous mode. |
| the property is ignored in DIT mode (as DIT is TX-only) |
| type: boolean |
| |
| 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 |
| |
| 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 property is missing, then also FIFO use is disabled |
| |
| rx-num-evt: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| configures RFIFO threshold |
| 0 disables the FIFO use |
| if property is missing, then also FIFO use is disabled |
| |
| 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: |
| minItems: 1 |
| maxItems: 2 |
| |
| interrupt-names: |
| oneOf: |
| - description: TX interrupt |
| const: tx |
| - description: RX interrupt |
| const: rx |
| - description: TX and RX interrupts |
| items: |
| - const: tx |
| - const: rx |
| - description: Common/combined interrupt |
| 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. This property specifies |
| the TX ratio, along with default RX ratio if auxclk-fs-ratio-rx |
| is not specified. |
| When not specified, the inputted system clock frequency via set_sysclk |
| callback by the machine driver is used for divider calculation. |
| |
| auxclk-fs-ratio-rx: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| Ratio of AUCLK and FS rate for RX. If specified, allows |
| for a different RX ratio. Requires ti,async-mode to be |
| enabled when the ratio differs from auxclk-fs-ratio. |
| When not specified, it defaults to the value of auxclk-fs-ratio. |
| The property is ignored in DIT mode. |
| |
| 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 |
| |
| allOf: |
| - $ref: dai-common.yaml# |
| - if: |
| properties: |
| op-mode: |
| enum: |
| - 0 |
| then: |
| required: |
| - tdm-slots |
| |
| - if: |
| properties: |
| op-mode: |
| const: 1 |
| then: |
| properties: |
| tdm-slots: false |
| tdm-slots-rx: false |
| ti,async-mode: false |
| auxclk-fs-ratio-rx: false |
| |
| - if: |
| required: |
| - tdm-slots-rx |
| then: |
| required: |
| - ti,async-mode |
| |
| - if: |
| required: |
| - auxclk-fs-ratio-rx |
| then: |
| required: |
| - ti,async-mode |
| |
| unevaluatedProperties: 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>; |
| ti,async-mode; |
| 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>; |
| }; |