10afb88d5SViorel Suman# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
20afb88d5SViorel Suman%YAML 1.2
30afb88d5SViorel Suman---
40afb88d5SViorel Suman$id: http://devicetree.org/schemas/sound/fsl,xcvr.yaml#
50afb88d5SViorel Suman$schema: http://devicetree.org/meta-schemas/core.yaml#
60afb88d5SViorel Suman
70afb88d5SViorel Sumantitle: NXP Audio Transceiver (XCVR) Controller
80afb88d5SViorel Suman
90afb88d5SViorel Sumanmaintainers:
100afb88d5SViorel Suman  - Viorel Suman <viorel.suman@nxp.com>
110afb88d5SViorel Suman
120afb88d5SViorel Sumandescription: |
130afb88d5SViorel Suman  NXP XCVR (Audio Transceiver) is a on-chip functional module
140afb88d5SViorel Suman  that allows CPU to receive and transmit digital audio via
150afb88d5SViorel Suman  HDMI2.1 eARC, HDMI1.4 ARC and SPDIF.
160afb88d5SViorel Suman
170afb88d5SViorel Sumanproperties:
180afb88d5SViorel Suman  $nodename:
190afb88d5SViorel Suman    pattern: "^xcvr@.*"
200afb88d5SViorel Suman
210afb88d5SViorel Suman  compatible:
220afb88d5SViorel Suman    enum:
230afb88d5SViorel Suman      - fsl,imx8mp-xcvr
24*0a22003cSChancel Liu      - fsl,imx93-xcvr
250afb88d5SViorel Suman
260afb88d5SViorel Suman  reg:
270afb88d5SViorel Suman    items:
280afb88d5SViorel Suman      - description: 20K RAM for code and data
290afb88d5SViorel Suman      - description: registers space
300afb88d5SViorel Suman      - description: RX FIFO address
310afb88d5SViorel Suman      - description: TX FIFO address
320afb88d5SViorel Suman
330afb88d5SViorel Suman  reg-names:
340afb88d5SViorel Suman    items:
350afb88d5SViorel Suman      - const: ram
360afb88d5SViorel Suman      - const: regs
370afb88d5SViorel Suman      - const: rxfifo
380afb88d5SViorel Suman      - const: txfifo
390afb88d5SViorel Suman
400afb88d5SViorel Suman  interrupts:
410afb88d5SViorel Suman    maxItems: 1
420afb88d5SViorel Suman
430afb88d5SViorel Suman  clocks:
440afb88d5SViorel Suman    items:
450afb88d5SViorel Suman      - description: Peripheral clock
460afb88d5SViorel Suman      - description: PHY clock
470afb88d5SViorel Suman      - description: SPBA clock
480afb88d5SViorel Suman      - description: PLL clock
490afb88d5SViorel Suman
500afb88d5SViorel Suman  clock-names:
510afb88d5SViorel Suman    items:
520afb88d5SViorel Suman      - const: ipg
530afb88d5SViorel Suman      - const: phy
540afb88d5SViorel Suman      - const: spba
550afb88d5SViorel Suman      - const: pll_ipg
560afb88d5SViorel Suman
570afb88d5SViorel Suman  dmas:
580afb88d5SViorel Suman    items:
590afb88d5SViorel Suman      - description: DMA controller phandle and request line for RX
600afb88d5SViorel Suman      - description: DMA controller phandle and request line for TX
610afb88d5SViorel Suman
620afb88d5SViorel Suman  dma-names:
630afb88d5SViorel Suman    items:
640afb88d5SViorel Suman      - const: rx
650afb88d5SViorel Suman      - const: tx
660afb88d5SViorel Suman
670afb88d5SViorel Suman  resets:
680afb88d5SViorel Suman    maxItems: 1
690afb88d5SViorel Suman
700afb88d5SViorel Sumanrequired:
710afb88d5SViorel Suman  - compatible
720afb88d5SViorel Suman  - reg
730afb88d5SViorel Suman  - reg-names
740afb88d5SViorel Suman  - interrupts
750afb88d5SViorel Suman  - clocks
760afb88d5SViorel Suman  - clock-names
770afb88d5SViorel Suman  - dmas
780afb88d5SViorel Suman  - dma-names
790afb88d5SViorel Suman  - resets
800afb88d5SViorel Suman
810afb88d5SViorel SumanadditionalProperties: false
820afb88d5SViorel Suman
830afb88d5SViorel Sumanexamples:
840afb88d5SViorel Suman  - |
850afb88d5SViorel Suman    #include <dt-bindings/interrupt-controller/arm-gic.h>
860afb88d5SViorel Suman    #include <dt-bindings/clock/imx8mp-clock.h>
870afb88d5SViorel Suman    #include <dt-bindings/reset/imx8mp-reset.h>
880afb88d5SViorel Suman
890afb88d5SViorel Suman    xcvr: xcvr@30cc0000 {
900afb88d5SViorel Suman           compatible = "fsl,imx8mp-xcvr";
910afb88d5SViorel Suman           reg = <0x30cc0000 0x800>,
920afb88d5SViorel Suman                 <0x30cc0800 0x400>,
930afb88d5SViorel Suman                 <0x30cc0c00 0x080>,
940afb88d5SViorel Suman                 <0x30cc0e00 0x080>;
950afb88d5SViorel Suman           reg-names = "ram", "regs", "rxfifo", "txfifo";
960afb88d5SViorel Suman           interrupts = <0x0 128 IRQ_TYPE_LEVEL_HIGH>;
970afb88d5SViorel Suman           clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
980afb88d5SViorel Suman                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
990afb88d5SViorel Suman                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>,
1000afb88d5SViorel Suman                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
1010afb88d5SViorel Suman           clock-names = "ipg", "phy", "spba", "pll_ipg";
1020afb88d5SViorel Suman           dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
1030afb88d5SViorel Suman           dma-names = "rx", "tx";
1040afb88d5SViorel Suman           resets = <&audiomix_reset 0>;
1050afb88d5SViorel Suman    };
106