The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/sound/simple-card.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # SPDX-License-Identifier: GPL-2.0
    2 %YAML 1.2
    3 ---
    4 $id: http://devicetree.org/schemas/sound/simple-card.yaml#
    5 $schema: http://devicetree.org/meta-schemas/core.yaml#
    6 
    7 title: Simple Audio Card Driver Device Tree Bindings
    8 
    9 maintainers:
   10   - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
   11 
   12 definitions:
   13 
   14   frame-master:
   15     description: Indicates dai-link frame master.
   16     $ref: /schemas/types.yaml#/definitions/phandle
   17 
   18   bitclock-master:
   19     description: Indicates dai-link bit clock master
   20     $ref: /schemas/types.yaml#/definitions/phandle
   21 
   22   frame-inversion:
   23     description: dai-link uses frame clock inversion
   24     $ref: /schemas/types.yaml#/definitions/flag
   25 
   26   bitclock-inversion:
   27     description: dai-link uses bit clock inversion
   28     $ref: /schemas/types.yaml#/definitions/flag
   29 
   30   dai-tdm-slot-num:
   31     description: see tdm-slot.txt.
   32     $ref: /schemas/types.yaml#/definitions/uint32
   33 
   34   dai-tdm-slot-width:
   35     description: see tdm-slot.txt.
   36     $ref: /schemas/types.yaml#/definitions/uint32
   37 
   38   system-clock-frequency:
   39     description: |
   40       If a clock is specified and a multiplication factor is given with
   41       mclk-fs, the clock will be set to the calculated mclk frequency
   42       when the stream starts.
   43     $ref: /schemas/types.yaml#/definitions/uint32
   44 
   45   system-clock-direction-out:
   46     description: |
   47       specifies clock direction as 'out' on initialization.
   48       It is useful for some aCPUs with fixed clocks.
   49     $ref: /schemas/types.yaml#/definitions/flag
   50 
   51   system-clock-fixed:
   52     description: |
   53       Specifies that the clock frequency should not be modified.
   54       Implied when system-clock-frequency is specified, but can be used when
   55       a clock is mapped to the device whose frequency cannot or should not be
   56       changed. When mclk-fs is also specified, this restricts the device to a
   57       single fixed sampling rate.
   58     $ref: /schemas/types.yaml#/definitions/flag
   59 
   60   mclk-fs:
   61     description: |
   62       Multiplication factor between stream rate and codec mclk.
   63       When defined, mclk-fs property defined in dai-link sub nodes are ignored.
   64     $ref: /schemas/types.yaml#/definitions/uint32
   65 
   66   aux-devs:
   67     description: |
   68       List of phandles pointing to auxiliary devices, such
   69       as amplifiers, to be added to the sound card.
   70     $ref: /schemas/types.yaml#/definitions/phandle-array
   71 
   72   convert-rate:
   73     description: CPU to Codec rate convert.
   74     $ref: /schemas/types.yaml#/definitions/uint32
   75 
   76   convert-channels:
   77     description: CPU to Codec rate channels.
   78     $ref: /schemas/types.yaml#/definitions/uint32
   79 
   80   prefix:
   81     description: "device name prefix"
   82     $ref: /schemas/types.yaml#/definitions/string
   83 
   84   label:
   85     maxItems: 1
   86 
   87   routing:
   88     description: |
   89       A list of the connections between audio components.
   90       Each entry is a pair of strings, the first being the
   91       connection's sink, the second being the connection's source.
   92     $ref: /schemas/types.yaml#/definitions/non-unique-string-array
   93 
   94   widgets:
   95     description: User specified audio sound widgets.
   96     $ref: /schemas/types.yaml#/definitions/non-unique-string-array
   97 
   98   pin-switches:
   99     description: the widget names for which pin switches must be created.
  100     $ref: /schemas/types.yaml#/definitions/string-array
  101 
  102   format:
  103     description: audio format.
  104     items:
  105       enum:
  106         - i2s
  107         - right_j
  108         - left_j
  109         - dsp_a
  110         - dsp_b
  111         - ac97
  112         - pdm
  113         - msb
  114         - lsb
  115 
  116   dai:
  117     type: object
  118     properties:
  119       sound-dai:
  120         maxItems: 1
  121 
  122       # common properties
  123       mclk-fs:
  124         $ref: "#/definitions/mclk-fs"
  125       prefix:
  126         $ref: "#/definitions/prefix"
  127       frame-inversion:
  128         $ref: "#/definitions/frame-inversion"
  129       bitclock-inversion:
  130         $ref: "#/definitions/bitclock-inversion"
  131       frame-master:
  132         $ref: /schemas/types.yaml#/definitions/flag
  133       bitclock-master:
  134         $ref: /schemas/types.yaml#/definitions/flag
  135 
  136       dai-tdm-slot-num:
  137         $ref: "#/definitions/dai-tdm-slot-num"
  138       dai-tdm-slot-width:
  139         $ref: "#/definitions/dai-tdm-slot-width"
  140       clocks:
  141         maxItems: 1
  142       system-clock-frequency:
  143         $ref: "#/definitions/system-clock-frequency"
  144       system-clock-direction-out:
  145         $ref: "#/definitions/system-clock-direction-out"
  146       system-clock-fixed:
  147         $ref: "#/definitions/system-clock-fixed"
  148     required:
  149       - sound-dai
  150 
  151 properties:
  152   compatible:
  153     contains:
  154       enum:
  155         - simple-audio-card
  156         - simple-scu-audio-card
  157 
  158   "#address-cells":
  159     const: 1
  160   "#size-cells":
  161     const: 0
  162 
  163   label:
  164     $ref: "#/definitions/label"
  165 
  166   simple-audio-card,name:
  167     description: User specified audio sound card name.
  168     $ref: /schemas/types.yaml#/definitions/string
  169 
  170   simple-audio-card,widgets:
  171     $ref: "#/definitions/widgets"
  172   simple-audio-card,routing:
  173     $ref: "#/definitions/routing"
  174 
  175   # common properties
  176   simple-audio-card,frame-master:
  177     $ref: "#/definitions/frame-master"
  178   simple-audio-card,bitclock-master:
  179     $ref: "#/definitions/bitclock-master"
  180   simple-audio-card,frame-inversion:
  181     $ref: "#/definitions/frame-inversion"
  182   simple-audio-card,bitclock-inversion:
  183     $ref: "#/definitions/bitclock-inversion"
  184   simple-audio-card,format:
  185     $ref: "#/definitions/format"
  186   simple-audio-card,mclk-fs:
  187     $ref: "#/definitions/mclk-fs"
  188   simple-audio-card,aux-devs:
  189     $ref: "#/definitions/aux-devs"
  190   simple-audio-card,convert-rate:
  191     $ref: "#/definitions/convert-rate"
  192   simple-audio-card,convert-channels:
  193     $ref: "#/definitions/convert-channels"
  194   simple-audio-card,prefix:
  195     $ref: "#/definitions/prefix"
  196   simple-audio-card,pin-switches:
  197     $ref: "#/definitions/pin-switches"
  198   simple-audio-card,hp-det-gpio:
  199     maxItems: 1
  200   simple-audio-card,mic-det-gpio:
  201     maxItems: 1
  202 
  203 patternProperties:
  204   "^simple-audio-card,cpu(@[0-9a-f]+)?$":
  205     $ref: "#/definitions/dai"
  206   "^simple-audio-card,codec(@[0-9a-f]+)?$":
  207     $ref: "#/definitions/dai"
  208 
  209   "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
  210     description: |
  211       Container for dai-link level properties and the CPU and CODEC sub-nodes.
  212       This container may be omitted when the card has only one DAI link.
  213     type: object
  214     properties:
  215       reg:
  216         maxItems: 1
  217 
  218       # common properties
  219       frame-master:
  220         $ref: "#/definitions/frame-master"
  221       bitclock-master:
  222         $ref: "#/definitions/bitclock-master"
  223       frame-inversion:
  224         $ref: "#/definitions/frame-inversion"
  225       bitclock-inversion:
  226         $ref: "#/definitions/bitclock-inversion"
  227       format:
  228         $ref: "#/definitions/format"
  229       mclk-fs:
  230         $ref: "#/definitions/mclk-fs"
  231       aux-devs:
  232         $ref: "#/definitions/aux-devs"
  233       convert-rate:
  234         $ref: "#/definitions/convert-rate"
  235       convert-channels:
  236         $ref: "#/definitions/convert-channels"
  237       prefix:
  238         $ref: "#/definitions/prefix"
  239       pin-switches:
  240         $ref: "#/definitions/pin-switches"
  241       hp-det-gpio:
  242         maxItems: 1
  243       mic-det-gpio:
  244         maxItems: 1
  245 
  246     patternProperties:
  247       "^cpu(@[0-9a-f]+)?":
  248         $ref: "#/definitions/dai"
  249       "^codec(@[0-9a-f]+)?":
  250         $ref: "#/definitions/dai"
  251     additionalProperties: false
  252 
  253 required:
  254   - compatible
  255 
  256 additionalProperties: false
  257 
  258 examples:
  259 #--------------------
  260 # single DAI link
  261 #--------------------
  262   - |
  263     sound {
  264         compatible = "simple-audio-card";
  265         simple-audio-card,name = "VF610-Tower-Sound-Card";
  266         simple-audio-card,format = "left_j";
  267         simple-audio-card,bitclock-master = <&dailink0_master>;
  268         simple-audio-card,frame-master = <&dailink0_master>;
  269         simple-audio-card,widgets =
  270                 "Microphone", "Microphone Jack",
  271                 "Headphone", "Headphone Jack",
  272                 "Speaker", "External Speaker";
  273         simple-audio-card,routing =
  274                 "MIC_IN", "Microphone Jack",
  275                 "Headphone Jack", "HP_OUT",
  276                 "External Speaker", "LINE_OUT";
  277 
  278         simple-audio-card,cpu {
  279             sound-dai = <&sh_fsi2 0>;
  280         };
  281 
  282         dailink0_master: simple-audio-card,codec {
  283             sound-dai = <&ak4648>;
  284             clocks = <&osc>;
  285         };
  286     };
  287 
  288 #--------------------
  289 # Multi DAI links
  290 #--------------------
  291   - |
  292     sound {
  293         compatible = "simple-audio-card";
  294         simple-audio-card,name = "Cubox Audio";
  295 
  296         #address-cells = <1>;
  297         #size-cells = <0>;
  298 
  299         simple-audio-card,dai-link@0 {          /* I2S - HDMI */
  300             reg = <0>;
  301             format = "i2s";
  302             cpu {
  303                 sound-dai = <&audio0>;
  304             };
  305             codec {
  306                 sound-dai = <&tda998x0>;
  307             };
  308         };
  309 
  310         simple-audio-card,dai-link@1 {          /* S/PDIF - HDMI */
  311             reg = <1>;
  312             cpu {
  313                 sound-dai = <&audio1>;
  314             };
  315             codec {
  316                 sound-dai = <&tda998x1>;
  317             };
  318         };
  319 
  320         simple-audio-card,dai-link@2 {          /* S/PDIF - S/PDIF */
  321             reg = <2>;
  322             cpu {
  323                 sound-dai = <&audio2>;
  324             };
  325             codec {
  326                 sound-dai = <&spdif_codec>;
  327             };
  328         };
  329     };
  330 
  331 #--------------------
  332 # route audio from IMX6 SSI2 through TLV320DAC3100 codec
  333 # through TPA6130A2 amplifier to headphones:
  334 #--------------------
  335   - |
  336     sound {
  337         compatible = "simple-audio-card";
  338 
  339         simple-audio-card,widgets =
  340             "Headphone", "Headphone Jack";
  341         simple-audio-card,routing =
  342             "Headphone Jack", "HPLEFT",
  343             "Headphone Jack", "HPRIGHT",
  344             "LEFTIN", "HPL",
  345             "RIGHTIN", "HPR";
  346         simple-audio-card,aux-devs = <&amp>;
  347         simple-audio-card,cpu {
  348             sound-dai = <&ssi2>;
  349         };
  350         simple-audio-card,codec {
  351             sound-dai = <&codec>;
  352             clocks = <&clocks>;
  353         };
  354     };
  355 
  356 #--------------------
  357 # Sampling Rate Conversion
  358 #--------------------
  359   - |
  360     sound {
  361         compatible = "simple-audio-card";
  362 
  363         simple-audio-card,name = "rsnd-ak4643";
  364         simple-audio-card,format = "left_j";
  365         simple-audio-card,bitclock-master = <&sndcodec>;
  366         simple-audio-card,frame-master = <&sndcodec>;
  367 
  368         simple-audio-card,convert-rate = <48000>;
  369 
  370         simple-audio-card,prefix = "ak4642";
  371         simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
  372                                     "DAI0 Capture", "ak4642 Capture";
  373 
  374         sndcpu: simple-audio-card,cpu {
  375             sound-dai = <&rcar_sound>;
  376         };
  377 
  378         sndcodec: simple-audio-card,codec {
  379             sound-dai = <&ak4643>;
  380             system-clock-frequency = <11289600>;
  381         };
  382     };
  383 
  384 #--------------------
  385 # 2 CPU 1 Codec (Mixing)
  386 #--------------------
  387   - |
  388     sound {
  389         compatible = "simple-audio-card";
  390         #address-cells = <1>;
  391         #size-cells = <0>;
  392 
  393         simple-audio-card,name = "rsnd-ak4643";
  394         simple-audio-card,format = "left_j";
  395         simple-audio-card,bitclock-master = <&dpcmcpu>;
  396         simple-audio-card,frame-master = <&dpcmcpu>;
  397 
  398         simple-audio-card,convert-rate = <48000>;
  399         simple-audio-card,convert-channels = <2>;
  400 
  401         simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
  402                                     "ak4642 Playback", "DAI1 Playback";
  403 
  404         dpcmcpu: simple-audio-card,cpu@0 {
  405             reg = <0>;
  406             sound-dai = <&rcar_sound 0>;
  407         };
  408 
  409         simple-audio-card,cpu@1 {
  410             reg = <1>;
  411             sound-dai = <&rcar_sound 1>;
  412         };
  413 
  414         simple-audio-card,codec {
  415             prefix = "ak4642";
  416             sound-dai = <&ak4643>;
  417             clocks = <&audio_clock>;
  418         };
  419     };
  420 
  421 #--------------------
  422 # Multi DAI links with DPCM:
  423 #
  424 # CPU0 ------ ak4613
  425 # CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
  426 # CPU2 --/                /* DPCM 3ch/4ch */
  427 # CPU3 --/                /* DPCM 5ch/6ch */
  428 # CPU4 --/                /* DPCM 7ch/8ch */
  429 # CPU5 ------ PCM3168A-c
  430 #--------------------
  431   - |
  432     sound {
  433         compatible = "simple-audio-card";
  434         #address-cells = <1>;
  435         #size-cells = <0>;
  436 
  437         simple-audio-card,routing =
  438             "pcm3168a Playback", "DAI1 Playback",
  439             "pcm3168a Playback", "DAI2 Playback",
  440             "pcm3168a Playback", "DAI3 Playback",
  441             "pcm3168a Playback", "DAI4 Playback";
  442 
  443         simple-audio-card,dai-link@0 {
  444             reg = <0>;
  445             format = "left_j";
  446             bitclock-master = <&sndcpu0>;
  447             frame-master = <&sndcpu0>;
  448 
  449             sndcpu0: cpu {
  450                 sound-dai = <&rcar_sound 0>;
  451             };
  452             codec {
  453                 sound-dai = <&ak4613>;
  454             };
  455         };
  456 
  457         simple-audio-card,dai-link@1 {
  458             reg = <1>;
  459             format = "i2s";
  460             bitclock-master = <&sndcpu1>;
  461             frame-master = <&sndcpu1>;
  462 
  463             convert-channels = <8>; /* TDM Split */
  464 
  465             sndcpu1: cpu0 {
  466                 sound-dai = <&rcar_sound 1>;
  467             };
  468             cpu1 {
  469                 sound-dai = <&rcar_sound 2>;
  470             };
  471             cpu2 {
  472                 sound-dai = <&rcar_sound 3>;
  473             };
  474             cpu3 {
  475                 sound-dai = <&rcar_sound 4>;
  476             };
  477             codec {
  478                 mclk-fs = <512>;
  479                 prefix = "pcm3168a";
  480                 dai-tdm-slot-num = <8>;
  481                 sound-dai = <&pcm3168a 0>;
  482             };
  483         };
  484 
  485         simple-audio-card,dai-link@2 {
  486             reg = <2>;
  487             format = "i2s";
  488             bitclock-master = <&sndcpu2>;
  489             frame-master = <&sndcpu2>;
  490 
  491             sndcpu2: cpu {
  492                 sound-dai = <&rcar_sound 5>;
  493             };
  494             codec {
  495                 mclk-fs = <512>;
  496                 prefix = "pcm3168a";
  497                 sound-dai = <&pcm3168a 1>;
  498             };
  499         };
  500     };

Cache object: 5bc02d9b80eb84a59ad9f65a5cd5e090


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.