<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-dev/scripts/jobserver-exec, branch master</title>
<subtitle>Linux kernel development work - see feature branches</subtitle>
<id>https://git.zx2c4.com/linux-dev/atom/scripts/jobserver-exec?h=master</id>
<link rel='self' href='https://git.zx2c4.com/linux-dev/atom/scripts/jobserver-exec?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/'/>
<updated>2021-05-17T03:10:03Z</updated>
<entry>
<title>scripts/jobserver-exec: Fix a typo ("envirnoment")</title>
<updated>2021-05-17T03:10:03Z</updated>
<author>
<name>Jonathan Neuschäfer</name>
<email>j.neuschaefer@gmx.net</email>
</author>
<published>2021-05-13T16:24:02Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=98a499a11ecdd8cb91d03dd5c034aaf7422f2deb'/>
<id>urn:sha1:98a499a11ecdd8cb91d03dd5c034aaf7422f2deb</id>
<content type='text'>
Signed-off-by: Jonathan Neuschäfer &lt;j.neuschaefer@gmx.net&gt;
Signed-off-by: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
</content>
</entry>
<entry>
<title>kbuild: remove PYTHON variable</title>
<updated>2021-02-01T01:37:19Z</updated>
<author>
<name>Masahiro Yamada</name>
<email>masahiroy@kernel.org</email>
</author>
<published>2021-02-01T01:00:24Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=d8d2d38275c1b2d3936c0d809e0559e88912fbb5'/>
<id>urn:sha1:d8d2d38275c1b2d3936c0d809e0559e88912fbb5</id>
<content type='text'>
Python retired in 2020, and some distributions do not provide the
'python' command any more.

As in commit 51839e29cb59 ("scripts: switch explicitly to Python 3"),
we need to use more specific 'python3' to invoke scripts even if they
are written in a way compatible with both Python 2 and 3.

This commit removes the variable 'PYTHON', and switches the existing
users to 'PYTHON3'.

