1Simple-Card: 2 3Simple-Card specifies audio DAI connections of SoC <-> codec. 4 5Required properties: 6 7- compatible : "simple-audio-card" 8 9Optional properties: 10 11- simple-audio-card,name : User specified audio sound card name, one string 12 property. 13- simple-audio-card,widgets : Please refer to widgets.txt. 14- simple-audio-card,routing : A list of the connections between audio components. 15 Each entry is a pair of strings, the first being the 16 connection's sink, the second being the connection's 17 source. 18- simple-audio-card,mclk-fs : Multiplication factor between stream rate and codec 19 mclk. When defined, mclk-fs property defined in 20 dai-link sub nodes are ignored. 21- simple-audio-card,hp-det-gpio : Reference to GPIO that signals when 22 headphones are attached. 23- simple-audio-card,mic-det-gpio : Reference to GPIO that signals when 24 a microphone is attached. 25 26Optional subnodes: 27 28- simple-audio-card,dai-link : Container for dai-link level 29 properties and the CPU and CODEC 30 sub-nodes. This container may be 31 omitted when the card has only one 32 DAI link. See the examples and the 33 section bellow. 34 35Dai-link subnode properties and subnodes: 36 37If dai-link subnode is omitted and the subnode properties are directly 38under "sound"-node the subnode property and subnode names have to be 39prefixed with "simple-audio-card,"-prefix. 40 41Required dai-link subnodes: 42 43- cpu : CPU sub-node 44- codec : CODEC sub-node 45 46Optional dai-link subnode properties: 47 48- format : CPU/CODEC common audio format. 49 "i2s", "right_j", "left_j" , "dsp_a" 50 "dsp_b", "ac97", "pdm", "msb", "lsb" 51- frame-master : Indicates dai-link frame master. 52 phandle to a cpu or codec subnode. 53- bitclock-master : Indicates dai-link bit clock master. 54 phandle to a cpu or codec subnode. 55- bitclock-inversion : bool property. Add this if the 56 dai-link uses bit clock inversion. 57- frame-inversion : bool property. Add this if the 58 dai-link uses frame clock inversion. 59- mclk-fs : Multiplication factor between stream 60 rate and codec mclk, applied only for 61 the dai-link. 62 63For backward compatibility the frame-master and bitclock-master 64properties can be used as booleans in codec subnode to indicate if the 65codec is the dai-link frame or bit clock master. In this case there 66should be no dai-link node, the same properties should not be present 67at sound-node level, and the bitclock-inversion and frame-inversion 68properties should also be placed in the codec node if needed. 69 70Required CPU/CODEC subnodes properties: 71 72- sound-dai : phandle and port of CPU/CODEC 73 74Optional CPU/CODEC subnodes properties: 75 76- dai-tdm-slot-num : Please refer to tdm-slot.txt. 77- dai-tdm-slot-width : Please refer to tdm-slot.txt. 78- clocks / system-clock-frequency : specify subnode's clock if needed. 79 it can be specified via "clocks" if system has 80 clock node (= common clock), or "system-clock-frequency" 81 (if system doens't support common clock) 82 If a clock is specified, it is 83 enabled with clk_prepare_enable() 84 in dai startup() and disabled with 85 clk_disable_unprepare() in dai 86 shutdown(). 87 88Example 1 - single DAI link: 89 90sound { 91 compatible = "simple-audio-card"; 92 simple-audio-card,name = "VF610-Tower-Sound-Card"; 93 simple-audio-card,format = "left_j"; 94 simple-audio-card,bitclock-master = <&dailink0_master>; 95 simple-audio-card,frame-master = <&dailink0_master>; 96 simple-audio-card,widgets = 97 "Microphone", "Microphone Jack", 98 "Headphone", "Headphone Jack", 99 "Speaker", "External Speaker"; 100 simple-audio-card,routing = 101 "MIC_IN", "Microphone Jack", 102 "Headphone Jack", "HP_OUT", 103 "External Speaker", "LINE_OUT"; 104 105 simple-audio-card,cpu { 106 sound-dai = <&sh_fsi2 0>; 107 }; 108 109 dailink0_master: simple-audio-card,codec { 110 sound-dai = <&ak4648>; 111 clocks = <&osc>; 112 }; 113}; 114 115&i2c0 { 116 ak4648: ak4648@12 { 117 #sound-dai-cells = <0>; 118 compatible = "asahi-kasei,ak4648"; 119 reg = <0x12>; 120 }; 121}; 122 123sh_fsi2: sh_fsi2@ec230000 { 124 #sound-dai-cells = <1>; 125 compatible = "renesas,sh_fsi2"; 126 reg = <0xec230000 0x400>; 127 interrupt-parent = <&gic>; 128 interrupts = <0 146 0x4>; 129}; 130 131Example 2 - many DAI links: 132 133sound { 134 compatible = "simple-audio-card"; 135 simple-audio-card,name = "Cubox Audio"; 136 137 simple-audio-card,dai-link@0 { /* I2S - HDMI */ 138 format = "i2s"; 139 cpu { 140 sound-dai = <&audio1 0>; 141 }; 142 codec { 143 sound-dai = <&tda998x 0>; 144 }; 145 }; 146 147 simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ 148 cpu { 149 sound-dai = <&audio1 1>; 150 }; 151 codec { 152 sound-dai = <&tda998x 1>; 153 }; 154 }; 155 156 simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ 157 cpu { 158 sound-dai = <&audio1 1>; 159 }; 160 codec { 161 sound-dai = <&spdif_codec>; 162 }; 163 }; 164}; 165