1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/fsl,xcvr.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP Audio Transceiver (XCVR) Controller
8
9maintainers:
10  - Viorel Suman <viorel.suman@nxp.com>
11
12description: |
13  NXP XCVR (Audio Transceiver) is a on-chip functional module
14  that allows CPU to receive and transmit digital audio via
15  HDMI2.1 eARC, HDMI1.4 ARC and SPDIF.
16
17properties:
18  $nodename:
19    pattern: "^xcvr@.*"
20
21  compatible:
22    enum:
23      - fsl,imx8mp-xcvr
24
25  reg:
26    items:
27      - description: 20K RAM for code and data
28      - description: registers space
29      - description: RX FIFO address
30      - description: TX FIFO address
31
32  reg-names:
33    items:
34      - const: ram
35      - const: regs
36      - const: rxfifo
37      - const: txfifo
38
39  interrupts:
40    maxItems: 1
41
42  clocks:
43    items:
44      - description: Peripheral clock
45      - description: PHY clock
46      - description: SPBA clock
47      - description: PLL clock
48
49  clock-names:
50    items:
51      - const: ipg
52      - const: phy
53      - const: spba
54      - const: pll_ipg
55
56  dmas:
57    items:
58      - description: DMA controller phandle and request line for RX
59      - description: DMA controller phandle and request line for TX
60
61  dma-names:
62    items:
63      - const: rx
64      - const: tx
65
66  resets:
67    maxItems: 1
68
69required:
70  - compatible
71  - reg
72  - reg-names
73  - interrupts
74  - clocks
75  - clock-names
76  - dmas
77  - dma-names
78  - resets
79
80additionalProperties: false
81
82examples:
83  - |
84    #include <dt-bindings/interrupt-controller/arm-gic.h>
85    #include <dt-bindings/clock/imx8mp-clock.h>
86    #include <dt-bindings/reset/imx8mp-reset.h>
87
88    xcvr: xcvr@30cc0000 {
89           compatible = "fsl,imx8mp-xcvr";
90           reg = <0x30cc0000 0x800>,
91                 <0x30cc0800 0x400>,
92                 <0x30cc0c00 0x080>,
93                 <0x30cc0e00 0x080>;
94           reg-names = "ram", "regs", "rxfifo", "txfifo";
95           interrupts = <0x0 128 IRQ_TYPE_LEVEL_HIGH>;
96           clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
97                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
98                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>,
99                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
100           clock-names = "ipg", "phy", "spba", "pll_ipg";
101           dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
102           dma-names = "rx", "tx";
103           resets = <&audiomix_reset 0>;
104    };
105