Documentation / devicetree / bindings / sound / fsl,xcvr.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/fsl,xcvr.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP Audio Transceiver (XCVR) Controller

maintainers:
  - Viorel Suman <viorel.suman@nxp.com>

description: |
  NXP XCVR (Audio Transceiver) is a on-chip functional module
  that allows CPU to receive and transmit digital audio via
  HDMI2.1 eARC, HDMI1.4 ARC and SPDIF.

properties:
  $nodename:
    pattern: "^xcvr@.*"

  compatible:
    enum:
      - fsl,imx8mp-xcvr
      - fsl,imx93-xcvr
      - fsl,imx95-xcvr

  reg:
    items:
      - description: 20K RAM for code and data
      - description: registers space
      - description: RX FIFO address
      - description: TX FIFO address

  reg-names:
    items:
      - const: ram
      - const: regs
      - const: rxfifo
      - const: txfifo

  interrupts:
    items:
      - description: WAKEUPMIX Audio XCVR Interrupt 1
      - description: WAKEUPMIX Audio XCVR Interrupt 2
      - description: SPDIF wakeup interrupt from PHY
    minItems: 1

  clocks:
    items:
      - description: Peripheral clock
      - description: PHY clock
      - description: SPBA clock
      - description: PLL clock
      - description: PLL clock source for 8kHz series
      - description: PLL clock source for 11kHz series
    minItems: 4

  clock-names:
    items:
      - const: ipg
      - const: phy
      - const: spba
      - const: pll_ipg
      - const: pll8k
      - const: pll11k
    minItems: 4

  dmas:
    items:
      - description: DMA controller phandle and request line for RX
      - description: DMA controller phandle and request line for TX

  dma-names:
    items:
      - const: rx
      - const: tx

  resets:
    maxItems: 1

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - clocks
  - clock-names
  - dmas
  - dma-names

allOf:
  - $ref: dai-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx8mp-xcvr
    then:
      required:
        - resets

  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,imx93-xcvr
              - fsl,imx95-xcvr
    then:
      properties:
        interrupts:
          minItems: 2
          maxItems: 2
    else:
      properties:
        interrupts:
          minItems: 3
          maxItems: 3

  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,imx8mp-xcvr
              - fsl,imx93-xcvr
    then:
      properties:
        clocks:
          maxItems: 4
        clock-names:
          maxItems: 4

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/imx8mp-clock.h>
    #include <dt-bindings/reset/imx8mp-reset.h>
 
    xcvr: xcvr@30cc0000 {
           compatible = "fsl,imx8mp-xcvr";
           reg = <0x30cc0000 0x800>,
                 <0x30cc0800 0x400>,
                 <0x30cc0c00 0x080>,
                 <0x30cc0e00 0x080>;
           reg-names = "ram", "regs", "rxfifo", "txfifo";
           interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
                        <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
                        <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
           clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>,
                    <&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
           clock-names = "ipg", "phy", "spba", "pll_ipg";
           dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
           dma-names = "rx", "tx";
           resets = <&audiomix_reset 0>;
    };