BTW, PEP 394 (https://www.python.org/dev/peps/pep-0394/) is a helpful
material.

Signed-off-by: Masahiro Yamada &lt;masahiroy@kernel.org&gt;
</content>
</entry>
<entry>
<title>docs, parallelism: Rearrange how jobserver reservations are made</title>
<updated>2019-11-22T17:35:18Z</updated>
<author>
<name>Kees Cook</name>
<email>keescook@chromium.org</email>
</author>
<published>2019-11-21T20:59:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=51e46c7a4007d271b2d42dbc2df953ab968577a7'/>
<id>urn:sha1:51e46c7a4007d271b2d42dbc2df953ab968577a7</id>
<content type='text'>
Rasmus correctly observed that the existing jobserver reservation only
worked if no other build targets were specified. The correct approach
is to hold the jobserver slots until sphinx has finished. To fix this,
the following changes are made:

- refactor (and rename) scripts/jobserver-exec to set an environment
  variable for the maximally reserved jobserver slots and exec a
  child, to release the slots on exit.

- create Documentation/scripts/parallel-wrapper.sh which examines both
  $PARALLELISM and the detected "-jauto" logic from Documentation/Makefile
  to decide sphinx's final -j argument.

- chain these together in Documentation/Makefile

Suggested-by: Rasmus Villemoes &lt;linux@rasmusvillemoes.dk&gt;
Link: https://lore.kernel.org/lkml/eb25959a-9ec4-3530-2031-d9d716b40b20@rasmusvillemoes.dk
Signed-off-by: Kees Cook &lt;keescook@chromium.org&gt;
Link: https://lore.kernel.org/r/20191121205929.40371-4-keescook@chromium.org
Signed-off-by: Jonathan Corbet &lt;corbet@lwn.net&gt;
</content>
</entry>
</feed>
2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
<a id='n47' href='#n47'>47</a>
<a id='n48' href='#n48'>48</a>
<a id='n49' href='#n49'>49</a>
<a id='n50' href='#n50'>50</a>
<a id='n51' href='#n51'>51</a>
<a id='n52' href='#n52'>52</a>
<a id='n53' href='#n53'>53</a>
<a id='n54' href='#n54'>54</a>
<a id='n55' href='#n55'>55</a>
<a id='n56' href='#n56'>56</a>
<a id='n57' href='#n57'>57</a>
<a id='n58' href='#n58'>58</a>
<a id='n59' href='#n59'>59</a>
<a id='n60' href='#n60'>60</a>
<a id='n61' href='#n61'>61</a>
<a id='n62' href='#n62'>62</a>
<a id='n63' href='#n63'>63</a>
<a id='n64' href='#n64'>64</a>
<a id='n65' href='#n65'>65</a>
<a id='n66' href='#n66'>66</a>
<a id='n67' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
<a id='n79' href='#n79'>79</a>
<a id='n80' href='#n80'>80</a>
<a id='n81' href='#n81'>81</a>
<a id='n82' href='#n82'>82</a>
<a id='n83' href='#n83'>83</a>
<a id='n84' href='#n84'>84</a>
<a id='n85' href='#n85'>85</a>
<a id='n86' href='#n86'>86</a>
<a id='n87' href='#n87'>87</a>
<a id='n88' href='#n88'>88</a>
<a id='n89' href='#n89'>89</a>
<a id='n90' href='#n90'>90</a>
<a id='n91' href='#n91'>91</a>
<a id='n92' href='#n92'>92</a>
<a id='n93' href='#n93'>93</a>
<a id='n94' href='#n94'>94</a>
<a id='n95' href='#n95'>95</a>
<a id='n96' href='#n96'>96</a>
<a id='n97' href='#n97'>97</a>
<a id='n98' href='#n98'>98</a>
<a id='n99' href='#n99'>99</a>
<a id='n100' href='#n100'>100</a>
<a id='n101' href='#n101'>101</a>
<a id='n102' href='#n102'>102</a>
<a id='n103' href='#n103'>103</a>
<a id='n104' href='#n104'>104</a>
<a id='n105' href='#n105'>105</a>
<a id='n106' href='#n106'>106</a>
<a id='n107' href='#n107'>107</a>
<a id='n108' href='#n108'>108</a>
<a id='n109' href='#n109'>109</a>
<a id='n110' href='#n110'>110</a>
<a id='n111' href='#n111'>111</a>
<a id='n112' href='#n112'>112</a>
<a id='n113' href='#n113'>113</a>
<a id='n114' href='#n114'>114</a>
<a id='n115' href='#n115'>115</a>
<a id='n116' href='#n116'>116</a>
<a id='n117' href='#n117'>117</a>
<a id='n118' href='#n118'>118</a>
<a id='n119' href='#n119'>119</a>
<a id='n120' href='#n120'>120</a>
<a id='n121' href='#n121'>121</a>
<a id='n122' href='#n122'>122</a>
<a id='n123' href='#n123'>123</a>
<a id='n124' href='#n124'>124</a>
<a id='n125' href='#n125'>125</a>
<a id='n126' href='#n126'>126</a>
<a id='n127' href='#n127'>127</a>
<a id='n128' href='#n128'>128</a>
<a id='n129' href='#n129'>129</a>
<a id='n130' href='#n130'>130</a>
<a id='n131' href='#n131'>131</a>
<a id='n132' href='#n132'>132</a>
<a id='n133' href='#n133'>133</a>
<a id='n134' href='#n134'>134</a>
<a id='n135' href='#n135'>135</a>
<a id='n136' href='#n136'>136</a>
<a id='n137' href='#n137'>137</a>
<a id='n138' href='#n138'>138</a>
<a id='n139' href='#n139'>139</a>
<a id='n140' href='#n140'>140</a>
<a id='n141' href='#n141'>141</a>
<a id='n142' href='#n142'>142</a>
<a id='n143' href='#n143'>143</a>
<a id='n144' href='#n144'>144</a>
<a id='n145' href='#n145'>145</a>
<a id='n146' href='#n146'>146</a>
<a id='n147' href='#n147'>147</a>
<a id='n148' href='#n148'>148</a>
<a id='n149' href='#n149'>149</a>
<a id='n150' href='#n150'>150</a>
<a id='n151' href='#n151'>151</a>
<a id='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
<a id='n221' href='#n221'>221</a>
<a id='n222' href='#n222'>222</a>
<a id='n223' href='#n223'>223</a>
<a id='n224' href='#n224'>224</a>
<a id='n225' href='#n225'>225</a>
<a id='n226' href='#n226'>226</a>
<a id='n227' href='#n227'>227</a>
<a id='n228' href='#n228'>228</a>
<a id='n229' href='#n229'>229</a>
<a id='n230' href='#n230'>230</a>
<a id='n231' href='#n231'>231</a>
<a id='n232' href='#n232'>232</a>
<a id='n233' href='#n233'>233</a>
<a id='n234' href='#n234'>234</a>
<a id='n235' href='#n235'>235</a>
<a id='n236' href='#n236'>236</a>
<a id='n237' href='#n237'>237</a>
<a id='n238' href='#n238'>238</a>
<a id='n239' href='#n239'>239</a>
<a id='n240' href='#n240'>240</a>
<a id='n241' href='#n241'>241</a>
<a id='n242' href='#n242'>242</a>
<a id='n243' href='#n243'>243</a>
<a id='n244' href='#n244'>244</a>
<a id='n245' href='#n245'>245</a>
<a id='n246' href='#n246'>246</a>
<a id='n247' href='#n247'>247</a>
<a id='n248' href='#n248'>248</a>
<a id='n249' href='#n249'>249</a>
<a id='n250' href='#n250'>250</a>
<a id='n251' href='#n251'>251</a>
<a id='n252' href='#n252'>252</a>
<a id='n253' href='#n253'>253</a>
<a id='n254' href='#n254'>254</a>
<a id='n255' href='#n255'>255</a>
<a id='n256' href='#n256'>256</a>
<a id='n257' href='#n257'>257</a>
<a id='n258' href='#n258'>258</a>
<a id='n259' href='#n259'>259</a>
<a id='n260' href='#n260'>260</a>
<a id='n261' href='#n261'>261</a>
<a id='n262' href='#n262'>262</a>
<a id='n263' href='#n263'>263</a>
<a id='n264' href='#n264'>264</a>
<a id='n265' href='#n265'>265</a>
<a id='n266' href='#n266'>266</a>
<a id='n267' href='#n267'>267</a>
<a id='n268' href='#n268'>268</a>
<a id='n269' href='#n269'>269</a>
<a id='n270' href='#n270'>270</a>
<a id='n271' href='#n271'>271</a>
<a id='n272' href='#n272'>272</a>
<a id='n273' href='#n273'>273</a>
<a id='n274' href='#n274'>274</a>
<a id='n275' href='#n275'>275</a>
<a id='n276' href='#n276'>276</a>
<a id='n277' href='#n277'>277</a>
<a id='n278' href='#n278'>278</a>
<a id='n279' href='#n279'>279</a>
<a id='n280' href='#n280'>280</a>
<a id='n281' href='#n281'>281</a>
<a id='n282' href='#n282'>282</a>
<a id='n283' href='#n283'>283</a>
<a id='n284' href='#n284'>284</a>
<a id='n285' href='#n285'>285</a>
<a id='n286' href='#n286'>286</a>
<a id='n287' href='#n287'>287</a>
<a id='n288' href='#n288'>288</a>
<a id='n289' href='#n289'>289</a>
<a id='n290' href='#n290'>290</a>
<a id='n291' href='#n291'>291</a>
<a id='n292' href='#n292'>292</a>
<a id='n293' href='#n293'>293</a>
<a id='n294' href='#n294'>294</a>
<a id='n295' href='#n295'>295</a>
<a id='n296' href='#n296'>296</a>
<a id='n297' href='#n297'>297</a>
<a id='n298' href='#n298'>298</a>
<a id='n299' href='#n299'>299</a>
<a id='n300' href='#n300'>300</a>
<a id='n301' href='#n301'>301</a>
<a id='n302' href='#n302'>302</a>
<a id='n303' href='#n303'>303</a>
<a id='n304' href='#n304'>304</a>
<a id='n305' href='#n305'>305</a>
<a id='n306' href='#n306'>306</a>
<a id='n307' href='#n307'>307</a>
<a id='n308' href='#n308'>308</a>
<a id='n309' href='#n309'>309</a>
<a id='n310' href='#n310'>310</a>
<a id='n311' href='#n311'>311</a>
<a id='n312' href='#n312'>312</a>
<a id='n313' href='#n313'>313</a>
<a id='n314' href='#n314'>314</a>
<a id='n315' href='#n315'>315</a>
<a id='n316' href='#n316'>316</a>
<a id='n317' href='#n317'>317</a>
<a id='n318' href='#n318'>318</a>
<a id='n319' href='#n319'>319</a>
<a id='n320' href='#n320'>320</a>
<a id='n321' href='#n321'>321</a>
<a id='n322' href='#n322'>322</a>
<a id='n323' href='#n323'>323</a>
<a id='n324' href='#n324'>324</a>
<a id='n325' href='#n325'>325</a>
<a id='n326' href='#n326'>326</a>
<a id='n327' href='#n327'>327</a>
<a id='n328' href='#n328'>328</a>
<a id='n329' href='#n329'>329</a>
<a id='n330' href='#n330'>330</a>
<a id='n331' href='#n331'>331</a>
<a id='n332' href='#n332'>332</a>
<a id='n333' href='#n333'>333</a>
<a id='n334' href='#n334'>334</a>
<a id='n335' href='#n335'>335</a>
<a id='n336' href='#n336'>336</a>
<a id='n337' href='#n337'>337</a>
<a id='n338' href='#n338'>338</a>
<a id='n339' href='#n339'>339</a>
<a id='n340' href='#n340'>340</a>
<a id='n341' href='#n341'>341</a>
<a id='n342' href='#n342'>342</a>
<a id='n343' href='#n343'>343</a>
<a id='n344' href='#n344'>344</a>
<a id='n345' href='#n345'>345</a>
<a id='n346' href='#n346'>346</a>
<a id='n347' href='#n347'>347</a>
<a id='n348' href='#n348'>348</a>
<a id='n349' href='#n349'>349</a>
<a id='n350' href='#n350'>350</a>
<a id='n351' href='#n351'>351</a>
<a id='n352' href='#n352'>352</a>
<a id='n353' href='#n353'>353</a>
<a id='n354' href='#n354'>354</a>
<a id='n355' href='#n355'>355</a>
<a id='n356' href='#n356'>356</a>
<a id='n357' href='#n357'>357</a>
<a id='n358' href='#n358'>358</a>
<a id='n359' href='#n359'>359</a>
<a id='n360' href='#n360'>360</a>
<a id='n361' href='#n361'>361</a>
<a id='n362' href='#n362'>362</a>
<a id='n363' href='#n363'>363</a>
<a id='n364' href='#n364'>364</a>
<a id='n365' href='#n365'>365</a>
<a id='n366' href='#n366'>366</a>
<a id='n367' href='#n367'>367</a>
<a id='n368' href='#n368'>368</a>
<a id='n369' href='#n369'>369</a>
<a id='n370' href='#n370'>370</a>
<a id='n371' href='#n371'>371</a>
<a id='n372' href='#n372'>372</a>
<a id='n373' href='#n373'>373</a>
<a id='n374' href='#n374'>374</a>
<a id='n375' href='#n375'>375</a>
<a id='n376' href='#n376'>376</a>
<a id='n377' href='#n377'>377</a>
<a id='n378' href='#n378'>378</a>
<a id='n379' href='#n379'>379</a>
<a id='n380' href='#n380'>380</a>
<a id='n381' href='#n381'>381</a>
<a id='n382' href='#n382'>382</a>
<a id='n383' href='#n383'>383</a>
<a id='n384' href='#n384'>384</a>
<a id='n385' href='#n385'>385</a>
<a id='n386' href='#n386'>386</a>
<a id='n387' href='#n387'>387</a>
<a id='n388' href='#n388'>388</a>
<a id='n389' href='#n389'>389</a>
<a id='n390' href='#n390'>390</a>
<a id='n391' href='#n391'>391</a>
<a id='n392' href='#n392'>392</a>
<a id='n393' href='#n393'>393</a>
<a id='n394' href='#n394'>394</a>
<a id='n395' href='#n395'>395</a>
<a id='n396' href='#n396'>396</a>
<a id='n397' href='#n397'>397</a>
<a id='n398' href='#n398'>398</a>
<a id='n399' href='#n399'>399</a>
<a id='n400' href='#n400'>400</a>
<a id='n401' href='#n401'>401</a>
<a id='n402' href='#n402'>402</a>
<a id='n403' href='#n403'>403</a>
<a id='n404' href='#n404'>404</a>
<a id='n405' href='#n405'>405</a>
<a id='n406' href='#n406'>406</a>
<a id='n407' href='#n407'>407</a>
<a id='n408' href='#n408'>408</a>
<a id='n409' href='#n409'>409</a>
<a id='n410' href='#n410'>410</a>
<a id='n411' href='#n411'>411</a>
<a id='n412' href='#n412'>412</a>
<a id='n413' href='#n413'>413</a>
<a id='n414' href='#n414'>414</a>
<a id='n415' href='#n415'>415</a>
<a id='n416' href='#n416'>416</a>
<a id='n417' href='#n417'>417</a>
<a id='n418' href='#n418'>418</a>
<a id='n419' href='#n419'>419</a>
<a id='n420' href='#n420'>420</a>
<a id='n421' href='#n421'>421</a>
<a id='n422' href='#n422'>422</a>
<a id='n423' href='#n423'>423</a>
<a id='n424' href='#n424'>424</a>
<a id='n425' href='#n425'>425</a>
<a id='n426' href='#n426'>426</a>
<a id='n427' href='#n427'>427</a>
<a id='n428' href='#n428'>428</a>
<a id='n429' href='#n429'>429</a>
<a id='n430' href='#n430'>430</a>
<a id='n431' href='#n431'>431</a>
<a id='n432' href='#n432'>432</a>
<a id='n433' href='#n433'>433</a>
<a id='n434' href='#n434'>434</a>
<a id='n435' href='#n435'>435</a>
<a id='n436' href='#n436'>436</a>
<a id='n437' href='#n437'>437</a>
<a id='n438' href='#n438'>438</a>
<a id='n439' href='#n439'>439</a>
<a id='n440' href='#n440'>440</a>
<a id='n441' href='#n441'>441</a>
<a id='n442' href='#n442'>442</a>
<a id='n443' href='#n443'>443</a>
<a id='n444' href='#n444'>444</a>
<a id='n445' href='#n445'>445</a>
<a id='n446' href='#n446'>446</a>
<a id='n447' href='#n447'>447</a>
<a id='n448' href='#n448'>448</a>
<a id='n449' href='#n449'>449</a>
<a id='n450' href='#n450'>450</a>
<a id='n451' href='#n451'>451</a>
<a id='n452' href='#n452'>452</a>
<a id='n453' href='#n453'>453</a>
<a id='n454' href='#n454'>454</a>
<a id='n455' href='#n455'>455</a>
<a id='n456' href='#n456'>456</a>
<a id='n457' href='#n457'>457</a>
<a id='n458' href='#n458'>458</a>
<a id='n459' href='#n459'>459</a>
<a id='n460' href='#n460'>460</a>
<a id='n461' href='#n461'>461</a>
<a id='n462' href='#n462'>462</a>
<a id='n463' href='#n463'>463</a>
<a id='n464' href='#n464'>464</a>
<a id='n465' href='#n465'>465</a>
<a id='n466' href='#n466'>466</a>
<a id='n467' href='#n467'>467</a>
<a id='n468' href='#n468'>468</a>
<a id='n469' href='#n469'>469</a>
<a id='n470' href='#n470'>470</a>
<a id='n471' href='#n471'>471</a>
<a id='n472' href='#n472'>472</a>
<a id='n473' href='#n473'>473</a>
<a id='n474' href='#n474'>474</a>
<a id='n475' href='#n475'>475</a>
<a id='n476' href='#n476'>476</a>
<a id='n477' href='#n477'>477</a>
<a id='n478' href='#n478'>478</a>
<a id='n479' href='#n479'>479</a>
<a id='n480' href='#n480'>480</a>
<a id='n481' href='#n481'>481</a>
<a id='n482' href='#n482'>482</a>
<a id='n483' href='#n483'>483</a>
<a id='n484' href='#n484'>484</a>
<a id='n485' href='#n485'>485</a>
<a id='n486' href='#n486'>486</a>
<a id='n487' href='#n487'>487</a>
<a id='n488' href='#n488'>488</a>
<a id='n489' href='#n489'>489</a>
<a id='n490' href='#n490'>490</a>
<a id='n491' href='#n491'>491</a>
<a id='n492' href='#n492'>492</a>
<a id='n493' href='#n493'>493</a>
<a id='n494' href='#n494'>494</a>
<a id='n495' href='#n495'>495</a>
<a id='n496' href='#n496'>496</a>
<a id='n497' href='#n497'>497</a>
<a id='n498' href='#n498'>498</a>
<a id='n499' href='#n499'>499</a>
<a id='n500' href='#n500'>500</a>
<a id='n501' href='#n501'>501</a>
<a id='n502' href='#n502'>502</a>
<a id='n503' href='#n503'>503</a>
<a id='n504' href='#n504'>504</a>
<a id='n505' href='#n505'>505</a>
<a id='n506' href='#n506'>506</a>
<a id='n507' href='#n507'>507</a>
<a id='n508' href='#n508'>508</a>
<a id='n509' href='#n509'>509</a>
<a id='n510' href='#n510'>510</a>
<a id='n511' href='#n511'>511</a>
<a id='n512' href='#n512'>512</a>
<a id='n513' href='#n513'>513</a>
<a id='n514' href='#n514'>514</a>
<a id='n515' href='#n515'>515</a>
<a id='n516' href='#n516'>516</a>
<a id='n517' href='#n517'>517</a>
<a id='n518' href='#n518'>518</a>
<a id='n519' href='#n519'>519</a>
<a id='n520' href='#n520'>520</a>
<a id='n521' href='#n521'>521</a>
<a id='n522' href='#n522'>522</a>
<a id='n523' href='#n523'>523</a>
<a id='n524' href='#n524'>524</a>
<a id='n525' href='#n525'>525</a>
<a id='n526' href='#n526'>526</a>
<a id='n527' href='#n527'>527</a>
<a id='n528' href='#n528'>528</a>
<a id='n529' href='#n529'>529</a>
<a id='n530' href='#n530'>530</a>
<a id='n531' href='#n531'>531</a>
<a id='n532' href='#n532'>532</a>
<a id='n533' href='#n533'>533</a>
<a id='n534' href='#n534'>534</a>
<a id='n535' href='#n535'>535</a>
<a id='n536' href='#n536'>536</a>
<a id='n537' href='#n537'>537</a>
<a id='n538' href='#n538'>538</a>
<a id='n539' href='#n539'>539</a>
<a id='n540' href='#n540'>540</a>
<a id='n541' href='#n541'>541</a>
<a id='n542' href='#n542'>542</a>
<a id='n543' href='#n543'>543</a>
<a id='n544' href='#n544'>544</a>
<a id='n545' href='#n545'>545</a>
<a id='n546' href='#n546'>546</a>
<a id='n547' href='#n547'>547</a>
<a id='n548' href='#n548'>548</a>
<a id='n549' href='#n549'>549</a>
<a id='n550' href='#n550'>550</a>
<a id='n551' href='#n551'>551</a>
<a id='n552' href='#n552'>552</a>
<a id='n553' href='#n553'>553</a>
<a id='n554' href='#n554'>554</a>
<a id='n555' href='#n555'>555</a>
<a id='n556' href='#n556'>556</a>
<a id='n557' href='#n557'>557</a>
<a id='n558' href='#n558'>558</a>
<a id='n559' href='#n559'>559</a>
<a id='n560' href='#n560'>560</a>
<a id='n561' href='#n561'>561</a>
<a id='n562' href='#n562'>562</a>
<a id='n563' href='#n563'>563</a>
<a id='n564' href='#n564'>564</a>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
<a id='n643' href='#n643'>643</a>
<a id='n644' href='#n644'>644</a>
<a id='n645' href='#n645'>645</a>
<a id='n646' href='#n646'>646</a>
<a id='n647' href='#n647'>647</a>
<a id='n648' href='#n648'>648</a>
<a id='n649' href='#n649'>649</a>
<a id='n650' href='#n650'>650</a>
<a id='n651' href='#n651'>651</a>
<a id='n652' href='#n652'>652</a>
<a id='n653' href='#n653'>653</a>
<a id='n654' href='#n654'>654</a>
<a id='n655' href='#n655'>655</a>
<a id='n656' href='#n656'>656</a>
<a id='n657' href='#n657'>657</a>
<a id='n658' href='#n658'>658</a>
<a id='n659' href='#n659'>659</a>
<a id='n660' href='#n660'>660</a>
<a id='n661' href='#n661'>661</a>
<a id='n662' href='#n662'>662</a>
<a id='n663' href='#n663'>663</a>
<a id='n664' href='#n664'>664</a>
<a id='n665' href='#n665'>665</a>
<a id='n666' href='#n666'>666</a>
<a id='n667' href='#n667'>667</a>
<a id='n668' href='#n668'>668</a>
<a id='n669' href='#n669'>669</a>
<a id='n670' href='#n670'>670</a>
<a id='n671' href='#n671'>671</a>
<a id='n672' href='#n672'>672</a>
<a id='n673' href='#n673'>673</a>
<a id='n674' href='#n674'>674</a>
<a id='n675' href='#n675'>675</a>
<a id='n676' href='#n676'>676</a>
<a id='n677' href='#n677'>677</a>
<a id='n678' href='#n678'>678</a>
<a id='n679' href='#n679'>679</a>
<a id='n680' href='#n680'>680</a>
<a id='n681' href='#n681'>681</a>
<a id='n682' href='#n682'>682</a>
<a id='n683' href='#n683'>683</a>
<a id='n684' href='#n684'>684</a>
<a id='n685' href='#n685'>685</a>
<a id='n686' href='#n686'>686</a>
<a id='n687' href='#n687'>687</a>
<a id='n688' href='#n688'>688</a>
<a id='n689' href='#n689'>689</a>
<a id='n690' href='#n690'>690</a>
<a id='n691' href='#n691'>691</a>
<a id='n692' href='#n692'>692</a>
<a id='n693' href='#n693'>693</a>
<a id='n694' href='#n694'>694</a>
<a id='n695' href='#n695'>695</a>
<a id='n696' href='#n696'>696</a>
<a id='n697' href='#n697'>697</a>
<a id='n698' href='#n698'>698</a>
<a id='n699' href='#n699'>699</a>
<a id='n700' href='#n700'>700</a>
<a id='n701' href='#n701'>701</a>
<a id='n702' href='#n702'>702</a>
<a id='n703' href='#n703'>703</a>
<a id='n704' href='#n704'>704</a>
<a id='n705' href='#n705'>705</a>
<a id='n706' href='#n706'>706</a>
<a id='n707' href='#n707'>707</a>
<a id='n708' href='#n708'>708</a>
<a id='n709' href='#n709'>709</a>
<a id='n710' href='#n710'>710</a>
<a id='n711' href='#n711'>711</a>
<a id='n712' href='#n712'>712</a>
<a id='n713' href='#n713'>713</a>
<a id='n714' href='#n714'>714</a>
<a id='n715' href='#n715'>715</a>
<a id='n716' href='#n716'>716</a>
<a id='n717' href='#n717'>717</a>
<a id='n718' href='#n718'>718</a>
<a id='n719' href='#n719'>719</a>
<a id='n720' href='#n720'>720</a>
<a id='n721' href='#n721'>721</a>
<a id='n722' href='#n722'>722</a>
<a id='n723' href='#n723'>723</a>
<a id='n724' href='#n724'>724</a>
<a id='n725' href='#n725'>725</a>
<a id='n726' href='#n726'>726</a>
<a id='n727' href='#n727'>727</a>
<a id='n728' href='#n728'>728</a>
<a id='n729' href='#n729'>729</a>
<a id='n730' href='#n730'>730</a>
<a id='n731' href='#n731'>731</a>
<a id='n732' href='#n732'>732</a>
<a id='n733' href='#n733'>733</a>
<a id='n734' href='#n734'>734</a>
<a id='n735' href='#n735'>735</a>
<a id='n736' href='#n736'>736</a>
<a id='n737' href='#n737'>737</a>
<a id='n738' href='#n738'>738</a>
<a id='n739' href='#n739'>739</a>
<a id='n740' href='#n740'>740</a>
<a id='n741' href='#n741'>741</a>
<a id='n742' href='#n742'>742</a>
<a id='n743' href='#n743'>743</a>
<a id='n744' href='#n744'>744</a>
<a id='n745' href='#n745'>745</a>
<a id='n746' href='#n746'>746</a>
<a id='n747' href='#n747'>747</a>
<a id='n748' href='#n748'>748</a>
<a id='n749' href='#n749'>749</a>
<a id='n750' href='#n750'>750</a>
<a id='n751' href='#n751'>751</a>
<a id='n752' href='#n752'>752</a>
<a id='n753' href='#n753'>753</a>
<a id='n754' href='#n754'>754</a>
<a id='n755' href='#n755'>755</a>
<a id='n756' href='#n756'>756</a>
<a id='n757' href='#n757'>757</a>
<a id='n758' href='#n758'>758</a>
<a id='n759' href='#n759'>759</a>
<a id='n760' href='#n760'>760</a>
<a id='n761' href='#n761'>761</a>
<a id='n762' href='#n762'>762</a>
<a id='n763' href='#n763'>763</a>
<a id='n764' href='#n764'>764</a>
<a id='n765' href='#n765'>765</a>
<a id='n766' href='#n766'>766</a>
<a id='n767' href='#n767'>767</a>
<a id='n768' href='#n768'>768</a>
<a id='n769' href='#n769'>769</a>
<a id='n770' href='#n770'>770</a>
<a id='n771' href='#n771'>771</a>
<a id='n772' href='#n772'>772</a>
<a id='n773' href='#n773'>773</a>
<a id='n774' href='#n774'>774</a>
<a id='n775' href='#n775'>775</a>
<a id='n776' href='#n776'>776</a>
<a id='n777' href='#n777'>777</a>
<a id='n778' href='#n778'>778</a>
<a id='n779' href='#n779'>779</a>
<a id='n780' href='#n780'>780</a>
<a id='n781' href='#n781'>781</a>
<a id='n782' href='#n782'>782</a>
<a id='n783' href='#n783'>783</a>
<a id='n784' href='#n784'>784</a>
<a id='n785' href='#n785'>785</a>
<a id='n786' href='#n786'>786</a>
<a id='n787' href='#n787'>787</a>
<a id='n788' href='#n788'>788</a>
<a id='n789' href='#n789'>789</a>
<a id='n790' href='#n790'>790</a>
<a id='n791' href='#n791'>791</a>
<a id='n792' href='#n792'>792</a>
<a id='n793' href='#n793'>793</a>
<a id='n794' href='#n794'>794</a>
<a id='n795' href='#n795'>795</a>
<a id='n796' href='#n796'>796</a>
<a id='n797' href='#n797'>797</a>
<a id='n798' href='#n798'>798</a>
<a id='n799' href='#n799'>799</a>
<a id='n800' href='#n800'>800</a>
<a id='n801' href='#n801'>801</a>
<a id='n802' href='#n802'>802</a>
<a id='n803' href='#n803'>803</a>
<a id='n804' href='#n804'>804</a>
<a id='n805' href='#n805'>805</a>
<a id='n806' href='#n806'>806</a>
<a id='n807' href='#n807'>807</a>
<a id='n808' href='#n808'>808</a>
<a id='n809' href='#n809'>809</a>
<a id='n810' href='#n810'>810</a>
<a id='n811' href='#n811'>811</a>
<a id='n812' href='#n812'>812</a>
<a id='n813' href='#n813'>813</a>
<a id='n814' href='#n814'>814</a>
<a id='n815' href='#n815'>815</a>
<a id='n816' href='#n816'>816</a>
<a id='n817' href='#n817'>817</a>
<a id='n818' href='#n818'>818</a>
<a id='n819' href='#n819'>819</a>
<a id='n820' href='#n820'>820</a>
<a id='n821' href='#n821'>821</a>
<a id='n822' href='#n822'>822</a>
<a id='n823' href='#n823'>823</a>
<a id='n824' href='#n824'>824</a>
<a id='n825' href='#n825'>825</a>
<a id='n826' href='#n826'>826</a>
<a id='n827' href='#n827'>827</a>
<a id='n828' href='#n828'>828</a>
<a id='n829' href='#n829'>829</a>
<a id='n830' href='#n830'>830</a>
<a id='n831' href='#n831'>831</a>
<a id='n832' href='#n832'>832</a>
<a id='n833' href='#n833'>833</a>
<a id='n834' href='#n834'>834</a>
<a id='n835' href='#n835'>835</a>
<a id='n836' href='#n836'>836</a>
<a id='n837' href='#n837'>837</a>
<a id='n838' href='#n838'>838</a>
<a id='n839' href='#n839'>839</a>
<a id='n840' href='#n840'>840</a>
<a id='n841' href='#n841'>841</a>
<a id='n842' href='#n842'>842</a>
<a id='n843' href='#n843'>843</a>
<a id='n844' href='#n844'>844</a>
<a id='n845' href='#n845'>845</a>
<a id='n846' href='#n846'>846</a>
<a id='n847' href='#n847'>847</a>
<a id='n848' href='#n848'>848</a>
<a id='n849' href='#n849'>849</a>
<a id='n850' href='#n850'>850</a>
<a id='n851' href='#n851'>851</a>
<a id='n852' href='#n852'>852</a>
<a id='n853' href='#n853'>853</a>
<a id='n854' href='#n854'>854</a>
<a id='n855' href='#n855'>855</a>
<a id='n856' href='#n856'>856</a>
<a id='n857' href='#n857'>857</a>
<a id='n858' href='#n858'>858</a>
<a id='n859' href='#n859'>859</a>
<a id='n860' href='#n860'>860</a>
<a id='n861' href='#n861'>861</a>
<a id='n862' href='#n862'>862</a>
<a id='n863' href='#n863'>863</a>
<a id='n864' href='#n864'>864</a>
<a id='n865' href='#n865'>865</a>
<a id='n866' href='#n866'>866</a>
<a id='n867' href='#n867'>867</a>
<a id='n868' href='#n868'>868</a>
<a id='n869' href='#n869'>869</a>
<a id='n870' href='#n870'>870</a>
<a id='n871' href='#n871'>871</a>
<a id='n872' href='#n872'>872</a>
<a id='n873' href='#n873'>873</a>
<a id='n874' href='#n874'>874</a>
<a id='n875' href='#n875'>875</a>
<a id='n876' href='#n876'>876</a>
<a id='n877' href='#n877'>877</a>
<a id='n878' href='#n878'>878</a>
<a id='n879' href='#n879'>879</a>
<a id='n880' href='#n880'>880</a>
<a id='n881' href='#n881'>881</a>
<a id='n882' href='#n882'>882</a>
<a id='n883' href='#n883'>883</a>
<a id='n884' href='#n884'>884</a>
<a id='n885' href='#n885'>885</a>
<a id='n886' href='#n886'>886</a>
<a id='n887' href='#n887'>887</a>
<a id='n888' href='#n888'>888</a>
<a id='n889' href='#n889'>889</a>
<a id='n890' href='#n890'>890</a>
<a id='n891' href='#n891'>891</a>
<a id='n892' href='#n892'>892</a>
<a id='n893' href='#n893'>893</a>
<a id='n894' href='#n894'>894</a>
<a id='n895' href='#n895'>895</a>
<a id='n896' href='#n896'>896</a>
<a id='n897' href='#n897'>897</a>
<a id='n898' href='#n898'>898</a>
<a id='n899' href='#n899'>899</a>
<a id='n900' href='#n900'>900</a>
<a id='n901' href='#n901'>901</a>
<a id='n902' href='#n902'>902</a>
<a id='n903' href='#n903'>903</a>
<a id='n904' href='#n904'>904</a>
<a id='n905' href='#n905'>905</a>
<a id='n906' href='#n906'>906</a>
<a id='n907' href='#n907'>907</a>
<a id='n908' href='#n908'>908</a>
<a id='n909' href='#n909'>909</a>
<a id='n910' href='#n910'>910</a>
<a id='n911' href='#n911'>911</a>
<a id='n912' href='#n912'>912</a>
<a id='n913' href='#n913'>913</a>
<a id='n914' href='#n914'>914</a>
<a id='n915' href='#n915'>915</a>
<a id='n916' href='#n916'>916</a>
<a id='n917' href='#n917'>917</a>
<a id='n918' href='#n918'>918</a>
<a id='n919' href='#n919'>919</a>
<a id='n920' href='#n920'>920</a>
<a id='n921' href='#n921'>921</a>
<a id='n922' href='#n922'>922</a>
<a id='n923' href='#n923'>923</a>
<a id='n924' href='#n924'>924</a>
<a id='n925' href='#n925'>925</a>
<a id='n926' href='#n926'>926</a>
<a id='n927' href='#n927'>927</a>
<a id='n928' href='#n928'>928</a>
<a id='n929' href='#n929'>929</a>
<a id='n930' href='#n930'>930</a>
<a id='n931' href='#n931'>931</a>
<a id='n932' href='#n932'>932</a>
<a id='n933' href='#n933'>933</a>
<a id='n934' href='#n934'>934</a>
<a id='n935' href='#n935'>935</a>
<a id='n936' href='#n936'>936</a>
<a id='n937' href='#n937'>937</a>
<a id='n938' href='#n938'>938</a>
<a id='n939' href='#n939'>939</a>
<a id='n940' href='#n940'>940</a>
<a id='n941' href='#n941'>941</a>
<a id='n942' href='#n942'>942</a>
<a id='n943' href='#n943'>943</a>
<a id='n944' href='#n944'>944</a>
<a id='n945' href='#n945'>945</a>
<a id='n946' href='#n946'>946</a>
<a id='n947' href='#n947'>947</a>
<a id='n948' href='#n948'>948</a>
<a id='n949' href='#n949'>949</a>
<a id='n950' href='#n950'>950</a>
<a id='n951' href='#n951'>951</a>
<a id='n952' href='#n952'>952</a>
<a id='n953' href='#n953'>953</a>
<a id='n954' href='#n954'>954</a>
<a id='n955' href='#n955'>955</a>
<a id='n956' href='#n956'>956</a>
<a id='n957' href='#n957'>957</a>
<a id='n958' href='#n958'>958</a>
<a id='n959' href='#n959'>959</a>
<a id='n960' href='#n960'>960</a>
<a id='n961' href='#n961'>961</a>
<a id='n962' href='#n962'>962</a>
<a id='n963' href='#n963'>963</a>
<a id='n964' href='#n964'>964</a>
<a id='n965' href='#n965'>965</a>
<a id='n966' href='#n966'>966</a>
<a id='n967' href='#n967'>967</a>
<a id='n968' href='#n968'>968</a>
<a id='n969' href='#n969'>969</a>
<a id='n970' href='#n970'>970</a>
<a id='n971' href='#n971'>971</a>
<a id='n972' href='#n972'>972</a>
<a id='n973' href='#n973'>973</a>
<a id='n974' href='#n974'>974</a>
<a id='n975' href='#n975'>975</a>
<a id='n976' href='#n976'>976</a>
<a id='n977' href='#n977'>977</a>
<a id='n978' href='#n978'>978</a>
<a id='n979' href='#n979'>979</a>
<a id='n980' href='#n980'>980</a>
<a id='n981' href='#n981'>981</a>
<a id='n982' href='#n982'>982</a>
<a id='n983' href='#n983'>983</a>
<a id='n984' href='#n984'>984</a>
<a id='n985' href='#n985'>985</a>
<a id='n986' href='#n986'>986</a>
<a id='n987' href='#n987'>987</a>
<a id='n988' href='#n988'>988</a>
<a id='n989' href='#n989'>989</a>
<a id='n990' href='#n990'>990</a>
<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
</pre></td>
<td class='lines'><pre><code><style>
@media only all and (prefers-color-scheme: dark) {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #49483e }
.highlight .c { color: #959077 } /* Comment */
.highlight .err { color: #ED007E; background-color: #1E0010 } /* Error */
.highlight .esc { color: #F8F8F2 } /* Escape */
.highlight .g { color: #F8F8F2 } /* Generic */
.highlight .k { color: #66D9EF } /* Keyword */
.highlight .l { color: #AE81FF } /* Literal */
.highlight .n { color: #F8F8F2 } /* Name */
.highlight .o { color: #FF4689 } /* Operator */
.highlight .x { color: #F8F8F2 } /* Other */
.highlight .p { color: #F8F8F2 } /* Punctuation */
.highlight .ch { color: #959077 } /* Comment.Hashbang */
.highlight .cm { color: #959077 } /* Comment.Multiline */
.highlight .cp { color: #959077 } /* Comment.Preproc */
.highlight .cpf { color: #959077 } /* Comment.PreprocFile */
.highlight .c1 { color: #959077 } /* Comment.Single */
.highlight .cs { color: #959077 } /* Comment.Special */
.highlight .gd { color: #FF4689 } /* Generic.Deleted */
.highlight .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
.highlight .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #F8F8F2 } /* Generic.Error */
.highlight .gh { color: #F8F8F2 } /* Generic.Heading */
.highlight .gi { color: #A6E22E } /* Generic.Inserted */
.highlight .go { color: #66D9EF } /* Generic.Output */
.highlight .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
.highlight .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #959077 } /* Generic.Subheading */
.highlight .gt { color: #F8F8F2 } /* Generic.Traceback */
.highlight .kc { color: #66D9EF } /* Keyword.Constant */
.highlight .kd { color: #66D9EF } /* Keyword.Declaration */
.highlight .kn { color: #FF4689 } /* Keyword.Namespace */
.highlight .kp { color: #66D9EF } /* Keyword.Pseudo */
.highlight .kr { color: #66D9EF } /* Keyword.Reserved */
.highlight .kt { color: #66D9EF } /* Keyword.Type */
.highlight .ld { color: #E6DB74 } /* Literal.Date */
.highlight .m { color: #AE81FF } /* Literal.Number */
.highlight .s { color: #E6DB74 } /* Literal.String */
.highlight .na { color: #A6E22E } /* Name.Attribute */
.highlight .nb { color: #F8F8F2 } /* Name.Builtin */
.highlight .nc { color: #A6E22E } /* Name.Class */
.highlight .no { color: #66D9EF } /* Name.Constant */
.highlight .nd { color: #A6E22E } /* Name.Decorator */
.highlight .ni { color: #F8F8F2 } /* Name.Entity */
.highlight .ne { color: #A6E22E } /* Name.Exception */
.highlight .nf { color: #A6E22E } /* Name.Function */
.highlight .nl { color: #F8F8F2 } /* Name.Label */
.highlight .nn { color: #F8F8F2 } /* Name.Namespace */
.highlight .nx { color: #A6E22E } /* Name.Other */
.highlight .py { color: #F8F8F2 } /* Name.Property */
.highlight .nt { color: #FF4689 } /* Name.Tag */
.highlight .nv { color: #F8F8F2 } /* Name.Variable */
.highlight .ow { color: #FF4689 } /* Operator.Word */
.highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */
.highlight .w { color: #F8F8F2 } /* Text.Whitespace */
.highlight .mb { color: #AE81FF } /* Literal.Number.Bin */
.highlight .mf { color: #AE81FF } /* Literal.Number.Float */
.highlight .mh { color: #AE81FF } /* Literal.Number.Hex */
.highlight .mi { color: #AE81FF } /* Literal.Number.Integer */
.highlight .mo { color: #AE81FF } /* Literal.Number.Oct */
.highlight .sa { color: #E6DB74 } /* Literal.String.Affix */
.highlight .sb { color: #E6DB74 } /* Literal.String.Backtick */
.highlight .sc { color: #E6DB74 } /* Literal.String.Char */
.highlight .dl { color: #E6DB74 } /* Literal.String.Delimiter */
.highlight .sd { color: #E6DB74 } /* Literal.String.Doc */
.highlight .s2 { color: #E6DB74 } /* Literal.String.Double */
.highlight .se { color: #AE81FF } /* Literal.String.Escape */
.highlight .sh { color: #E6DB74 } /* Literal.String.Heredoc */
.highlight .si { color: #E6DB74 } /* Literal.String.Interpol */
.highlight .sx { color: #E6DB74 } /* Literal.String.Other */
.highlight .sr { color: #E6DB74 } /* Literal.String.Regex */
.highlight .s1 { color: #E6DB74 } /* Literal.String.Single */
.highlight .ss { color: #E6DB74 } /* Literal.String.Symbol */
.highlight .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #A6E22E } /* Name.Function.Magic */
.highlight .vc { color: #F8F8F2 } /* Name.Variable.Class */
.highlight .vg { color: #F8F8F2 } /* Name.Variable.Global */
.highlight .vi { color: #F8F8F2 } /* Name.Variable.Instance */
.highlight .vm { color: #F8F8F2 } /* Name.Variable.Magic */
.highlight .il { color: #AE81FF } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888 } /* Comment */
.highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */
.highlight .k { color: #080; font-weight: bold } /* Keyword */
.highlight .ch { color: #888 } /* Comment.Hashbang */
.highlight .cm { color: #888 } /* Comment.Multiline */
.highlight .cp { color: #C00; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888 } /* Comment.Single */
.highlight .cs { color: #C00; font-weight: bold; background-color: #FFF0F0 } /* Comment.Special */
.highlight .gd { color: #000; background-color: #FDD } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #A00 } /* Generic.Error */
.highlight .gh { color: #333 } /* Generic.Heading */
.highlight .gi { color: #000; background-color: #DFD } /* Generic.Inserted */
.highlight .go { color: #888 } /* Generic.Output */
.highlight .gp { color: #555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666 } /* Generic.Subheading */
.highlight .gt { color: #A00 } /* Generic.Traceback */
.highlight .kc { color: #080; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #080; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #080; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #080 } /* Keyword.Pseudo */
.highlight .kr { color: #080; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #00D; font-weight: bold } /* Literal.Number */
.highlight .s { color: #D20; background-color: #FFF0F0 } /* Literal.String */
.highlight .na { color: #369 } /* Name.Attribute */
.highlight .nb { color: #038 } /* Name.Builtin */
.highlight .nc { color: #B06; font-weight: bold } /* Name.Class */
.highlight .no { color: #036; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555 } /* Name.Decorator */
.highlight .ne { color: #B06; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #06B; font-weight: bold } /* Name.Function */
.highlight .nl { color: #369; font-style: italic } /* Name.Label */
.highlight .nn { color: #B06; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #369; font-weight: bold } /* Name.Property */
.highlight .nt { color: #B06; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #369 } /* Name.Variable */
.highlight .ow { color: #080 } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #00D; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #00D; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #00D; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #00D; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #00D; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #D20; background-color: #FFF0F0 } /* Literal.String.Affix */
.highlight .sb { color: #D20; background-color: #FFF0F0 } /* Literal.String.Backtick */
.highlight .sc { color: #D20; background-color: #FFF0F0 } /* Literal.String.Char */
.highlight .dl { color: #D20; background-color: #FFF0F0 } /* Literal.String.Delimiter */
.highlight .sd { color: #D20; background-color: #FFF0F0 } /* Literal.String.Doc */
.highlight .s2 { color: #D20; background-color: #FFF0F0 } /* Literal.String.Double */
.highlight .se { color: #04D; background-color: #FFF0F0 } /* Literal.String.Escape */
.highlight .sh { color: #D20; background-color: #FFF0F0 } /* Literal.String.Heredoc */
.highlight .si { color: #33B; background-color: #FFF0F0 } /* Literal.String.Interpol */
.highlight .sx { color: #2B2; background-color: #F0FFF0 } /* Literal.String.Other */
.highlight .sr { color: #080; background-color: #FFF0FF } /* Literal.String.Regex */
.highlight .s1 { color: #D20; background-color: #FFF0F0 } /* Literal.String.Single */
.highlight .ss { color: #A60; background-color: #FFF0F0 } /* Literal.String.Symbol */
.highlight .bp { color: #038 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06B; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #369 } /* Name.Variable.Class */
.highlight .vg { color: #D70 } /* Name.Variable.Global */
.highlight .vi { color: #33B } /* Name.Variable.Instance */
.highlight .vm { color: #369 } /* Name.Variable.Magic */
.highlight .il { color: #00D; font-weight: bold } /* Literal.Number.Integer.Long */
}
</style><div class="highlight"><pre><span></span><span class="c1">// SPDX-License-Identifier: GPL-2.0-only</span>
<span class="cm">/*</span>
<span class="cm"> * Analog Devices ADAU1372 Audio Codec driver</span>
<span class="cm"> *</span>
<span class="cm"> * Copyright 2016 Analog Devices Inc.</span>
<span class="cm"> * Author: Lars-Peter Clausen &lt;lars@metafoo.de&gt;</span>
<span class="cm"> */</span>

<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/clk.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/delay.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/gcd.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/gpio/consumer.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/init.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/module.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/pm.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;linux/slab.h&gt;</span>

<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;sound/core.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;sound/pcm.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;sound/pcm_params.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;sound/tlv.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;sound/soc.h&gt;</span>

<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;adau1372.h&quot;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;adau-utils.h&quot;</span>

<span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">clk</span><span class="w"> </span><span class="o">*</span><span class="n">clk</span><span class="p">;</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">regmap</span><span class="w"> </span><span class="o">*</span><span class="n">regmap</span><span class="p">;</span>
<span class="w">	</span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">switch_mode</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">device</span><span class="w"> </span><span class="o">*</span><span class="n">dev</span><span class="p">);</span>
<span class="w">	</span><span class="kt">bool</span><span class="w"> </span><span class="n">use_pll</span><span class="p">;</span>
<span class="w">	</span><span class="kt">bool</span><span class="w"> </span><span class="n">enabled</span><span class="p">;</span>
<span class="w">	</span><span class="kt">bool</span><span class="w"> </span><span class="n">master</span><span class="p">;</span>

<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_pcm_hw_constraint_list</span><span class="w"> </span><span class="n">rate_constraints</span><span class="p">;</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">slot_width</span><span class="p">;</span>

<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">clk</span><span class="w"> </span><span class="o">*</span><span class="n">mclk</span><span class="p">;</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">gpio_desc</span><span class="w"> </span><span class="o">*</span><span class="n">pd_gpio</span><span class="p">;</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">device</span><span class="w"> </span><span class="o">*</span><span class="n">dev</span><span class="p">;</span>
<span class="p">};</span>

<span class="cp">#define ADAU1372_REG_CLK_CTRL		0x00</span>
<span class="cp">#define ADAU1372_REG_PLL(x)		(0x01 + (x))</span>
<span class="cp">#define ADAU1372_REG_DAC_SOURCE		0x11</span>
<span class="cp">#define ADAU1372_REG_SOUT_SOURCE_0_1	0x13</span>
<span class="cp">#define ADAU1372_REG_SOUT_SOURCE_2_3	0x14</span>
<span class="cp">#define ADAU1372_REG_SOUT_SOURCE_4_5	0x15</span>
<span class="cp">#define ADAU1372_REG_SOUT_SOURCE_6_7	0x16</span>
<span class="cp">#define ADAU1372_REG_ADC_SDATA_CH	0x17</span>
<span class="cp">#define ADAU1372_REG_ASRCO_SOURCE_0_1	0x18</span>
<span class="cp">#define ADAU1372_REG_ASRCO_SOURCE_2_3	0x19</span>
<span class="cp">#define ADAU1372_REG_ASRC_MODE		0x1a</span>
<span class="cp">#define ADAU1372_REG_ADC_CTRL0		0x1b</span>
<span class="cp">#define ADAU1372_REG_ADC_CTRL1		0x1c</span>
<span class="cp">#define ADAU1372_REG_ADC_CTRL2		0x1d</span>
<span class="cp">#define ADAU1372_REG_ADC_CTRL3		0x1e</span>
<span class="cp">#define ADAU1372_REG_ADC_VOL(x)		(0x1f + (x))</span>
<span class="cp">#define ADAU1372_REG_PGA_CTRL(x)	(0x23 + (x))</span>
<span class="cp">#define ADAU1372_REG_PGA_BOOST		0x28</span>
<span class="cp">#define ADAU1372_REG_MICBIAS		0x2d</span>
<span class="cp">#define ADAU1372_REG_DAC_CTRL		0x2e</span>
<span class="cp">#define ADAU1372_REG_DAC_VOL(x)		(0x2f + (x))</span>
<span class="cp">#define ADAU1372_REG_OP_STAGE_MUTE	0x31</span>
<span class="cp">#define ADAU1372_REG_SAI0		0x32</span>
<span class="cp">#define ADAU1372_REG_SAI1		0x33</span>
<span class="cp">#define ADAU1372_REG_SOUT_CTRL		0x34</span>
<span class="cp">#define ADAU1372_REG_MODE_MP(x)		(0x38 + (x))</span>
<span class="cp">#define ADAU1372_REG_OP_STAGE_CTRL	0x43</span>
<span class="cp">#define ADAU1372_REG_DECIM_PWR		0x44</span>
<span class="cp">#define ADAU1372_REG_INTERP_PWR		0x45</span>
<span class="cp">#define ADAU1372_REG_BIAS_CTRL0		0x46</span>
<span class="cp">#define ADAU1372_REG_BIAS_CTRL1		0x47</span>

<span class="cp">#define ADAU1372_CLK_CTRL_PLL_EN	BIT(7)</span>
<span class="cp">#define ADAU1372_CLK_CTRL_XTAL_DIS	BIT(4)</span>
<span class="cp">#define ADAU1372_CLK_CTRL_CLKSRC	BIT(3)</span>
<span class="cp">#define ADAU1372_CLK_CTRL_CC_MDIV	BIT(1)</span>
<span class="cp">#define ADAU1372_CLK_CTRL_MCLK_EN	BIT(0)</span>

<span class="cp">#define ADAU1372_SAI0_DELAY1		(0x0 &lt;&lt; 6)</span>
<span class="cp">#define ADAU1372_SAI0_DELAY0		(0x1 &lt;&lt; 6)</span>
<span class="cp">#define ADAU1372_SAI0_DELAY_MASK	(0x3 &lt;&lt; 6)</span>
<span class="cp">#define ADAU1372_SAI0_SAI_I2S		(0x0 &lt;&lt; 4)</span>
<span class="cp">#define ADAU1372_SAI0_SAI_TDM2		(0x1 &lt;&lt; 4)</span>
<span class="cp">#define ADAU1372_SAI0_SAI_TDM4		(0x2 &lt;&lt; 4)</span>
<span class="cp">#define ADAU1372_SAI0_SAI_TDM8		(0x3 &lt;&lt; 4)</span>
<span class="cp">#define ADAU1372_SAI0_SAI_MASK		(0x3 &lt;&lt; 4)</span>
<span class="cp">#define ADAU1372_SAI0_FS_48		0x0</span>
<span class="cp">#define ADAU1372_SAI0_FS_8		0x1</span>
<span class="cp">#define ADAU1372_SAI0_FS_12		0x2</span>
<span class="cp">#define ADAU1372_SAI0_FS_16		0x3</span>
<span class="cp">#define ADAU1372_SAI0_FS_24		0x4</span>
<span class="cp">#define ADAU1372_SAI0_FS_32		0x5</span>
<span class="cp">#define ADAU1372_SAI0_FS_96		0x6</span>
<span class="cp">#define ADAU1372_SAI0_FS_192		0x7</span>
<span class="cp">#define ADAU1372_SAI0_FS_MASK		0xf</span>

<span class="cp">#define ADAU1372_SAI1_TDM_TS		BIT(7)</span>
<span class="cp">#define ADAU1372_SAI1_BCLK_TDMC		BIT(6)</span>
<span class="cp">#define ADAU1372_SAI1_LR_MODE		BIT(5)</span>
<span class="cp">#define ADAU1372_SAI1_LR_POL		BIT(4)</span>
<span class="cp">#define ADAU1372_SAI1_BCLKRATE		BIT(2)</span>
<span class="cp">#define ADAU1372_SAI1_BCLKEDGE		BIT(1)</span>
<span class="cp">#define ADAU1372_SAI1_MS		BIT(0)</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">adau1372_rates</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_8</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_12</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">12000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_16</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">16000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_24</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">24000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_32</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">32000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_48</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">48000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_96</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">96000</span><span class="p">,</span>
<span class="w">	</span><span class="p">[</span><span class="n">ADAU1372_SAI0_FS_192</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">192000</span><span class="p">,</span>
<span class="p">};</span>

<span class="cm">/* 8k, 12k, 24k, 48k */</span>
<span class="cp">#define ADAU1372_RATE_MASK_TDM8 0x17</span>
<span class="cm">/* + 16k, 96k */</span>
<span class="cp">#define ADAU1372_RATE_MASK_TDM4_MASTER (ADAU1372_RATE_MASK_TDM8 | 0x48 | 0x20)</span>
<span class="cm">/* +32k */</span>
<span class="cp">#define ADAU1372_RATE_MASK_TDM4 (ADAU1372_RATE_MASK_TDM4_MASTER | 0x20)</span>
<span class="cm">/* + 192k */</span>
<span class="cp">#define ADAU1372_RATE_MASK_TDM2 (ADAU1372_RATE_MASK_TDM4 | 0x80)</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">DECLARE_TLV_DB_MINMAX</span><span class="p">(</span><span class="n">adau1372_digital_tlv</span><span class="p">,</span><span class="w"> </span><span class="mi">-9563</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">DECLARE_TLV_DB_SCALE</span><span class="p">(</span><span class="n">adau1372_pga_tlv</span><span class="p">,</span><span class="w"> </span><span class="mi">-1200</span><span class="p">,</span><span class="w"> </span><span class="mi">75</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">DECLARE_TLV_DB_SCALE</span><span class="p">(</span><span class="n">adau1372_pga_boost_tlv</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_bias_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Normal operation&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Extreme power saving&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Enhanced performance&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Power saving&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">adau1372_bias_adc_values</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_bias_adc_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Normal operation&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Enhanced performance&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Power saving&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_bias_dac_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Normal operation&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Power saving&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Superior performance&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Enhanced performance&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_hp_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_afe0_1_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_adc2_3_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_adc_text</span><span class="p">,</span>
<span class="w">	</span><span class="n">adau1372_bias_adc_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_adc0_1_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_adc_text</span><span class="p">,</span>
<span class="w">	</span><span class="n">adau1372_bias_adc_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_afe2_3_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_mic_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_bias_dac_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_BIAS_CTRL1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_dac_text</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_hpf_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Off&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;1 Hz&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;4 Hz&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;8 Hz&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_hpf0_1_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span>
<span class="w">			    </span><span class="n">adau1372_hpf_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_hpf2_3_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL3</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span>
<span class="w">			    </span><span class="n">adau1372_hpf_text</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_controls</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;ADC 0 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;ADC 1 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;ADC 2 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;ADC 3 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;ADC 0 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;ADC 1 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL0</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;ADC 2 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;ADC 3 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>

<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;ADC 0+1 High-Pass-Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_hpf0_1_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;ADC 2+3 High-Pass-Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_hpf2_3_enum</span><span class="p">),</span>

<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 0 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3f</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 1 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3f</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 2 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3f</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 3 Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0x3f</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 0 Boost Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_BOOST</span><span class="p">,</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_boost_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 1 Boost Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_BOOST</span><span class="p">,</span>
<span class="w">		       </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_boost_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 2 Boost Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_BOOST</span><span class="p">,</span>
<span class="w">		       </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_boost_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;PGA 3 Boost Capture Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_BOOST</span><span class="p">,</span>
<span class="w">		       </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_pga_boost_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;PGA 0 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;PGA 1 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;PGA 2 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;PGA 3 Capture Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>

<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;DAC 0 Playback Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_VOL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE_TLV</span><span class="p">(</span><span class="s">&quot;DAC 1 Playback Volume&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_VOL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="w">		       </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xff</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_digital_tlv</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;DAC 0 Playback Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_SINGLE</span><span class="p">(</span><span class="s">&quot;DAC 1 Playback Switch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>

<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;Headphone Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_hp_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;Microphone Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_mic_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;AFE 0+1 Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_afe0_1_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;AFE 2+3 Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_afe2_3_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;ADC 0+1 Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_adc0_1_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;ADC 2+3 Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_adc2_3_enum</span><span class="p">),</span>
<span class="w">	</span><span class="n">SOC_ENUM</span><span class="p">(</span><span class="s">&quot;DAC 0+1 Bias&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_bias_dac_enum</span><span class="p">),</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_decimator_mux_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;ADC&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;DMIC&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_decimator0_1_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL2</span><span class="p">,</span>
<span class="w">			    </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_decimator_mux_text</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_decimator0_1_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Decimator 0+1 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_decimator0_1_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_decimator2_3_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL3</span><span class="p">,</span>
<span class="w">			    </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_decimator_mux_text</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_decimator2_3_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Decimator 2+3 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_decimator2_3_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">adau1372_asrco_mux_values</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_asrco_mux_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Decimator0&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Decimator1&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Decimator2&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Decimator3&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_asrco0_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_0_1</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_asrco1_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_0_1</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_asrco2_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_2_3</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_asrco3_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_2_3</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco_mux_values</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_asrco0_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Output ASRC0 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco0_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_asrco1_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Output ASRC1 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco1_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_asrco2_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Output ASRC2 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco2_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_asrco3_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Output ASRC3 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrco3_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">11</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">13</span><span class="p">,</span><span class="w"> </span><span class="mi">14</span><span class="p">,</span><span class="w"> </span><span class="mi">15</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Output ASRC0&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Output ASRC1&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Output ASRC2&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Output ASRC3&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 0&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 1&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 2&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 3&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 4&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 5&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 6&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 7&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout0_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_0_1</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout1_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_0_1</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout2_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_2_3</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout3_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_2_3</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout4_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_4_5</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout5_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_4_5</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout6_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_6_7</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_sout7_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_6_7</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout_mux_values</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout0_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 0 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout0_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout1_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 1 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout1_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout2_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 2 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout2_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout3_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 3 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout3_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout4_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 4 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout4_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout5_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 5 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout5_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout6_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 6 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout6_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_sout7_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Serial Output 7 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_sout7_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_asrci_mux_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Serial Input 0+1&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 2+3&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 4+5&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Serial Input 6+7&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_asrci_mux_enum</span><span class="p">,</span>
<span class="w">	</span><span class="n">ADAU1372_REG_ASRC_MODE</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrci_mux_text</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_asrci_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;Input ASRC Playback Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_asrci_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">adau1372_dac_mux_values</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="mi">13</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">adau1372_dac_mux_text</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="s">&quot;Input ASRC0&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="s">&quot;Input ASRC1&quot;</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_dac0_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_SOURCE</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac_mux_values</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="n">SOC_VALUE_ENUM_SINGLE_DECL</span><span class="p">(</span><span class="n">adau1372_dac1_mux_enum</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_SOURCE</span><span class="p">,</span>
<span class="w">				  </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xf</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac_mux_text</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac_mux_values</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_dac0_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;DAC 0 Playback Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac0_mux_enum</span><span class="p">);</span>
<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_kcontrol_new</span><span class="w"> </span><span class="n">adau1372_dac1_mux_control</span><span class="w"> </span><span class="o">=</span>
<span class="w">	</span><span class="n">SOC_DAPM_ENUM</span><span class="p">(</span><span class="s">&quot;DAC 1 Playback Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372_dac1_mux_enum</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dapm_widget</span><span class="w"> </span><span class="n">adau1372_dapm_widgets</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;AIN0&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;AIN1&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;AIN2&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;AIN3&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;DMIC0_1&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_INPUT</span><span class="p">(</span><span class="s">&quot;DMIC2_3&quot;</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;MICBIAS0&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_MICBIAS</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;MICBIAS1&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_MICBIAS</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_PGA</span><span class="p">(</span><span class="s">&quot;PGA0&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_PGA</span><span class="p">(</span><span class="s">&quot;PGA1&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_PGA</span><span class="p">(</span><span class="s">&quot;PGA2&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_PGA</span><span class="p">(</span><span class="s">&quot;PGA3&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_ADC</span><span class="p">(</span><span class="s">&quot;ADC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_ADC</span><span class="p">(</span><span class="s">&quot;ADC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_ADC</span><span class="p">(</span><span class="s">&quot;ADC2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_ADC</span><span class="p">(</span><span class="s">&quot;ADC3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;ADC0 Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;ADC1 Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;ADC2 Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;ADC3 Filter&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Output ASRC0 Decimator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Output ASRC1 Decimator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Output ASRC2 Decimator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Output ASRC3 Decimator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Decimator0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_decimator0_1_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Decimator1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_decimator0_1_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Decimator2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_decimator2_3_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Decimator3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_decimator2_3_mux_control</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Output ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrco0_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Output ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrco1_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Output ASRC2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrco2_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Output ASRC3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrco3_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 0 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout0_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 1 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout1_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 2 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout2_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 3 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout3_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 4 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout4_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 5 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout5_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 6 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout6_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Serial Output 7 Capture Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w">			 </span><span class="o">&amp;</span><span class="n">adau1372_sout7_mux_control</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 4&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 5&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 6&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_IN</span><span class="p">(</span><span class="s">&quot;Serial Input 7&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 4&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 5&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 6&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_AIF_OUT</span><span class="p">(</span><span class="s">&quot;Serial Output 7&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Output ASRC Supply&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRC_MODE</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Input ASRC Supply&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRC_MODE</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;DAC1 Modulator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_INTERP_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;DAC0 Modulator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_INTERP_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Input ASRC1 Interpolator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_INTERP_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_SUPPLY</span><span class="p">(</span><span class="s">&quot;Input ASRC0 Interpolator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_INTERP_PWR</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrci_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_asrci_mux_control</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;DAC 0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_dac0_mux_control</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_MUX</span><span class="p">(</span><span class="s">&quot;DAC 1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SND_SOC_NOPM</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_dac1_mux_control</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_DAC</span><span class="p">(</span><span class="s">&quot;DAC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_DAC</span><span class="p">(</span><span class="s">&quot;DAC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_OUT_DRV</span><span class="p">(</span><span class="s">&quot;OP_STAGE_LP&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_OUT_DRV</span><span class="p">(</span><span class="s">&quot;OP_STAGE_LN&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_OUT_DRV</span><span class="p">(</span><span class="s">&quot;OP_STAGE_RP&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_OUT_DRV</span><span class="p">(</span><span class="s">&quot;OP_STAGE_RN&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_CTRL</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>

<span class="w">	</span><span class="n">SND_SOC_DAPM_OUTPUT</span><span class="p">(</span><span class="s">&quot;HPOUTL&quot;</span><span class="p">),</span>
<span class="w">	</span><span class="n">SND_SOC_DAPM_OUTPUT</span><span class="p">(</span><span class="s">&quot;HPOUTR&quot;</span><span class="p">),</span>
<span class="p">};</span>

<span class="cp">#define ADAU1372_SOUT_ROUTES(x) \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Output ASRC0&quot;, &quot;Output ASRC0 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Output ASRC1&quot;, &quot;Output ASRC1 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Output ASRC2&quot;, &quot;Output ASRC2 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Output ASRC3&quot;, &quot;Output ASRC3 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 0&quot;, &quot;Serial Input 0&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 1&quot;, &quot;Serial Input 1&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 2&quot;, &quot;Serial Input 2&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 3&quot;, &quot;Serial Input 3&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 4&quot;, &quot;Serial Input 4&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 5&quot;, &quot;Serial Input 5&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 6&quot;, &quot;Serial Input 6&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x &quot; Capture Mux&quot;, &quot;Serial Input 7&quot;, &quot;Serial Input 7&quot; }, \</span>
<span class="cp">	{ &quot;Serial Output &quot; #x, NULL, &quot;Serial Output &quot; #x &quot; Capture Mux&quot; }, \</span>
<span class="cp">	{ &quot;Capture&quot;, NULL, &quot;Serial Output &quot; #x }</span>

<span class="cp">#define ADAU1372_ASRCO_ROUTES(x) \</span>
<span class="cp">	{ &quot;Output ASRC&quot; #x &quot; Mux&quot;, &quot;Decimator0&quot;, &quot;Decimator0 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Output ASRC&quot; #x &quot; Mux&quot;, &quot;Decimator1&quot;, &quot;Decimator1 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Output ASRC&quot; #x &quot; Mux&quot;, &quot;Decimator2&quot;, &quot;Decimator2 Mux&quot; }, \</span>
<span class="cp">	{ &quot;Output ASRC&quot; #x &quot; Mux&quot;, &quot;Decimator3&quot;, &quot;Decimator3 Mux&quot; }</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dapm_route</span><span class="w"> </span><span class="n">adau1372_dapm_routes</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;PGA0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;AIN0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;PGA1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;AIN1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;PGA2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;AIN2&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;PGA3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;AIN3&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;ADC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;PGA0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;ADC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;PGA1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;ADC2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;PGA2&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;ADC3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;PGA3&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC2&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC3&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC0_1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC0_1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC2_3&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DMIC2_3&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC0 Filter&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC1 Filter&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC2 Filter&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Decimator3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ADC3 Filter&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC0 Decimator&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC1 Decimator&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC2 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC2 Decimator&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Output ASRC3 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Output ASRC3 Decimator&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="n">ADAU1372_ASRCO_ROUTES</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_ASRCO_ROUTES</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_ASRCO_ROUTES</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_ASRCO_ROUTES</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>

<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span>
<span class="w">	</span><span class="n">ADAU1372_SOUT_ROUTES</span><span class="p">(</span><span class="mi">7</span><span class="p">),</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 2&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 3&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 4&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 5&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 6&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Serial Input 7&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 0+1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 0+1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 2+3&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 2&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 2+3&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 3&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 4+5&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 4&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 4+5&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 5&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 6+7&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 6&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 6+7&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Serial Input 7&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC Supply&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Interpolator&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Interpolator&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC 0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC 0 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC 1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC0 Mux&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC 1 Mux&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Input ASRC1 Mux&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC 0 Mux&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC 1 Mux&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC0&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC0 Modulator&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;DAC1&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC1 Modulator&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;OP_STAGE_LP&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;OP_STAGE_LN&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC0&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;OP_STAGE_RP&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC1&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;OP_STAGE_RN&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;DAC1&quot;</span><span class="w"> </span><span class="p">},</span>

<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;HPOUTL&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;OP_STAGE_LP&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;HPOUTL&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;OP_STAGE_LN&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;HPOUTR&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;OP_STAGE_RP&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="s">&quot;HPOUTR&quot;</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;OP_STAGE_RN&quot;</span><span class="w"> </span><span class="p">},</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_set_dai_fmt</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai</span><span class="w"> </span><span class="o">*</span><span class="n">dai</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fmt</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_dai_get_drvdata</span><span class="p">(</span><span class="n">dai</span><span class="p">);</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sai0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">	</span><span class="kt">bool</span><span class="w"> </span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">fmt</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">SND_SOC_DAIFMT_MASTER_MASK</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_CBM_CFM</span><span class="p">:</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">master</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_MS</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_CBS_CFS</span><span class="p">:</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">master</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">default</span><span class="o">:</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">fmt</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">SND_SOC_DAIFMT_INV_MASK</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_NB_NF</span><span class="p">:</span>
<span class="w">		</span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_NB_IF</span><span class="p">:</span>
<span class="w">		</span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_IB_NF</span><span class="p">:</span>
<span class="w">		</span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLKEDGE</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_IB_IF</span><span class="p">:</span>
<span class="w">		</span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLKEDGE</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">fmt</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">SND_SOC_DAIFMT_FORMAT_MASK</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_I2S</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_DELAY1</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_LEFT_J</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_DELAY0</span><span class="p">;</span>
<span class="w">		</span><span class="n">invert_lrclk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">!</span><span class="n">invert_lrclk</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_DSP_A</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_DELAY1</span><span class="p">;</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_LR_MODE</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_DAIFMT_DSP_B</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_DELAY0</span><span class="p">;</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_LR_MODE</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">invert_lrclk</span><span class="p">)</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_LR_POL</span><span class="p">;</span>

<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI0</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI0_DELAY_MASK</span><span class="p">,</span><span class="w"> </span><span class="n">sai0</span><span class="p">);</span>
<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI1</span><span class="p">,</span>
<span class="w">			   </span><span class="n">ADAU1372_SAI1_MS</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLKEDGE</span><span class="w"> </span><span class="o">|</span>
<span class="w">			   </span><span class="n">ADAU1372_SAI1_LR_MODE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ADAU1372_SAI1_LR_POL</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">);</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_hw_params</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_pcm_substream</span><span class="w"> </span><span class="o">*</span><span class="n">substream</span><span class="p">,</span>
<span class="w">			      </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_pcm_hw_params</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai</span><span class="w"> </span><span class="o">*</span><span class="n">dai</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_dai_get_drvdata</span><span class="p">(</span><span class="n">dai</span><span class="p">);</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">rate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">params_rate</span><span class="p">(</span><span class="n">params</span><span class="p">);</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">slot_width</span><span class="p">;</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sai0</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">;</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>

<span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_rates</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">rate</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">adau1372_rates</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="w">			</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_rates</span><span class="p">))</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>

<span class="w">	</span><span class="n">sai0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>

<span class="w">	</span><span class="n">slot_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">slot_width</span><span class="p">;</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">slot_width</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w">		</span><span class="n">slot_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">params_width</span><span class="p">(</span><span class="n">params</span><span class="p">);</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">slot_width</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">16</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLKRATE</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">32</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">default</span><span class="o">:</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI0</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI0_FS_MASK</span><span class="p">,</span><span class="w"> </span><span class="n">sai0</span><span class="p">);</span>
<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI1</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLKRATE</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">);</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_set_tdm_slot</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai</span><span class="w"> </span><span class="o">*</span><span class="n">dai</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tx_mask</span><span class="p">,</span>
<span class="w">				 </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">rx_mask</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">slots</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">width</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_dai_get_drvdata</span><span class="p">(</span><span class="n">dai</span><span class="p">);</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sai0</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">;</span>

<span class="w">	</span><span class="cm">/* I2S mode */</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">slots</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="cm">/* The other settings dont matter in I2S mode */</span>
<span class="w">		</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI0</span><span class="p">,</span>
<span class="w">				   </span><span class="n">ADAU1372_SAI0_SAI_MASK</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI0_SAI_I2S</span><span class="p">);</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM2</span><span class="p">;</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">slot_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="cm">/* We have 8 channels anything outside that is not supported */</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">tx_mask</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="o">~</span><span class="mh">0xff</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">(</span><span class="n">rx_mask</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="o">~</span><span class="mh">0xff</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">width</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">16</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLK_TDMC</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">32</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">default</span><span class="o">:</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">slots</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">2</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_SAI_TDM2</span><span class="p">;</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM2</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">4</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_SAI_TDM4</span><span class="p">;</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">master</span><span class="p">)</span>
<span class="w">			</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM4_MASTER</span><span class="p">;</span>
<span class="w">		</span><span class="k">else</span>
<span class="w">			</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM4</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">8</span><span class="p">:</span>
<span class="w">		</span><span class="n">sai0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI0_SAI_TDM8</span><span class="p">;</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM8</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">default</span><span class="o">:</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">EINVAL</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">slot_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">width</span><span class="p">;</span>

<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI0</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI0_SAI_MASK</span><span class="p">,</span><span class="w"> </span><span class="n">sai0</span><span class="p">);</span>
<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI1</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI1_BCLK_TDMC</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">);</span>

<span class="w">	</span><span class="cm">/* Mask is inverted in hardware */</span>
<span class="w">	</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_CTRL</span><span class="p">,</span><span class="w"> </span><span class="o">~</span><span class="n">tx_mask</span><span class="p">);</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_set_tristate</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai</span><span class="w"> </span><span class="o">*</span><span class="n">dai</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tristate</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_dai_get_drvdata</span><span class="p">(</span><span class="n">dai</span><span class="p">);</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sai1</span><span class="p">;</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">tristate</span><span class="p">)</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_SAI1_TDM_TS</span><span class="p">;</span>
<span class="w">	</span><span class="k">else</span>
<span class="w">		</span><span class="n">sai1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI1</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_SAI1_TDM_TS</span><span class="p">,</span><span class="w"> </span><span class="n">sai1</span><span class="p">);</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_startup</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_pcm_substream</span><span class="w"> </span><span class="o">*</span><span class="n">substream</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai</span><span class="w"> </span><span class="o">*</span><span class="n">dai</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_dai_get_drvdata</span><span class="p">(</span><span class="n">dai</span><span class="p">);</span>

<span class="w">	</span><span class="n">snd_pcm_hw_constraint_list</span><span class="p">(</span><span class="n">substream</span><span class="o">-&gt;</span><span class="n">runtime</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">SNDRV_PCM_HW_PARAM_RATE</span><span class="p">,</span>
<span class="w">				   </span><span class="o">&amp;</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">);</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">adau1372_enable_pll</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">,</span><span class="w"> </span><span class="n">timeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span>

<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_CLK_CTRL</span><span class="p">,</span>
<span class="w">			   </span><span class="n">ADAU1372_CLK_CTRL_PLL_EN</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_PLL_EN</span><span class="p">);</span>
<span class="w">	</span><span class="k">do</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="cm">/* Takes about 1ms to lock */</span>
<span class="w">		</span><span class="n">usleep_range</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="w"> </span><span class="mi">2000</span><span class="p">);</span>
<span class="w">		</span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">regmap_read</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="n">val</span><span class="p">);</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span>
<span class="w">			</span><span class="k">break</span><span class="p">;</span>
<span class="w">		</span><span class="n">timeout</span><span class="o">++</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">val</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">timeout</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="p">(</span><span class="n">val</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span>
<span class="w">		</span><span class="n">dev_err</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Failed to lock PLL</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">adau1372_set_power</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="p">,</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">enabled</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">enable</span><span class="p">)</span>
<span class="w">		</span><span class="k">return</span><span class="p">;</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">clk_ctrl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_MCLK_EN</span><span class="p">;</span>

<span class="w">		</span><span class="n">clk_prepare_enable</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">mclk</span><span class="p">);</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">)</span>
<span class="w">			</span><span class="n">gpiod_set_value</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>

<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">switch_mode</span><span class="p">)</span>
<span class="w">			</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">switch_mode</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">dev</span><span class="p">);</span>

<span class="w">		</span><span class="n">regcache_cache_only</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="nb">false</span><span class="p">);</span>

<span class="w">		</span><span class="cm">/*</span>
<span class="cm">		 * Clocks needs to be enabled before any other register can be</span>
<span class="cm">		 * accessed.</span>
<span class="cm">		 */</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">use_pll</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">adau1372_enable_pll</span><span class="p">(</span><span class="n">adau1372</span><span class="p">);</span>
<span class="w">			</span><span class="n">clk_ctrl</span><span class="w"> </span><span class="o">|=</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_CLKSRC</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_CLK_CTRL</span><span class="p">,</span>
<span class="w">				   </span><span class="n">ADAU1372_CLK_CTRL_MCLK_EN</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_CLKSRC</span><span class="p">,</span><span class="w"> </span><span class="n">clk_ctrl</span><span class="p">);</span>
<span class="w">		</span><span class="n">regcache_sync</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">);</span>
<span class="w">	</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="cm">/*</span>
<span class="cm">			 * This will turn everything off and reset the register</span>
<span class="cm">			 * map. No need to do any register writes to manually</span>
<span class="cm">			 * turn things off.</span>
<span class="cm">			 */</span>
<span class="w">			</span><span class="n">gpiod_set_value</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w">			</span><span class="n">regcache_mark_dirty</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_CLK_CTRL</span><span class="p">,</span>
<span class="w">					   </span><span class="n">ADAU1372_CLK_CTRL_MCLK_EN</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_PLL_EN</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="n">clk_disable_unprepare</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">mclk</span><span class="p">);</span>
<span class="w">		</span><span class="n">regcache_cache_only</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">);</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">enable</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_set_bias_level</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_component</span><span class="w"> </span><span class="o">*</span><span class="n">component</span><span class="p">,</span>
<span class="w">				   </span><span class="k">enum</span><span class="w"> </span><span class="n">snd_soc_bias_level</span><span class="w"> </span><span class="n">level</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snd_soc_component_get_drvdata</span><span class="p">(</span><span class="n">component</span><span class="p">);</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_BIAS_ON</span><span class="p">:</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_BIAS_PREPARE</span><span class="p">:</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_BIAS_STANDBY</span><span class="p">:</span>
<span class="w">		</span><span class="n">adau1372_set_power</span><span class="p">(</span><span class="n">adau1372</span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">);</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="no">SND_SOC_BIAS_OFF</span><span class="p">:</span>
<span class="w">		</span><span class="n">adau1372_set_power</span><span class="p">(</span><span class="n">adau1372</span><span class="p">,</span><span class="w"> </span><span class="nb">false</span><span class="p">);</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_component_driver</span><span class="w"> </span><span class="n">adau1372_driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">.</span><span class="n">set_bias_level</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_set_bias_level</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">controls</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_controls</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">num_controls</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_controls</span><span class="p">),</span>
<span class="w">	</span><span class="p">.</span><span class="n">dapm_widgets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_dapm_widgets</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">num_dapm_widgets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_dapm_widgets</span><span class="p">),</span>
<span class="w">	</span><span class="p">.</span><span class="n">dapm_routes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_dapm_routes</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">num_dapm_routes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_dapm_routes</span><span class="p">),</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai_ops</span><span class="w"> </span><span class="n">adau1372_dai_ops</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">.</span><span class="n">set_fmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_set_dai_fmt</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">set_tdm_slot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_set_tdm_slot</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">set_tristate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_set_tristate</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">hw_params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_hw_params</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">startup</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_startup</span><span class="p">,</span>
<span class="p">};</span>

<span class="cp">#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |	SNDRV_PCM_FMTBIT_S32_LE)</span>

<span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">snd_soc_dai_driver</span><span class="w"> </span><span class="n">adau1372_dai_driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;adau1372&quot;</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">playback</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="p">.</span><span class="n">stream_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Playback&quot;</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">channels_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">channels_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">rates</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SNDRV_PCM_RATE_KNOT</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">formats</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_FORMATS</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">sig_bits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">24</span><span class="p">,</span>
<span class="w">	</span><span class="p">},</span>
<span class="w">	</span><span class="p">.</span><span class="n">capture</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="p">.</span><span class="n">stream_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Capture&quot;</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">channels_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">channels_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">rates</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SNDRV_PCM_RATE_KNOT</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">formats</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_FORMATS</span><span class="p">,</span>
<span class="w">		</span><span class="p">.</span><span class="n">sig_bits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">24</span><span class="p">,</span>
<span class="w">	</span><span class="p">},</span>
<span class="w">	</span><span class="p">.</span><span class="n">ops</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_dai_ops</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">symmetric_rates</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_setup_pll</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">rate</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="n">u8</span><span class="w"> </span><span class="n">regs</span><span class="p">[</span><span class="mi">5</span><span class="p">];</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
<span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span>

<span class="w">	</span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau_calc_pll_cfg</span><span class="p">(</span><span class="n">rate</span><span class="p">,</span><span class="w"> </span><span class="mi">49152000</span><span class="p">,</span><span class="w"> </span><span class="n">regs</span><span class="p">);</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span>

<span class="w">	</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">regs</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
<span class="w">		</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="w"> </span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>

<span class="kt">int</span><span class="w"> </span><span class="nf">adau1372_probe</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">device</span><span class="w"> </span><span class="o">*</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">regmap</span><span class="w"> </span><span class="o">*</span><span class="n">regmap</span><span class="p">,</span>
<span class="w">		   </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">switch_mode</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">device</span><span class="w"> </span><span class="o">*</span><span class="n">dev</span><span class="p">))</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">struct</span><span class="w"> </span><span class="nc">adau1372</span><span class="w"> </span><span class="o">*</span><span class="n">adau1372</span><span class="p">;</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">clk_ctrl</span><span class="p">;</span>
<span class="w">	</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">rate</span><span class="p">;</span>
<span class="w">	</span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span>

<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">IS_ERR</span><span class="p">(</span><span class="n">regmap</span><span class="p">))</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">PTR_ERR</span><span class="p">(</span><span class="n">regmap</span><span class="p">);</span>

<span class="w">	</span><span class="n">adau1372</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">devm_kzalloc</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">adau1372</span><span class="p">),</span><span class="w"> </span><span class="n">GFP_KERNEL</span><span class="p">);</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">adau1372</span><span class="p">)</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="n">ENOMEM</span><span class="p">;</span>

<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">clk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">devm_clk_get</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;mclk&quot;</span><span class="p">);</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">IS_ERR</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">clk</span><span class="p">))</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">PTR_ERR</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">clk</span><span class="p">);</span>

<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">devm_gpiod_get_optional</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;powerdown&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">GPIOD_OUT_HIGH</span><span class="p">);</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">IS_ERR</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">))</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">PTR_ERR</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">pd_gpio</span><span class="p">);</span>

<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">regmap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">regmap</span><span class="p">;</span>
<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">switch_mode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">switch_mode</span><span class="p">;</span>
<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">dev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dev</span><span class="p">;</span>
<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_rates</span><span class="p">;</span>
<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_rates</span><span class="p">);</span>
<span class="w">	</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">rate_constraints</span><span class="p">.</span><span class="n">mask</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_RATE_MASK_TDM2</span><span class="p">;</span>

<span class="w">	</span><span class="n">dev_set_drvdata</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="n">adau1372</span><span class="p">);</span>

<span class="w">	</span><span class="cm">/*</span>
<span class="cm">	 * The datasheet says that the internal MCLK always needs to run at</span>
<span class="cm">	 * 12.288MHz. Automatically choose a valid configuration from the</span>
<span class="cm">	 * external clock.</span>
<span class="cm">	 */</span>
<span class="w">	</span><span class="n">rate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">clk_get_rate</span><span class="p">(</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">clk</span><span class="p">);</span>

<span class="w">	</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">rate</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">12288000</span><span class="p">:</span>
<span class="w">		</span><span class="n">clk_ctrl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_CC_MDIV</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">case</span><span class="w"> </span><span class="mi">24576000</span><span class="p">:</span>
<span class="w">		</span><span class="n">clk_ctrl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="k">default</span><span class="o">:</span>
<span class="w">		</span><span class="n">clk_ctrl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">		</span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_setup_pll</span><span class="p">(</span><span class="n">adau1372</span><span class="p">,</span><span class="w"> </span><span class="n">rate</span><span class="p">);</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span>
<span class="w">		</span><span class="n">adau1372</span><span class="o">-&gt;</span><span class="n">use_pll</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">		</span><span class="k">break</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="cm">/*</span>
<span class="cm">	 * Most of the registers are inaccessible unless the internal clock is</span>
<span class="cm">	 * enabled.</span>
<span class="cm">	 */</span>
<span class="w">	</span><span class="n">regcache_cache_only</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="nb">true</span><span class="p">);</span>

<span class="w">	</span><span class="n">regmap_update_bits</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_CLK_CTRL</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_CLK_CTRL_CC_MDIV</span><span class="p">,</span><span class="w"> </span><span class="n">clk_ctrl</span><span class="p">);</span>

<span class="w">	</span><span class="cm">/*</span>
<span class="cm">	 * No pinctrl support yet, put the multi-purpose pins in the most</span>
<span class="cm">	 * sensible mode for general purpose CODEC operation.</span>
<span class="cm">	 */</span>
<span class="w">	</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="mh">0x00</span><span class="p">);</span><span class="w"> </span><span class="cm">/* SDATA OUT */</span>
<span class="w">	</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span><span class="w"> </span><span class="mh">0x12</span><span class="p">);</span><span class="w"> </span><span class="cm">/* CLOCKOUT */</span>

<span class="w">	</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_MUTE</span><span class="p">,</span><span class="w"> </span><span class="mh">0x0</span><span class="p">);</span>

<span class="w">	</span><span class="n">regmap_write</span><span class="p">(</span><span class="n">regmap</span><span class="p">,</span><span class="w"> </span><span class="mh">0x7</span><span class="p">,</span><span class="w"> </span><span class="mh">0x01</span><span class="p">);</span><span class="w"> </span><span class="cm">/* CLOCK OUT */</span>

<span class="w">	</span><span class="k">return</span><span class="w">  </span><span class="n">devm_snd_soc_register_component</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_driver</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">adau1372_dai_driver</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">EXPORT_SYMBOL</span><span class="p">(</span><span class="n">adau1372_probe</span><span class="p">);</span>

<span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">reg_default</span><span class="w"> </span><span class="n">adau1372_reg_defaults</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_CLK_CTRL</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_SOURCE</span><span class="p">,</span><span class="w">		</span><span class="mh">0x10</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_0_1</span><span class="p">,</span><span class="w">		</span><span class="mh">0x54</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_2_3</span><span class="p">,</span><span class="w">		</span><span class="mh">0x76</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_4_5</span><span class="p">,</span><span class="w">		</span><span class="mh">0x54</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_SOURCE_6_7</span><span class="p">,</span><span class="w">		</span><span class="mh">0x76</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_SDATA_CH</span><span class="p">,</span><span class="w">		</span><span class="mh">0x04</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_0_1</span><span class="p">,</span><span class="w">	</span><span class="mh">0x10</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRCO_SOURCE_2_3</span><span class="p">,</span><span class="w">	</span><span class="mh">0x32</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ASRC_MODE</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL0</span><span class="p">,</span><span class="w">		</span><span class="mh">0x19</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL1</span><span class="p">,</span><span class="w">		</span><span class="mh">0x19</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL2</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_CTRL3</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_ADC_VOL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w">		</span><span class="mh">0x40</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w">		</span><span class="mh">0x40</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w">		</span><span class="mh">0x40</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_CTRL</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w">		</span><span class="mh">0x40</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_PGA_BOOST</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MICBIAS</span><span class="p">,</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_CTRL</span><span class="p">,</span><span class="w">		</span><span class="mh">0x18</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_VOL</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_DAC_VOL</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_MUTE</span><span class="p">,</span><span class="w">		</span><span class="mh">0x0f</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI0</span><span class="p">,</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SAI1</span><span class="p">,</span><span class="w">			</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_SOUT_CTRL</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w">		</span><span class="mh">0x10</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_MODE_MP</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span><span class="w">		</span><span class="mh">0x11</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_OP_STAGE_CTRL</span><span class="p">,</span><span class="w">		</span><span class="mh">0x0f</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_DECIM_PWR</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_INTERP_PWR</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_BIAS_CTRL0</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="w">	</span><span class="p">{</span><span class="w"> </span><span class="n">ADAU1372_REG_BIAS_CTRL1</span><span class="p">,</span><span class="w">		</span><span class="mh">0x00</span><span class="w"> </span><span class="p">},</span>
<span class="p">};</span>

<span class="k">static</span><span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="nf">adau1372_volatile_register</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">device</span><span class="w"> </span><span class="o">*</span><span class="n">dev</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">reg</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">reg</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ADAU1372_REG_PLL</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>

<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="p">}</span>

<span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">regmap_config</span><span class="w"> </span><span class="n">adau1372_regmap_config</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="w">	</span><span class="p">.</span><span class="n">val_bits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">reg_bits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">16</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">max_register</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x4d</span><span class="p">,</span>

<span class="w">	</span><span class="p">.</span><span class="n">reg_defaults</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_reg_defaults</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">num_reg_defaults</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adau1372_reg_defaults</span><span class="p">),</span>
<span class="w">	</span><span class="p">.</span><span class="n">volatile_reg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">adau1372_volatile_register</span><span class="p">,</span>
<span class="w">	</span><span class="p">.</span><span class="n">cache_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">REGCACHE_RBTREE</span><span class="p">,</span>
<span class="p">};</span>
<span class="n">EXPORT_SYMBOL_GPL</span><span class="p">(</span><span class="n">adau1372_regmap_config</span><span class="p">);</span>

<span class="n">MODULE_DESCRIPTION</span><span class="p">(</span><span class="s">&quot;ASoC ADAU1372 CODEC driver&quot;</span><span class="p">);</span>
<span class="n">MODULE_AUTHOR</span><span class="p">(</span><span class="s">&quot;Lars-Peter Clausen &lt;lars@metafoo.de&gt;&quot;</span><span class="p">);</span>
<span class="n">MODULE_LICENSE</span><span class="p">(</span><span class="s">&quot;GPL v2&quot;</span><span class="p">);</span>
</pre></div>
