q6audio-v2.c 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
  4. */
  5. #include <linux/slab.h>
  6. #include <linux/wait.h>
  7. #include <linux/sched.h>
  8. #include <linux/jiffies.h>
  9. #include <linux/uaccess.h>
  10. #include <linux/atomic.h>
  11. #include <dsp/q6afe-v2.h>
  12. #include <dsp/q6audio-v2.h>
  13. int q6audio_get_port_index(u16 port_id)
  14. {
  15. switch (port_id) {
  16. case PRIMARY_I2S_RX: return IDX_PRIMARY_I2S_RX;
  17. case PRIMARY_I2S_TX: return IDX_PRIMARY_I2S_TX;
  18. case AFE_PORT_ID_PRIMARY_PCM_RX:
  19. return IDX_AFE_PORT_ID_PRIMARY_PCM_RX;
  20. case AFE_PORT_ID_PRIMARY_PCM_TX:
  21. return IDX_AFE_PORT_ID_PRIMARY_PCM_TX;
  22. case AFE_PORT_ID_SECONDARY_PCM_RX:
  23. return IDX_AFE_PORT_ID_SECONDARY_PCM_RX;
  24. case AFE_PORT_ID_SECONDARY_PCM_TX:
  25. return IDX_AFE_PORT_ID_SECONDARY_PCM_TX;
  26. case AFE_PORT_ID_TERTIARY_PCM_RX:
  27. return IDX_AFE_PORT_ID_TERTIARY_PCM_RX;
  28. case AFE_PORT_ID_TERTIARY_PCM_TX:
  29. return IDX_AFE_PORT_ID_TERTIARY_PCM_TX;
  30. case AFE_PORT_ID_QUATERNARY_PCM_RX:
  31. return IDX_AFE_PORT_ID_QUATERNARY_PCM_RX;
  32. case AFE_PORT_ID_QUATERNARY_PCM_TX:
  33. return IDX_AFE_PORT_ID_QUATERNARY_PCM_TX;
  34. case AFE_PORT_ID_QUINARY_PCM_RX:
  35. return IDX_AFE_PORT_ID_QUINARY_PCM_RX;
  36. case AFE_PORT_ID_QUINARY_PCM_TX:
  37. return IDX_AFE_PORT_ID_QUINARY_PCM_TX;
  38. case AFE_PORT_ID_SENARY_PCM_RX:
  39. return IDX_AFE_PORT_ID_SENARY_PCM_RX;
  40. case AFE_PORT_ID_SENARY_PCM_TX:
  41. return IDX_AFE_PORT_ID_SENARY_PCM_TX;
  42. case SECONDARY_I2S_RX: return IDX_SECONDARY_I2S_RX;
  43. case SECONDARY_I2S_TX: return IDX_SECONDARY_I2S_TX;
  44. case MI2S_RX: return IDX_MI2S_RX;
  45. case MI2S_TX: return IDX_MI2S_TX;
  46. case HDMI_RX: return IDX_HDMI_RX;
  47. case HDMI_RX_MS: return IDX_HDMI_RX_MS;
  48. case DISPLAY_PORT_RX: return IDX_DISPLAY_PORT_RX;
  49. case AFE_PORT_ID_PRIMARY_SPDIF_RX: return IDX_PRIMARY_SPDIF_RX;
  50. case AFE_PORT_ID_PRIMARY_SPDIF_TX: return IDX_PRIMARY_SPDIF_TX;
  51. case AFE_PORT_ID_SECONDARY_SPDIF_RX: return IDX_SECONDARY_SPDIF_RX;
  52. case AFE_PORT_ID_SECONDARY_SPDIF_TX: return IDX_SECONDARY_SPDIF_TX;
  53. case RSVD_2: return IDX_RSVD_2;
  54. case RSVD_3: return IDX_RSVD_3;
  55. case DIGI_MIC_TX: return IDX_DIGI_MIC_TX;
  56. case VOICE_RECORD_RX: return IDX_VOICE_RECORD_RX;
  57. case VOICE_RECORD_TX: return IDX_VOICE_RECORD_TX;
  58. case VOICE_PLAYBACK_TX: return IDX_VOICE_PLAYBACK_TX;
  59. case VOICE2_PLAYBACK_TX: return IDX_VOICE2_PLAYBACK_TX;
  60. case SLIMBUS_0_RX: return IDX_SLIMBUS_0_RX;
  61. case SLIMBUS_0_TX: return IDX_SLIMBUS_0_TX;
  62. case SLIMBUS_1_RX: return IDX_SLIMBUS_1_RX;
  63. case SLIMBUS_1_TX: return IDX_SLIMBUS_1_TX;
  64. case SLIMBUS_2_RX: return IDX_SLIMBUS_2_RX;
  65. case SLIMBUS_2_TX: return IDX_SLIMBUS_2_TX;
  66. case SLIMBUS_3_RX: return IDX_SLIMBUS_3_RX;
  67. case SLIMBUS_3_TX: return IDX_SLIMBUS_3_TX;
  68. case SLIMBUS_4_RX: return IDX_SLIMBUS_4_RX;
  69. case SLIMBUS_4_TX: return IDX_SLIMBUS_4_TX;
  70. case SLIMBUS_5_RX: return IDX_SLIMBUS_5_RX;
  71. case SLIMBUS_5_TX: return IDX_SLIMBUS_5_TX;
  72. case SLIMBUS_6_RX: return IDX_SLIMBUS_6_RX;
  73. case SLIMBUS_6_TX: return IDX_SLIMBUS_6_TX;
  74. case SLIMBUS_7_RX: return IDX_SLIMBUS_7_RX;
  75. case SLIMBUS_7_TX: return IDX_SLIMBUS_7_TX;
  76. case SLIMBUS_8_RX: return IDX_SLIMBUS_8_RX;
  77. case SLIMBUS_8_TX: return IDX_SLIMBUS_8_TX;
  78. case SLIMBUS_9_RX: return IDX_SLIMBUS_9_RX;
  79. case SLIMBUS_9_TX: return IDX_SLIMBUS_9_TX;
  80. case INT_BT_SCO_RX: return IDX_INT_BT_SCO_RX;
  81. case INT_BT_SCO_TX: return IDX_INT_BT_SCO_TX;
  82. case INT_BT_A2DP_RX: return IDX_INT_BT_A2DP_RX;
  83. case INT_FM_RX: return IDX_INT_FM_RX;
  84. case INT_FM_TX: return IDX_INT_FM_TX;
  85. case RT_PROXY_PORT_001_RX: return IDX_RT_PROXY_PORT_001_RX;
  86. case RT_PROXY_PORT_001_TX: return IDX_RT_PROXY_PORT_001_TX;
  87. case AFE_PORT_ID_PRIMARY_MI2S_RX:
  88. return IDX_AFE_PORT_ID_PRIMARY_MI2S_RX;
  89. case AFE_PORT_ID_PRIMARY_MI2S_TX:
  90. return IDX_AFE_PORT_ID_PRIMARY_MI2S_TX;
  91. case AFE_PORT_ID_QUATERNARY_MI2S_RX:
  92. return IDX_AFE_PORT_ID_QUATERNARY_MI2S_RX;
  93. case AFE_PORT_ID_QUATERNARY_MI2S_TX:
  94. return IDX_AFE_PORT_ID_QUATERNARY_MI2S_TX;
  95. case AFE_PORT_ID_SECONDARY_MI2S_RX:
  96. return IDX_AFE_PORT_ID_SECONDARY_MI2S_RX;
  97. case AFE_PORT_ID_SECONDARY_MI2S_TX:
  98. return IDX_AFE_PORT_ID_SECONDARY_MI2S_TX;
  99. case AFE_PORT_ID_TERTIARY_MI2S_RX:
  100. return IDX_AFE_PORT_ID_TERTIARY_MI2S_RX;
  101. case AFE_PORT_ID_TERTIARY_MI2S_TX:
  102. return IDX_AFE_PORT_ID_TERTIARY_MI2S_TX;
  103. case AFE_PORT_ID_QUINARY_MI2S_RX:
  104. return IDX_AFE_PORT_ID_QUINARY_MI2S_RX;
  105. case AFE_PORT_ID_QUINARY_MI2S_TX:
  106. return IDX_AFE_PORT_ID_QUINARY_MI2S_TX;
  107. case AUDIO_PORT_ID_I2S_RX:
  108. return IDX_AUDIO_PORT_ID_I2S_RX;
  109. case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
  110. return IDX_AFE_PORT_ID_SECONDARY_MI2S_RX_SD1;
  111. case AFE_PORT_ID_PRIMARY_TDM_RX:
  112. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_0;
  113. case AFE_PORT_ID_PRIMARY_TDM_TX:
  114. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_0;
  115. case AFE_PORT_ID_PRIMARY_TDM_RX_1:
  116. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_1;
  117. case AFE_PORT_ID_PRIMARY_TDM_TX_1:
  118. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_1;
  119. case AFE_PORT_ID_PRIMARY_TDM_RX_2:
  120. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_2;
  121. case AFE_PORT_ID_PRIMARY_TDM_TX_2:
  122. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_2;
  123. case AFE_PORT_ID_PRIMARY_TDM_RX_3:
  124. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_3;
  125. case AFE_PORT_ID_PRIMARY_TDM_TX_3:
  126. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_3;
  127. case AFE_PORT_ID_PRIMARY_TDM_RX_4:
  128. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_4;
  129. case AFE_PORT_ID_PRIMARY_TDM_TX_4:
  130. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_4;
  131. case AFE_PORT_ID_PRIMARY_TDM_RX_5:
  132. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_5;
  133. case AFE_PORT_ID_PRIMARY_TDM_TX_5:
  134. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_5;
  135. case AFE_PORT_ID_PRIMARY_TDM_RX_6:
  136. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_6;
  137. case AFE_PORT_ID_PRIMARY_TDM_TX_6:
  138. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_6;
  139. case AFE_PORT_ID_PRIMARY_TDM_RX_7:
  140. return IDX_AFE_PORT_ID_PRIMARY_TDM_RX_7;
  141. case AFE_PORT_ID_PRIMARY_TDM_TX_7:
  142. return IDX_AFE_PORT_ID_PRIMARY_TDM_TX_7;
  143. case AFE_PORT_ID_SECONDARY_TDM_RX:
  144. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_0;
  145. case AFE_PORT_ID_SECONDARY_TDM_TX:
  146. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_0;
  147. case AFE_PORT_ID_SECONDARY_TDM_RX_1:
  148. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_1;
  149. case AFE_PORT_ID_SECONDARY_TDM_TX_1:
  150. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_1;
  151. case AFE_PORT_ID_SECONDARY_TDM_RX_2:
  152. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_2;
  153. case AFE_PORT_ID_SECONDARY_TDM_TX_2:
  154. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_2;
  155. case AFE_PORT_ID_SECONDARY_TDM_RX_3:
  156. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_3;
  157. case AFE_PORT_ID_SECONDARY_TDM_TX_3:
  158. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_3;
  159. case AFE_PORT_ID_SECONDARY_TDM_RX_4:
  160. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_4;
  161. case AFE_PORT_ID_SECONDARY_TDM_TX_4:
  162. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_4;
  163. case AFE_PORT_ID_SECONDARY_TDM_RX_5:
  164. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_5;
  165. case AFE_PORT_ID_SECONDARY_TDM_TX_5:
  166. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_5;
  167. case AFE_PORT_ID_SECONDARY_TDM_RX_6:
  168. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_6;
  169. case AFE_PORT_ID_SECONDARY_TDM_TX_6:
  170. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_6;
  171. case AFE_PORT_ID_SECONDARY_TDM_RX_7:
  172. return IDX_AFE_PORT_ID_SECONDARY_TDM_RX_7;
  173. case AFE_PORT_ID_SECONDARY_TDM_TX_7:
  174. return IDX_AFE_PORT_ID_SECONDARY_TDM_TX_7;
  175. case AFE_PORT_ID_TERTIARY_TDM_RX:
  176. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_0;
  177. case AFE_PORT_ID_TERTIARY_TDM_TX:
  178. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_0;
  179. case AFE_PORT_ID_TERTIARY_TDM_RX_1:
  180. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_1;
  181. case AFE_PORT_ID_TERTIARY_TDM_TX_1:
  182. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_1;
  183. case AFE_PORT_ID_TERTIARY_TDM_RX_2:
  184. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_2;
  185. case AFE_PORT_ID_TERTIARY_TDM_TX_2:
  186. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_2;
  187. case AFE_PORT_ID_TERTIARY_TDM_RX_3:
  188. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_3;
  189. case AFE_PORT_ID_TERTIARY_TDM_TX_3:
  190. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_3;
  191. case AFE_PORT_ID_TERTIARY_TDM_RX_4:
  192. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_4;
  193. case AFE_PORT_ID_TERTIARY_TDM_TX_4:
  194. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_4;
  195. case AFE_PORT_ID_TERTIARY_TDM_RX_5:
  196. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_5;
  197. case AFE_PORT_ID_TERTIARY_TDM_TX_5:
  198. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_5;
  199. case AFE_PORT_ID_TERTIARY_TDM_RX_6:
  200. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_6;
  201. case AFE_PORT_ID_TERTIARY_TDM_TX_6:
  202. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_6;
  203. case AFE_PORT_ID_TERTIARY_TDM_RX_7:
  204. return IDX_AFE_PORT_ID_TERTIARY_TDM_RX_7;
  205. case AFE_PORT_ID_TERTIARY_TDM_TX_7:
  206. return IDX_AFE_PORT_ID_TERTIARY_TDM_TX_7;
  207. case AFE_PORT_ID_QUATERNARY_TDM_RX:
  208. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_0;
  209. case AFE_PORT_ID_QUATERNARY_TDM_TX:
  210. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_0;
  211. case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
  212. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_1;
  213. case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
  214. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_1;
  215. case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
  216. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_2;
  217. case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
  218. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_2;
  219. case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
  220. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_3;
  221. case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
  222. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_3;
  223. case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
  224. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_4;
  225. case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
  226. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_4;
  227. case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
  228. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_5;
  229. case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
  230. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_5;
  231. case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
  232. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_6;
  233. case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
  234. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_6;
  235. case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
  236. return IDX_AFE_PORT_ID_QUATERNARY_TDM_RX_7;
  237. case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
  238. return IDX_AFE_PORT_ID_QUATERNARY_TDM_TX_7;
  239. case AFE_PORT_ID_QUINARY_TDM_RX:
  240. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_0;
  241. case AFE_PORT_ID_QUINARY_TDM_TX:
  242. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_0;
  243. case AFE_PORT_ID_QUINARY_TDM_RX_1:
  244. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_1;
  245. case AFE_PORT_ID_QUINARY_TDM_TX_1:
  246. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_1;
  247. case AFE_PORT_ID_QUINARY_TDM_RX_2:
  248. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_2;
  249. case AFE_PORT_ID_QUINARY_TDM_TX_2:
  250. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_2;
  251. case AFE_PORT_ID_QUINARY_TDM_RX_3:
  252. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_3;
  253. case AFE_PORT_ID_QUINARY_TDM_TX_3:
  254. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_3;
  255. case AFE_PORT_ID_QUINARY_TDM_RX_4:
  256. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_4;
  257. case AFE_PORT_ID_QUINARY_TDM_TX_4:
  258. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_4;
  259. case AFE_PORT_ID_QUINARY_TDM_RX_5:
  260. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_5;
  261. case AFE_PORT_ID_QUINARY_TDM_TX_5:
  262. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_5;
  263. case AFE_PORT_ID_QUINARY_TDM_RX_6:
  264. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_6;
  265. case AFE_PORT_ID_QUINARY_TDM_TX_6:
  266. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_6;
  267. case AFE_PORT_ID_QUINARY_TDM_RX_7:
  268. return IDX_AFE_PORT_ID_QUINARY_TDM_RX_7;
  269. case AFE_PORT_ID_QUINARY_TDM_TX_7:
  270. return IDX_AFE_PORT_ID_QUINARY_TDM_TX_7;
  271. case AFE_PORT_ID_SENARY_TDM_RX:
  272. return IDX_AFE_PORT_ID_SENARY_TDM_RX_0;
  273. case AFE_PORT_ID_SENARY_TDM_TX:
  274. return IDX_AFE_PORT_ID_SENARY_TDM_TX_0;
  275. case AFE_PORT_ID_SENARY_TDM_RX_1:
  276. return IDX_AFE_PORT_ID_SENARY_TDM_RX_1;
  277. case AFE_PORT_ID_SENARY_TDM_TX_1:
  278. return IDX_AFE_PORT_ID_SENARY_TDM_TX_1;
  279. case AFE_PORT_ID_SENARY_TDM_RX_2:
  280. return IDX_AFE_PORT_ID_SENARY_TDM_RX_2;
  281. case AFE_PORT_ID_SENARY_TDM_TX_2:
  282. return IDX_AFE_PORT_ID_SENARY_TDM_TX_2;
  283. case AFE_PORT_ID_SENARY_TDM_RX_3:
  284. return IDX_AFE_PORT_ID_SENARY_TDM_RX_3;
  285. case AFE_PORT_ID_SENARY_TDM_TX_3:
  286. return IDX_AFE_PORT_ID_SENARY_TDM_TX_3;
  287. case AFE_PORT_ID_SENARY_TDM_RX_4:
  288. return IDX_AFE_PORT_ID_SENARY_TDM_RX_4;
  289. case AFE_PORT_ID_SENARY_TDM_TX_4:
  290. return IDX_AFE_PORT_ID_SENARY_TDM_TX_4;
  291. case AFE_PORT_ID_SENARY_TDM_RX_5:
  292. return IDX_AFE_PORT_ID_SENARY_TDM_RX_5;
  293. case AFE_PORT_ID_SENARY_TDM_TX_5:
  294. return IDX_AFE_PORT_ID_SENARY_TDM_TX_5;
  295. case AFE_PORT_ID_SENARY_TDM_RX_6:
  296. return IDX_AFE_PORT_ID_SENARY_TDM_RX_6;
  297. case AFE_PORT_ID_SENARY_TDM_TX_6:
  298. return IDX_AFE_PORT_ID_SENARY_TDM_TX_6;
  299. case AFE_PORT_ID_SENARY_TDM_RX_7:
  300. return IDX_AFE_PORT_ID_SENARY_TDM_RX_7;
  301. case AFE_PORT_ID_SENARY_TDM_TX_7:
  302. return IDX_AFE_PORT_ID_SENARY_TDM_TX_7;
  303. case AFE_PORT_ID_SENARY_MI2S_RX:
  304. return IDX_AFE_PORT_ID_SENARY_MI2S_RX;
  305. case AFE_PORT_ID_SENARY_MI2S_TX:
  306. return IDX_AFE_PORT_ID_SENARY_MI2S_TX;
  307. case AFE_PORT_ID_USB_RX:
  308. return IDX_AFE_PORT_ID_USB_RX;
  309. case AFE_PORT_ID_USB_TX:
  310. return IDX_AFE_PORT_ID_USB_TX;
  311. case AFE_PORT_ID_INT0_MI2S_RX:
  312. return IDX_AFE_PORT_ID_INT0_MI2S_RX;
  313. case AFE_PORT_ID_INT0_MI2S_TX:
  314. return IDX_AFE_PORT_ID_INT0_MI2S_TX;
  315. case AFE_PORT_ID_INT1_MI2S_RX:
  316. return IDX_AFE_PORT_ID_INT1_MI2S_RX;
  317. case AFE_PORT_ID_INT1_MI2S_TX:
  318. return IDX_AFE_PORT_ID_INT1_MI2S_TX;
  319. case AFE_PORT_ID_INT2_MI2S_RX:
  320. return IDX_AFE_PORT_ID_INT2_MI2S_RX;
  321. case AFE_PORT_ID_INT2_MI2S_TX:
  322. return IDX_AFE_PORT_ID_INT2_MI2S_TX;
  323. case AFE_PORT_ID_INT3_MI2S_RX:
  324. return IDX_AFE_PORT_ID_INT3_MI2S_RX;
  325. case AFE_PORT_ID_INT3_MI2S_TX:
  326. return IDX_AFE_PORT_ID_INT3_MI2S_TX;
  327. case AFE_PORT_ID_INT4_MI2S_RX:
  328. return IDX_AFE_PORT_ID_INT4_MI2S_RX;
  329. case AFE_PORT_ID_INT4_MI2S_TX:
  330. return IDX_AFE_PORT_ID_INT4_MI2S_TX;
  331. case AFE_PORT_ID_INT5_MI2S_RX:
  332. return IDX_AFE_PORT_ID_INT5_MI2S_RX;
  333. case AFE_PORT_ID_INT5_MI2S_TX:
  334. return IDX_AFE_PORT_ID_INT5_MI2S_TX;
  335. case AFE_PORT_ID_INT6_MI2S_RX:
  336. return IDX_AFE_PORT_ID_INT6_MI2S_RX;
  337. case AFE_PORT_ID_INT6_MI2S_TX:
  338. return IDX_AFE_PORT_ID_INT6_MI2S_TX;
  339. case AFE_PORT_ID_PRIMARY_META_MI2S_RX:
  340. return IDX_AFE_PORT_ID_PRIMARY_META_MI2S_RX;
  341. case AFE_PORT_ID_SECONDARY_META_MI2S_RX:
  342. return IDX_AFE_PORT_ID_SECONDARY_META_MI2S_RX;
  343. case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
  344. return IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
  345. case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
  346. return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
  347. case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
  348. return IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
  349. case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
  350. return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
  351. case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
  352. return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
  353. case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
  354. return IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_0;
  355. case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
  356. return IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_1;
  357. case AFE_PORT_ID_VA_CODEC_DMA_TX_2:
  358. return IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_2;
  359. case AFE_PORT_ID_RX_CODEC_DMA_RX_0:
  360. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_0;
  361. case AFE_PORT_ID_TX_CODEC_DMA_TX_0:
  362. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_0;
  363. case AFE_PORT_ID_RX_CODEC_DMA_RX_1:
  364. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_1;
  365. case AFE_PORT_ID_TX_CODEC_DMA_TX_1:
  366. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_1;
  367. case AFE_PORT_ID_RX_CODEC_DMA_RX_2:
  368. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_2;
  369. case AFE_PORT_ID_TX_CODEC_DMA_TX_2:
  370. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_2;
  371. case AFE_PORT_ID_RX_CODEC_DMA_RX_3:
  372. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_3;
  373. case AFE_PORT_ID_TX_CODEC_DMA_TX_3:
  374. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_3;
  375. case AFE_PORT_ID_RX_CODEC_DMA_RX_4:
  376. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_4;
  377. case AFE_PORT_ID_TX_CODEC_DMA_TX_4:
  378. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_4;
  379. case AFE_PORT_ID_RX_CODEC_DMA_RX_5:
  380. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_5;
  381. case AFE_PORT_ID_TX_CODEC_DMA_TX_5:
  382. return IDX_AFE_PORT_ID_TX_CODEC_DMA_TX_5;
  383. case AFE_PORT_ID_RX_CODEC_DMA_RX_6:
  384. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_6;
  385. case AFE_PORT_ID_RX_CODEC_DMA_RX_7:
  386. return IDX_AFE_PORT_ID_RX_CODEC_DMA_RX_7;
  387. case RT_PROXY_PORT_002_RX:
  388. return IDX_RT_PROXY_PORT_002_RX;
  389. case RT_PROXY_PORT_002_TX:
  390. return IDX_RT_PROXY_PORT_002_TX;
  391. default: return -EINVAL;
  392. }
  393. }
  394. int q6audio_get_port_id(u16 port_id)
  395. {
  396. switch (port_id) {
  397. case PRIMARY_I2S_RX: return PRIMARY_I2S_RX;
  398. case PRIMARY_I2S_TX: return PRIMARY_I2S_TX;
  399. case AFE_PORT_ID_PRIMARY_PCM_RX:
  400. return AFE_PORT_ID_PRIMARY_PCM_RX;
  401. case AFE_PORT_ID_PRIMARY_PCM_TX:
  402. return AFE_PORT_ID_PRIMARY_PCM_TX;
  403. case AFE_PORT_ID_SECONDARY_PCM_RX:
  404. return AFE_PORT_ID_SECONDARY_PCM_RX;
  405. case AFE_PORT_ID_SECONDARY_PCM_TX:
  406. return AFE_PORT_ID_SECONDARY_PCM_TX;
  407. case AFE_PORT_ID_TERTIARY_PCM_RX:
  408. return AFE_PORT_ID_TERTIARY_PCM_RX;
  409. case AFE_PORT_ID_TERTIARY_PCM_TX:
  410. return AFE_PORT_ID_TERTIARY_PCM_TX;
  411. case AFE_PORT_ID_QUATERNARY_PCM_RX:
  412. return AFE_PORT_ID_QUATERNARY_PCM_RX;
  413. case AFE_PORT_ID_QUATERNARY_PCM_TX:
  414. return AFE_PORT_ID_QUATERNARY_PCM_TX;
  415. case AFE_PORT_ID_QUINARY_PCM_RX:
  416. return AFE_PORT_ID_QUINARY_PCM_RX;
  417. case AFE_PORT_ID_QUINARY_PCM_TX:
  418. return AFE_PORT_ID_QUINARY_PCM_TX;
  419. case AFE_PORT_ID_SENARY_PCM_RX:
  420. return AFE_PORT_ID_SENARY_PCM_RX;
  421. case AFE_PORT_ID_SENARY_PCM_TX:
  422. return AFE_PORT_ID_SENARY_PCM_TX;
  423. case SECONDARY_I2S_RX: return AFE_PORT_ID_SECONDARY_MI2S_RX;
  424. case SECONDARY_I2S_TX: return AFE_PORT_ID_SECONDARY_MI2S_TX;
  425. case MI2S_RX: return AFE_PORT_ID_PRIMARY_MI2S_RX;
  426. case MI2S_TX: return AFE_PORT_ID_PRIMARY_MI2S_TX;
  427. case HDMI_RX: return AFE_PORT_ID_MULTICHAN_HDMI_RX;
  428. case HDMI_RX_MS:
  429. return AFE_PORT_ID_HDMI_MS;
  430. case DISPLAY_PORT_RX:
  431. return AFE_PORT_ID_HDMI_OVER_DP_RX;
  432. case AFE_PORT_ID_PRIMARY_SPDIF_RX:
  433. return AFE_PORT_ID_PRIMARY_SPDIF_RX;
  434. case AFE_PORT_ID_PRIMARY_SPDIF_TX:
  435. return AFE_PORT_ID_PRIMARY_SPDIF_TX;
  436. case AFE_PORT_ID_SECONDARY_SPDIF_RX:
  437. return AFE_PORT_ID_SECONDARY_SPDIF_RX;
  438. case AFE_PORT_ID_SECONDARY_SPDIF_TX:
  439. return AFE_PORT_ID_SECONDARY_SPDIF_TX;
  440. case RSVD_2: return IDX_RSVD_2;
  441. case RSVD_3: return IDX_RSVD_3;
  442. case DIGI_MIC_TX: return AFE_PORT_ID_DIGITAL_MIC_TX;
  443. case VOICE_RECORD_RX: return AFE_PORT_ID_VOICE_RECORD_RX;
  444. case VOICE_RECORD_TX: return AFE_PORT_ID_VOICE_RECORD_TX;
  445. case VOICE_PLAYBACK_TX: return AFE_PORT_ID_VOICE_PLAYBACK_TX;
  446. case VOICE2_PLAYBACK_TX: return AFE_PORT_ID_VOICE2_PLAYBACK_TX;
  447. case SLIMBUS_0_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_RX;
  448. case SLIMBUS_0_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
  449. case SLIMBUS_1_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_RX;
  450. case SLIMBUS_1_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
  451. case SLIMBUS_2_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_RX;
  452. case SLIMBUS_2_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
  453. case SLIMBUS_3_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_RX;
  454. case SLIMBUS_3_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
  455. case SLIMBUS_4_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_RX;
  456. case SLIMBUS_4_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
  457. case SLIMBUS_5_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_RX;
  458. case SLIMBUS_5_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
  459. case SLIMBUS_6_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_6_RX;
  460. case SLIMBUS_6_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_6_TX;
  461. case SLIMBUS_7_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_7_RX;
  462. case SLIMBUS_7_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_7_TX;
  463. case SLIMBUS_8_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_8_RX;
  464. case SLIMBUS_8_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_8_TX;
  465. case SLIMBUS_9_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_9_RX;
  466. case SLIMBUS_9_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_9_TX;
  467. case INT_BT_SCO_RX: return AFE_PORT_ID_INTERNAL_BT_SCO_RX;
  468. case INT_BT_SCO_TX: return AFE_PORT_ID_INTERNAL_BT_SCO_TX;
  469. case INT_BT_A2DP_RX: return AFE_PORT_ID_INTERNAL_BT_A2DP_RX;
  470. case INT_FM_RX: return AFE_PORT_ID_INTERNAL_FM_RX;
  471. case INT_FM_TX: return AFE_PORT_ID_INTERNAL_FM_TX;
  472. case RT_PROXY_PORT_001_RX: return AFE_PORT_ID_RT_PROXY_PORT_001_RX;
  473. case RT_PROXY_PORT_001_TX: return AFE_PORT_ID_RT_PROXY_PORT_001_TX;
  474. case AFE_PORT_ID_PRIMARY_MI2S_RX:
  475. return AFE_PORT_ID_PRIMARY_MI2S_RX;
  476. case AFE_PORT_ID_PRIMARY_MI2S_TX:
  477. return AFE_PORT_ID_PRIMARY_MI2S_TX;
  478. case AFE_PORT_ID_QUATERNARY_MI2S_RX:
  479. return AFE_PORT_ID_QUATERNARY_MI2S_RX;
  480. case AFE_PORT_ID_QUATERNARY_MI2S_TX:
  481. return AFE_PORT_ID_QUATERNARY_MI2S_TX;
  482. case AFE_PORT_ID_SECONDARY_MI2S_RX:
  483. return AFE_PORT_ID_SECONDARY_MI2S_RX;
  484. case AFE_PORT_ID_SECONDARY_MI2S_TX:
  485. return AFE_PORT_ID_SECONDARY_MI2S_TX;
  486. case AFE_PORT_ID_TERTIARY_MI2S_RX:
  487. return AFE_PORT_ID_TERTIARY_MI2S_RX;
  488. case AFE_PORT_ID_TERTIARY_MI2S_TX:
  489. return AFE_PORT_ID_TERTIARY_MI2S_TX;
  490. case AFE_PORT_ID_QUINARY_MI2S_RX:
  491. return AFE_PORT_ID_QUINARY_MI2S_RX;
  492. case AFE_PORT_ID_QUINARY_MI2S_TX:
  493. return AFE_PORT_ID_QUINARY_MI2S_TX;
  494. case AUDIO_PORT_ID_I2S_RX:
  495. return AUDIO_PORT_ID_I2S_RX;
  496. case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
  497. return AFE_PORT_ID_SECONDARY_MI2S_RX_SD1;
  498. case AFE_PORT_ID_PRIMARY_META_MI2S_RX:
  499. return AFE_PORT_ID_PRIMARY_META_MI2S_RX;
  500. case AFE_PORT_ID_SECONDARY_META_MI2S_RX:
  501. return AFE_PORT_ID_SECONDARY_META_MI2S_RX;
  502. case AFE_PORT_ID_PRIMARY_TDM_RX:
  503. return AFE_PORT_ID_PRIMARY_TDM_RX;
  504. case AFE_PORT_ID_PRIMARY_TDM_TX:
  505. return AFE_PORT_ID_PRIMARY_TDM_TX;
  506. case AFE_PORT_ID_PRIMARY_TDM_RX_1:
  507. return AFE_PORT_ID_PRIMARY_TDM_RX_1;
  508. case AFE_PORT_ID_PRIMARY_TDM_TX_1:
  509. return AFE_PORT_ID_PRIMARY_TDM_TX_1;
  510. case AFE_PORT_ID_PRIMARY_TDM_RX_2:
  511. return AFE_PORT_ID_PRIMARY_TDM_RX_2;
  512. case AFE_PORT_ID_PRIMARY_TDM_TX_2:
  513. return AFE_PORT_ID_PRIMARY_TDM_TX_2;
  514. case AFE_PORT_ID_PRIMARY_TDM_RX_3:
  515. return AFE_PORT_ID_PRIMARY_TDM_RX_3;
  516. case AFE_PORT_ID_PRIMARY_TDM_TX_3:
  517. return AFE_PORT_ID_PRIMARY_TDM_TX_3;
  518. case AFE_PORT_ID_PRIMARY_TDM_RX_4:
  519. return AFE_PORT_ID_PRIMARY_TDM_RX_4;
  520. case AFE_PORT_ID_PRIMARY_TDM_TX_4:
  521. return AFE_PORT_ID_PRIMARY_TDM_TX_4;
  522. case AFE_PORT_ID_PRIMARY_TDM_RX_5:
  523. return AFE_PORT_ID_PRIMARY_TDM_RX_5;
  524. case AFE_PORT_ID_PRIMARY_TDM_TX_5:
  525. return AFE_PORT_ID_PRIMARY_TDM_TX_5;
  526. case AFE_PORT_ID_PRIMARY_TDM_RX_6:
  527. return AFE_PORT_ID_PRIMARY_TDM_RX_6;
  528. case AFE_PORT_ID_PRIMARY_TDM_TX_6:
  529. return AFE_PORT_ID_PRIMARY_TDM_TX_6;
  530. case AFE_PORT_ID_PRIMARY_TDM_RX_7:
  531. return AFE_PORT_ID_PRIMARY_TDM_RX_7;
  532. case AFE_PORT_ID_PRIMARY_TDM_TX_7:
  533. return AFE_PORT_ID_PRIMARY_TDM_TX_7;
  534. case AFE_PORT_ID_SECONDARY_TDM_RX:
  535. return AFE_PORT_ID_SECONDARY_TDM_RX;
  536. case AFE_PORT_ID_SECONDARY_TDM_TX:
  537. return AFE_PORT_ID_SECONDARY_TDM_TX;
  538. case AFE_PORT_ID_SECONDARY_TDM_RX_1:
  539. return AFE_PORT_ID_SECONDARY_TDM_RX_1;
  540. case AFE_PORT_ID_SECONDARY_TDM_TX_1:
  541. return AFE_PORT_ID_SECONDARY_TDM_TX_1;
  542. case AFE_PORT_ID_SECONDARY_TDM_RX_2:
  543. return AFE_PORT_ID_SECONDARY_TDM_RX_2;
  544. case AFE_PORT_ID_SECONDARY_TDM_TX_2:
  545. return AFE_PORT_ID_SECONDARY_TDM_TX_2;
  546. case AFE_PORT_ID_SECONDARY_TDM_RX_3:
  547. return AFE_PORT_ID_SECONDARY_TDM_RX_3;
  548. case AFE_PORT_ID_SECONDARY_TDM_TX_3:
  549. return AFE_PORT_ID_SECONDARY_TDM_TX_3;
  550. case AFE_PORT_ID_SECONDARY_TDM_RX_4:
  551. return AFE_PORT_ID_SECONDARY_TDM_RX_4;
  552. case AFE_PORT_ID_SECONDARY_TDM_TX_4:
  553. return AFE_PORT_ID_SECONDARY_TDM_TX_4;
  554. case AFE_PORT_ID_SECONDARY_TDM_RX_5:
  555. return AFE_PORT_ID_SECONDARY_TDM_RX_5;
  556. case AFE_PORT_ID_SECONDARY_TDM_TX_5:
  557. return AFE_PORT_ID_SECONDARY_TDM_TX_5;
  558. case AFE_PORT_ID_SECONDARY_TDM_RX_6:
  559. return AFE_PORT_ID_SECONDARY_TDM_RX_6;
  560. case AFE_PORT_ID_SECONDARY_TDM_TX_6:
  561. return AFE_PORT_ID_SECONDARY_TDM_TX_6;
  562. case AFE_PORT_ID_SECONDARY_TDM_RX_7:
  563. return AFE_PORT_ID_SECONDARY_TDM_RX_7;
  564. case AFE_PORT_ID_SECONDARY_TDM_TX_7:
  565. return AFE_PORT_ID_SECONDARY_TDM_TX_7;
  566. case AFE_PORT_ID_TERTIARY_TDM_RX:
  567. return AFE_PORT_ID_TERTIARY_TDM_RX;
  568. case AFE_PORT_ID_TERTIARY_TDM_TX:
  569. return AFE_PORT_ID_TERTIARY_TDM_TX;
  570. case AFE_PORT_ID_TERTIARY_TDM_RX_1:
  571. return AFE_PORT_ID_TERTIARY_TDM_RX_1;
  572. case AFE_PORT_ID_TERTIARY_TDM_TX_1:
  573. return AFE_PORT_ID_TERTIARY_TDM_TX_1;
  574. case AFE_PORT_ID_TERTIARY_TDM_RX_2:
  575. return AFE_PORT_ID_TERTIARY_TDM_RX_2;
  576. case AFE_PORT_ID_TERTIARY_TDM_TX_2:
  577. return AFE_PORT_ID_TERTIARY_TDM_TX_2;
  578. case AFE_PORT_ID_TERTIARY_TDM_RX_3:
  579. return AFE_PORT_ID_TERTIARY_TDM_RX_3;
  580. case AFE_PORT_ID_TERTIARY_TDM_TX_3:
  581. return AFE_PORT_ID_TERTIARY_TDM_TX_3;
  582. case AFE_PORT_ID_TERTIARY_TDM_RX_4:
  583. return AFE_PORT_ID_TERTIARY_TDM_RX_4;
  584. case AFE_PORT_ID_TERTIARY_TDM_TX_4:
  585. return AFE_PORT_ID_TERTIARY_TDM_TX_4;
  586. case AFE_PORT_ID_TERTIARY_TDM_RX_5:
  587. return AFE_PORT_ID_TERTIARY_TDM_RX_5;
  588. case AFE_PORT_ID_TERTIARY_TDM_TX_5:
  589. return AFE_PORT_ID_TERTIARY_TDM_TX_5;
  590. case AFE_PORT_ID_TERTIARY_TDM_RX_6:
  591. return AFE_PORT_ID_TERTIARY_TDM_RX_6;
  592. case AFE_PORT_ID_TERTIARY_TDM_TX_6:
  593. return AFE_PORT_ID_TERTIARY_TDM_TX_6;
  594. case AFE_PORT_ID_TERTIARY_TDM_RX_7:
  595. return AFE_PORT_ID_TERTIARY_TDM_RX_7;
  596. case AFE_PORT_ID_TERTIARY_TDM_TX_7:
  597. return AFE_PORT_ID_TERTIARY_TDM_TX_7;
  598. case AFE_PORT_ID_QUATERNARY_TDM_RX:
  599. return AFE_PORT_ID_QUATERNARY_TDM_RX;
  600. case AFE_PORT_ID_QUATERNARY_TDM_TX:
  601. return AFE_PORT_ID_QUATERNARY_TDM_TX;
  602. case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
  603. return AFE_PORT_ID_QUATERNARY_TDM_RX_1;
  604. case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
  605. return AFE_PORT_ID_QUATERNARY_TDM_TX_1;
  606. case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
  607. return AFE_PORT_ID_QUATERNARY_TDM_RX_2;
  608. case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
  609. return AFE_PORT_ID_QUATERNARY_TDM_TX_2;
  610. case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
  611. return AFE_PORT_ID_QUATERNARY_TDM_RX_3;
  612. case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
  613. return AFE_PORT_ID_QUATERNARY_TDM_TX_3;
  614. case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
  615. return AFE_PORT_ID_QUATERNARY_TDM_RX_4;
  616. case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
  617. return AFE_PORT_ID_QUATERNARY_TDM_TX_4;
  618. case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
  619. return AFE_PORT_ID_QUATERNARY_TDM_RX_5;
  620. case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
  621. return AFE_PORT_ID_QUATERNARY_TDM_TX_5;
  622. case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
  623. return AFE_PORT_ID_QUATERNARY_TDM_RX_6;
  624. case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
  625. return AFE_PORT_ID_QUATERNARY_TDM_TX_6;
  626. case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
  627. return AFE_PORT_ID_QUATERNARY_TDM_RX_7;
  628. case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
  629. return AFE_PORT_ID_QUATERNARY_TDM_TX_7;
  630. case AFE_PORT_ID_QUINARY_TDM_RX:
  631. return AFE_PORT_ID_QUINARY_TDM_RX;
  632. case AFE_PORT_ID_QUINARY_TDM_TX:
  633. return AFE_PORT_ID_QUINARY_TDM_TX;
  634. case AFE_PORT_ID_QUINARY_TDM_RX_1:
  635. return AFE_PORT_ID_QUINARY_TDM_RX_1;
  636. case AFE_PORT_ID_QUINARY_TDM_TX_1:
  637. return AFE_PORT_ID_QUINARY_TDM_TX_1;
  638. case AFE_PORT_ID_QUINARY_TDM_RX_2:
  639. return AFE_PORT_ID_QUINARY_TDM_RX_2;
  640. case AFE_PORT_ID_QUINARY_TDM_TX_2:
  641. return AFE_PORT_ID_QUINARY_TDM_TX_2;
  642. case AFE_PORT_ID_QUINARY_TDM_RX_3:
  643. return AFE_PORT_ID_QUINARY_TDM_RX_3;
  644. case AFE_PORT_ID_QUINARY_TDM_TX_3:
  645. return AFE_PORT_ID_QUINARY_TDM_TX_3;
  646. case AFE_PORT_ID_QUINARY_TDM_RX_4:
  647. return AFE_PORT_ID_QUINARY_TDM_RX_4;
  648. case AFE_PORT_ID_QUINARY_TDM_TX_4:
  649. return AFE_PORT_ID_QUINARY_TDM_TX_4;
  650. case AFE_PORT_ID_QUINARY_TDM_RX_5:
  651. return AFE_PORT_ID_QUINARY_TDM_RX_5;
  652. case AFE_PORT_ID_QUINARY_TDM_TX_5:
  653. return AFE_PORT_ID_QUINARY_TDM_TX_5;
  654. case AFE_PORT_ID_QUINARY_TDM_RX_6:
  655. return AFE_PORT_ID_QUINARY_TDM_RX_6;
  656. case AFE_PORT_ID_QUINARY_TDM_TX_6:
  657. return AFE_PORT_ID_QUINARY_TDM_TX_6;
  658. case AFE_PORT_ID_QUINARY_TDM_RX_7:
  659. return AFE_PORT_ID_QUINARY_TDM_RX_7;
  660. case AFE_PORT_ID_QUINARY_TDM_TX_7:
  661. return AFE_PORT_ID_QUINARY_TDM_TX_7;
  662. case AFE_PORT_ID_SENARY_TDM_RX:
  663. return AFE_PORT_ID_SENARY_TDM_RX;
  664. case AFE_PORT_ID_SENARY_TDM_TX:
  665. return AFE_PORT_ID_SENARY_TDM_TX;
  666. case AFE_PORT_ID_SENARY_TDM_RX_1:
  667. return AFE_PORT_ID_SENARY_TDM_RX_1;
  668. case AFE_PORT_ID_SENARY_TDM_TX_1:
  669. return AFE_PORT_ID_SENARY_TDM_TX_1;
  670. case AFE_PORT_ID_SENARY_TDM_RX_2:
  671. return AFE_PORT_ID_SENARY_TDM_RX_2;
  672. case AFE_PORT_ID_SENARY_TDM_TX_2:
  673. return AFE_PORT_ID_SENARY_TDM_TX_2;
  674. case AFE_PORT_ID_SENARY_TDM_RX_3:
  675. return AFE_PORT_ID_SENARY_TDM_RX_3;
  676. case AFE_PORT_ID_SENARY_TDM_TX_3:
  677. return AFE_PORT_ID_SENARY_TDM_TX_3;
  678. case AFE_PORT_ID_SENARY_TDM_RX_4:
  679. return AFE_PORT_ID_SENARY_TDM_RX_4;
  680. case AFE_PORT_ID_SENARY_TDM_TX_4:
  681. return AFE_PORT_ID_SENARY_TDM_TX_4;
  682. case AFE_PORT_ID_SENARY_TDM_RX_5:
  683. return AFE_PORT_ID_SENARY_TDM_RX_5;
  684. case AFE_PORT_ID_SENARY_TDM_TX_5:
  685. return AFE_PORT_ID_SENARY_TDM_TX_5;
  686. case AFE_PORT_ID_SENARY_TDM_RX_6:
  687. return AFE_PORT_ID_SENARY_TDM_RX_6;
  688. case AFE_PORT_ID_SENARY_TDM_TX_6:
  689. return AFE_PORT_ID_SENARY_TDM_TX_6;
  690. case AFE_PORT_ID_SENARY_TDM_RX_7:
  691. return AFE_PORT_ID_SENARY_TDM_RX_7;
  692. case AFE_PORT_ID_SENARY_TDM_TX_7:
  693. return AFE_PORT_ID_SENARY_TDM_TX_7;
  694. case AFE_PORT_ID_SENARY_MI2S_RX:
  695. return AFE_PORT_ID_SENARY_MI2S_RX;
  696. case AFE_PORT_ID_SENARY_MI2S_TX:
  697. return AFE_PORT_ID_SENARY_MI2S_TX;
  698. case AFE_PORT_ID_USB_RX:
  699. return AFE_PORT_ID_USB_RX;
  700. case AFE_PORT_ID_USB_TX:
  701. return AFE_PORT_ID_USB_TX;
  702. case AFE_PORT_ID_INT0_MI2S_RX:
  703. return AFE_PORT_ID_INT0_MI2S_RX;
  704. case AFE_PORT_ID_INT0_MI2S_TX:
  705. return AFE_PORT_ID_INT0_MI2S_TX;
  706. case AFE_PORT_ID_INT1_MI2S_RX:
  707. return AFE_PORT_ID_INT1_MI2S_RX;
  708. case AFE_PORT_ID_INT1_MI2S_TX:
  709. return AFE_PORT_ID_INT1_MI2S_TX;
  710. case AFE_PORT_ID_INT2_MI2S_RX:
  711. return AFE_PORT_ID_INT2_MI2S_RX;
  712. case AFE_PORT_ID_INT2_MI2S_TX:
  713. return AFE_PORT_ID_INT2_MI2S_TX;
  714. case AFE_PORT_ID_INT3_MI2S_RX:
  715. return AFE_PORT_ID_INT3_MI2S_RX;
  716. case AFE_PORT_ID_INT3_MI2S_TX:
  717. return AFE_PORT_ID_INT3_MI2S_TX;
  718. case AFE_PORT_ID_INT4_MI2S_RX:
  719. return AFE_PORT_ID_INT4_MI2S_RX;
  720. case AFE_PORT_ID_INT4_MI2S_TX:
  721. return AFE_PORT_ID_INT4_MI2S_TX;
  722. case AFE_PORT_ID_INT5_MI2S_RX:
  723. return AFE_PORT_ID_INT5_MI2S_RX;
  724. case AFE_PORT_ID_INT5_MI2S_TX:
  725. return AFE_PORT_ID_INT5_MI2S_TX;
  726. case AFE_PORT_ID_INT6_MI2S_RX:
  727. return AFE_PORT_ID_INT6_MI2S_RX;
  728. case AFE_PORT_ID_INT6_MI2S_TX:
  729. return AFE_PORT_ID_INT6_MI2S_TX;
  730. case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
  731. return AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
  732. case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
  733. return AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
  734. case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
  735. return AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
  736. case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
  737. return AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
  738. case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
  739. return AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
  740. case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
  741. return AFE_PORT_ID_VA_CODEC_DMA_TX_0;
  742. case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
  743. return AFE_PORT_ID_VA_CODEC_DMA_TX_1;
  744. case AFE_PORT_ID_VA_CODEC_DMA_TX_2:
  745. return AFE_PORT_ID_VA_CODEC_DMA_TX_2;
  746. case AFE_PORT_ID_RX_CODEC_DMA_RX_0:
  747. return AFE_PORT_ID_RX_CODEC_DMA_RX_0;
  748. case AFE_PORT_ID_TX_CODEC_DMA_TX_0:
  749. return AFE_PORT_ID_TX_CODEC_DMA_TX_0;
  750. case AFE_PORT_ID_RX_CODEC_DMA_RX_1:
  751. return AFE_PORT_ID_RX_CODEC_DMA_RX_1;
  752. case AFE_PORT_ID_TX_CODEC_DMA_TX_1:
  753. return AFE_PORT_ID_TX_CODEC_DMA_TX_1;
  754. case AFE_PORT_ID_RX_CODEC_DMA_RX_2:
  755. return AFE_PORT_ID_RX_CODEC_DMA_RX_2;
  756. case AFE_PORT_ID_TX_CODEC_DMA_TX_2:
  757. return AFE_PORT_ID_TX_CODEC_DMA_TX_2;
  758. case AFE_PORT_ID_RX_CODEC_DMA_RX_3:
  759. return AFE_PORT_ID_RX_CODEC_DMA_RX_3;
  760. case AFE_PORT_ID_TX_CODEC_DMA_TX_3:
  761. return AFE_PORT_ID_TX_CODEC_DMA_TX_3;
  762. case AFE_PORT_ID_RX_CODEC_DMA_RX_4:
  763. return AFE_PORT_ID_RX_CODEC_DMA_RX_4;
  764. case AFE_PORT_ID_TX_CODEC_DMA_TX_4:
  765. return AFE_PORT_ID_TX_CODEC_DMA_TX_4;
  766. case AFE_PORT_ID_RX_CODEC_DMA_RX_5:
  767. return AFE_PORT_ID_RX_CODEC_DMA_RX_5;
  768. case AFE_PORT_ID_TX_CODEC_DMA_TX_5:
  769. return AFE_PORT_ID_TX_CODEC_DMA_TX_5;
  770. case AFE_PORT_ID_RX_CODEC_DMA_RX_6:
  771. return AFE_PORT_ID_RX_CODEC_DMA_RX_6;
  772. case AFE_PORT_ID_RX_CODEC_DMA_RX_7:
  773. return AFE_PORT_ID_RX_CODEC_DMA_RX_7;
  774. case RT_PROXY_PORT_002_RX:
  775. return RT_PROXY_PORT_002_RX;
  776. case RT_PROXY_PORT_002_TX:
  777. return RT_PROXY_PORT_002_TX;
  778. default:
  779. pr_warn("%s: Invalid port_id %d\n", __func__, port_id);
  780. return -EINVAL;
  781. }
  782. }
  783. int q6audio_convert_virtual_to_portid(u16 port_id)
  784. {
  785. int ret;
  786. /* if port_id is virtual, convert to physical..
  787. * if port_id is already physical, return physical
  788. */
  789. if (q6audio_validate_port(port_id) < 0) {
  790. if (port_id == RT_PROXY_DAI_001_RX ||
  791. port_id == RT_PROXY_DAI_001_TX ||
  792. port_id == RT_PROXY_DAI_002_RX ||
  793. port_id == RT_PROXY_DAI_002_TX ||
  794. port_id == RT_PROXY_DAI_003_TX)
  795. ret = VIRTUAL_ID_TO_PORTID(port_id);
  796. else
  797. ret = -EINVAL;
  798. } else
  799. ret = port_id;
  800. return ret;
  801. }
  802. int q6audio_is_digital_pcm_interface(u16 port_id)
  803. {
  804. int ret = 0;
  805. switch (port_id) {
  806. case PRIMARY_I2S_RX:
  807. case PRIMARY_I2S_TX:
  808. case AFE_PORT_ID_PRIMARY_PCM_RX:
  809. case AFE_PORT_ID_PRIMARY_PCM_TX:
  810. case AFE_PORT_ID_SECONDARY_PCM_RX:
  811. case AFE_PORT_ID_SECONDARY_PCM_TX:
  812. case AFE_PORT_ID_TERTIARY_PCM_RX:
  813. case AFE_PORT_ID_TERTIARY_PCM_TX:
  814. case AFE_PORT_ID_QUATERNARY_PCM_RX:
  815. case AFE_PORT_ID_QUATERNARY_PCM_TX:
  816. case AFE_PORT_ID_QUINARY_PCM_RX:
  817. case AFE_PORT_ID_QUINARY_PCM_TX:
  818. case AFE_PORT_ID_SENARY_PCM_RX:
  819. case AFE_PORT_ID_SENARY_PCM_TX:
  820. case SECONDARY_I2S_RX:
  821. case SECONDARY_I2S_TX:
  822. case MI2S_RX:
  823. case MI2S_TX:
  824. case AFE_PORT_ID_TERTIARY_MI2S_TX:
  825. case AFE_PORT_ID_TERTIARY_MI2S_RX:
  826. case AFE_PORT_ID_QUINARY_MI2S_TX:
  827. case AFE_PORT_ID_QUINARY_MI2S_RX:
  828. case AFE_PORT_ID_QUATERNARY_MI2S_RX:
  829. case AFE_PORT_ID_QUATERNARY_MI2S_TX:
  830. case AFE_PORT_ID_PRIMARY_MI2S_RX:
  831. case AFE_PORT_ID_PRIMARY_MI2S_TX:
  832. case AFE_PORT_ID_SECONDARY_MI2S_RX:
  833. case AFE_PORT_ID_SECONDARY_MI2S_TX:
  834. case AUDIO_PORT_ID_I2S_RX:
  835. case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
  836. case AFE_PORT_ID_PRIMARY_META_MI2S_RX:
  837. case AFE_PORT_ID_SECONDARY_META_MI2S_RX:
  838. case AFE_PORT_ID_PRIMARY_TDM_RX:
  839. case AFE_PORT_ID_PRIMARY_TDM_TX:
  840. case AFE_PORT_ID_PRIMARY_TDM_RX_1:
  841. case AFE_PORT_ID_PRIMARY_TDM_TX_1:
  842. case AFE_PORT_ID_PRIMARY_TDM_RX_2:
  843. case AFE_PORT_ID_PRIMARY_TDM_TX_2:
  844. case AFE_PORT_ID_PRIMARY_TDM_RX_3:
  845. case AFE_PORT_ID_PRIMARY_TDM_TX_3:
  846. case AFE_PORT_ID_PRIMARY_TDM_RX_4:
  847. case AFE_PORT_ID_PRIMARY_TDM_TX_4:
  848. case AFE_PORT_ID_PRIMARY_TDM_RX_5:
  849. case AFE_PORT_ID_PRIMARY_TDM_TX_5:
  850. case AFE_PORT_ID_PRIMARY_TDM_RX_6:
  851. case AFE_PORT_ID_PRIMARY_TDM_TX_6:
  852. case AFE_PORT_ID_PRIMARY_TDM_RX_7:
  853. case AFE_PORT_ID_PRIMARY_TDM_TX_7:
  854. case AFE_PORT_ID_SECONDARY_TDM_RX:
  855. case AFE_PORT_ID_SECONDARY_TDM_TX:
  856. case AFE_PORT_ID_SECONDARY_TDM_RX_1:
  857. case AFE_PORT_ID_SECONDARY_TDM_TX_1:
  858. case AFE_PORT_ID_SECONDARY_TDM_RX_2:
  859. case AFE_PORT_ID_SECONDARY_TDM_TX_2:
  860. case AFE_PORT_ID_SECONDARY_TDM_RX_3:
  861. case AFE_PORT_ID_SECONDARY_TDM_TX_3:
  862. case AFE_PORT_ID_SECONDARY_TDM_RX_4:
  863. case AFE_PORT_ID_SECONDARY_TDM_TX_4:
  864. case AFE_PORT_ID_SECONDARY_TDM_RX_5:
  865. case AFE_PORT_ID_SECONDARY_TDM_TX_5:
  866. case AFE_PORT_ID_SECONDARY_TDM_RX_6:
  867. case AFE_PORT_ID_SECONDARY_TDM_TX_6:
  868. case AFE_PORT_ID_SECONDARY_TDM_RX_7:
  869. case AFE_PORT_ID_SECONDARY_TDM_TX_7:
  870. case AFE_PORT_ID_TERTIARY_TDM_RX:
  871. case AFE_PORT_ID_TERTIARY_TDM_TX:
  872. case AFE_PORT_ID_TERTIARY_TDM_RX_1:
  873. case AFE_PORT_ID_TERTIARY_TDM_TX_1:
  874. case AFE_PORT_ID_TERTIARY_TDM_RX_2:
  875. case AFE_PORT_ID_TERTIARY_TDM_TX_2:
  876. case AFE_PORT_ID_TERTIARY_TDM_RX_3:
  877. case AFE_PORT_ID_TERTIARY_TDM_TX_3:
  878. case AFE_PORT_ID_TERTIARY_TDM_RX_4:
  879. case AFE_PORT_ID_TERTIARY_TDM_TX_4:
  880. case AFE_PORT_ID_TERTIARY_TDM_RX_5:
  881. case AFE_PORT_ID_TERTIARY_TDM_TX_5:
  882. case AFE_PORT_ID_TERTIARY_TDM_RX_6:
  883. case AFE_PORT_ID_TERTIARY_TDM_TX_6:
  884. case AFE_PORT_ID_TERTIARY_TDM_RX_7:
  885. case AFE_PORT_ID_TERTIARY_TDM_TX_7:
  886. case AFE_PORT_ID_QUATERNARY_TDM_RX:
  887. case AFE_PORT_ID_QUATERNARY_TDM_TX:
  888. case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
  889. case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
  890. case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
  891. case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
  892. case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
  893. case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
  894. case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
  895. case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
  896. case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
  897. case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
  898. case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
  899. case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
  900. case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
  901. case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
  902. case AFE_PORT_ID_QUINARY_TDM_RX:
  903. case AFE_PORT_ID_QUINARY_TDM_TX:
  904. case AFE_PORT_ID_QUINARY_TDM_RX_1:
  905. case AFE_PORT_ID_QUINARY_TDM_TX_1:
  906. case AFE_PORT_ID_QUINARY_TDM_RX_2:
  907. case AFE_PORT_ID_QUINARY_TDM_TX_2:
  908. case AFE_PORT_ID_QUINARY_TDM_RX_3:
  909. case AFE_PORT_ID_QUINARY_TDM_TX_3:
  910. case AFE_PORT_ID_QUINARY_TDM_RX_4:
  911. case AFE_PORT_ID_QUINARY_TDM_TX_4:
  912. case AFE_PORT_ID_QUINARY_TDM_RX_5:
  913. case AFE_PORT_ID_QUINARY_TDM_TX_5:
  914. case AFE_PORT_ID_QUINARY_TDM_RX_6:
  915. case AFE_PORT_ID_QUINARY_TDM_TX_6:
  916. case AFE_PORT_ID_QUINARY_TDM_RX_7:
  917. case AFE_PORT_ID_QUINARY_TDM_TX_7:
  918. case AFE_PORT_ID_SENARY_TDM_RX:
  919. case AFE_PORT_ID_SENARY_TDM_TX:
  920. case AFE_PORT_ID_SENARY_TDM_RX_1:
  921. case AFE_PORT_ID_SENARY_TDM_TX_1:
  922. case AFE_PORT_ID_SENARY_TDM_RX_2:
  923. case AFE_PORT_ID_SENARY_TDM_TX_2:
  924. case AFE_PORT_ID_SENARY_TDM_RX_3:
  925. case AFE_PORT_ID_SENARY_TDM_TX_3:
  926. case AFE_PORT_ID_SENARY_TDM_RX_4:
  927. case AFE_PORT_ID_SENARY_TDM_TX_4:
  928. case AFE_PORT_ID_SENARY_TDM_RX_5:
  929. case AFE_PORT_ID_SENARY_TDM_TX_5:
  930. case AFE_PORT_ID_SENARY_TDM_RX_6:
  931. case AFE_PORT_ID_SENARY_TDM_TX_6:
  932. case AFE_PORT_ID_SENARY_TDM_RX_7:
  933. case AFE_PORT_ID_SENARY_TDM_TX_7:
  934. case AFE_PORT_ID_SENARY_MI2S_RX:
  935. case AFE_PORT_ID_SENARY_MI2S_TX:
  936. case AFE_PORT_ID_INT0_MI2S_RX:
  937. case AFE_PORT_ID_INT0_MI2S_TX:
  938. case AFE_PORT_ID_INT1_MI2S_RX:
  939. case AFE_PORT_ID_INT1_MI2S_TX:
  940. case AFE_PORT_ID_INT2_MI2S_RX:
  941. case AFE_PORT_ID_INT2_MI2S_TX:
  942. case AFE_PORT_ID_INT3_MI2S_RX:
  943. case AFE_PORT_ID_INT3_MI2S_TX:
  944. case AFE_PORT_ID_INT4_MI2S_RX:
  945. case AFE_PORT_ID_INT4_MI2S_TX:
  946. case AFE_PORT_ID_INT5_MI2S_RX:
  947. case AFE_PORT_ID_INT5_MI2S_TX:
  948. case AFE_PORT_ID_INT6_MI2S_RX:
  949. case AFE_PORT_ID_INT6_MI2S_TX:
  950. case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
  951. case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
  952. case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
  953. case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
  954. case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
  955. case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
  956. case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
  957. case AFE_PORT_ID_VA_CODEC_DMA_TX_2:
  958. case AFE_PORT_ID_RX_CODEC_DMA_RX_0:
  959. case AFE_PORT_ID_TX_CODEC_DMA_TX_0:
  960. case AFE_PORT_ID_RX_CODEC_DMA_RX_1:
  961. case AFE_PORT_ID_TX_CODEC_DMA_TX_1:
  962. case AFE_PORT_ID_RX_CODEC_DMA_RX_2:
  963. case AFE_PORT_ID_TX_CODEC_DMA_TX_2:
  964. case AFE_PORT_ID_RX_CODEC_DMA_RX_3:
  965. case AFE_PORT_ID_TX_CODEC_DMA_TX_3:
  966. case AFE_PORT_ID_RX_CODEC_DMA_RX_4:
  967. case AFE_PORT_ID_TX_CODEC_DMA_TX_4:
  968. case AFE_PORT_ID_RX_CODEC_DMA_RX_5:
  969. case AFE_PORT_ID_TX_CODEC_DMA_TX_5:
  970. case AFE_PORT_ID_RX_CODEC_DMA_RX_6:
  971. case AFE_PORT_ID_RX_CODEC_DMA_RX_7:
  972. case AFE_PORT_ID_PRIMARY_SPDIF_RX:
  973. case AFE_PORT_ID_PRIMARY_SPDIF_TX:
  974. case AFE_PORT_ID_SECONDARY_SPDIF_RX:
  975. case AFE_PORT_ID_SECONDARY_SPDIF_TX:
  976. break;
  977. default:
  978. ret = -EINVAL;
  979. }
  980. return ret;
  981. }
  982. /**
  983. * q6audio_validate_port -
  984. * validates port id
  985. *
  986. * @port_id: port id to validate
  987. *
  988. * Returns 0 on success or error on invalid port
  989. */
  990. int q6audio_validate_port(u16 port_id)
  991. {
  992. int ret;
  993. switch (port_id) {
  994. case PRIMARY_I2S_RX:
  995. case PRIMARY_I2S_TX:
  996. case AFE_PORT_ID_PRIMARY_PCM_RX:
  997. case AFE_PORT_ID_PRIMARY_PCM_TX:
  998. case AFE_PORT_ID_SECONDARY_PCM_RX:
  999. case AFE_PORT_ID_SECONDARY_PCM_TX:
  1000. case AFE_PORT_ID_TERTIARY_PCM_RX:
  1001. case AFE_PORT_ID_TERTIARY_PCM_TX:
  1002. case AFE_PORT_ID_QUATERNARY_PCM_RX:
  1003. case AFE_PORT_ID_QUATERNARY_PCM_TX:
  1004. case AFE_PORT_ID_QUINARY_PCM_RX:
  1005. case AFE_PORT_ID_QUINARY_PCM_TX:
  1006. case AFE_PORT_ID_SENARY_PCM_RX:
  1007. case AFE_PORT_ID_SENARY_PCM_TX:
  1008. case SECONDARY_I2S_RX:
  1009. case SECONDARY_I2S_TX:
  1010. case MI2S_RX:
  1011. case MI2S_TX:
  1012. case HDMI_RX:
  1013. case HDMI_RX_MS:
  1014. case DISPLAY_PORT_RX:
  1015. case RSVD_2:
  1016. case RSVD_3:
  1017. case DIGI_MIC_TX:
  1018. case VOICE_RECORD_RX:
  1019. case VOICE_RECORD_TX:
  1020. case VOICE_PLAYBACK_TX:
  1021. case VOICE2_PLAYBACK_TX:
  1022. case SLIMBUS_0_RX:
  1023. case SLIMBUS_0_TX:
  1024. case SLIMBUS_1_RX:
  1025. case SLIMBUS_1_TX:
  1026. case SLIMBUS_2_RX:
  1027. case SLIMBUS_2_TX:
  1028. case SLIMBUS_3_RX:
  1029. case SLIMBUS_3_TX:
  1030. case SLIMBUS_4_RX:
  1031. case SLIMBUS_4_TX:
  1032. case SLIMBUS_5_RX:
  1033. case SLIMBUS_5_TX:
  1034. case SLIMBUS_6_RX:
  1035. case SLIMBUS_6_TX:
  1036. case SLIMBUS_7_RX:
  1037. case SLIMBUS_7_TX:
  1038. case SLIMBUS_8_RX:
  1039. case SLIMBUS_8_TX:
  1040. case SLIMBUS_9_RX:
  1041. case SLIMBUS_9_TX:
  1042. case INT_BT_SCO_RX:
  1043. case INT_BT_SCO_TX:
  1044. case INT_BT_A2DP_RX:
  1045. case INT_FM_RX:
  1046. case INT_FM_TX:
  1047. case RT_PROXY_PORT_001_RX:
  1048. case RT_PROXY_PORT_001_TX:
  1049. case AFE_PORT_ID_PRIMARY_MI2S_RX:
  1050. case AFE_PORT_ID_PRIMARY_MI2S_TX:
  1051. case AFE_PORT_ID_QUATERNARY_MI2S_RX:
  1052. case AFE_PORT_ID_QUATERNARY_MI2S_TX:
  1053. case AFE_PORT_ID_SECONDARY_MI2S_RX:
  1054. case AFE_PORT_ID_SECONDARY_MI2S_TX:
  1055. case AFE_PORT_ID_PRIMARY_SPDIF_RX:
  1056. case AFE_PORT_ID_PRIMARY_SPDIF_TX:
  1057. case AFE_PORT_ID_SECONDARY_SPDIF_RX:
  1058. case AFE_PORT_ID_SECONDARY_SPDIF_TX:
  1059. case AFE_PORT_ID_TERTIARY_MI2S_RX:
  1060. case AFE_PORT_ID_TERTIARY_MI2S_TX:
  1061. case AFE_PORT_ID_QUINARY_MI2S_RX:
  1062. case AFE_PORT_ID_QUINARY_MI2S_TX:
  1063. case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
  1064. case AFE_PORT_ID_PRIMARY_META_MI2S_RX:
  1065. case AFE_PORT_ID_SECONDARY_META_MI2S_RX:
  1066. case AFE_PORT_ID_PRIMARY_TDM_RX:
  1067. case AFE_PORT_ID_PRIMARY_TDM_TX:
  1068. case AFE_PORT_ID_PRIMARY_TDM_RX_1:
  1069. case AFE_PORT_ID_PRIMARY_TDM_TX_1:
  1070. case AFE_PORT_ID_PRIMARY_TDM_RX_2:
  1071. case AFE_PORT_ID_PRIMARY_TDM_TX_2:
  1072. case AFE_PORT_ID_PRIMARY_TDM_RX_3:
  1073. case AFE_PORT_ID_PRIMARY_TDM_TX_3:
  1074. case AFE_PORT_ID_PRIMARY_TDM_RX_4:
  1075. case AFE_PORT_ID_PRIMARY_TDM_TX_4:
  1076. case AFE_PORT_ID_PRIMARY_TDM_RX_5:
  1077. case AFE_PORT_ID_PRIMARY_TDM_TX_5:
  1078. case AFE_PORT_ID_PRIMARY_TDM_RX_6:
  1079. case AFE_PORT_ID_PRIMARY_TDM_TX_6:
  1080. case AFE_PORT_ID_PRIMARY_TDM_RX_7:
  1081. case AFE_PORT_ID_PRIMARY_TDM_TX_7:
  1082. case AFE_PORT_ID_SECONDARY_TDM_RX:
  1083. case AFE_PORT_ID_SECONDARY_TDM_TX:
  1084. case AFE_PORT_ID_SECONDARY_TDM_RX_1:
  1085. case AFE_PORT_ID_SECONDARY_TDM_TX_1:
  1086. case AFE_PORT_ID_SECONDARY_TDM_RX_2:
  1087. case AFE_PORT_ID_SECONDARY_TDM_TX_2:
  1088. case AFE_PORT_ID_SECONDARY_TDM_RX_3:
  1089. case AFE_PORT_ID_SECONDARY_TDM_TX_3:
  1090. case AFE_PORT_ID_SECONDARY_TDM_RX_4:
  1091. case AFE_PORT_ID_SECONDARY_TDM_TX_4:
  1092. case AFE_PORT_ID_SECONDARY_TDM_RX_5:
  1093. case AFE_PORT_ID_SECONDARY_TDM_TX_5:
  1094. case AFE_PORT_ID_SECONDARY_TDM_RX_6:
  1095. case AFE_PORT_ID_SECONDARY_TDM_TX_6:
  1096. case AFE_PORT_ID_SECONDARY_TDM_RX_7:
  1097. case AFE_PORT_ID_SECONDARY_TDM_TX_7:
  1098. case AFE_PORT_ID_TERTIARY_TDM_RX:
  1099. case AFE_PORT_ID_TERTIARY_TDM_TX:
  1100. case AFE_PORT_ID_TERTIARY_TDM_RX_1:
  1101. case AFE_PORT_ID_TERTIARY_TDM_TX_1:
  1102. case AFE_PORT_ID_TERTIARY_TDM_RX_2:
  1103. case AFE_PORT_ID_TERTIARY_TDM_TX_2:
  1104. case AFE_PORT_ID_TERTIARY_TDM_RX_3:
  1105. case AFE_PORT_ID_TERTIARY_TDM_TX_3:
  1106. case AFE_PORT_ID_TERTIARY_TDM_RX_4:
  1107. case AFE_PORT_ID_TERTIARY_TDM_TX_4:
  1108. case AFE_PORT_ID_TERTIARY_TDM_RX_5:
  1109. case AFE_PORT_ID_TERTIARY_TDM_TX_5:
  1110. case AFE_PORT_ID_TERTIARY_TDM_RX_6:
  1111. case AFE_PORT_ID_TERTIARY_TDM_TX_6:
  1112. case AFE_PORT_ID_TERTIARY_TDM_RX_7:
  1113. case AFE_PORT_ID_TERTIARY_TDM_TX_7:
  1114. case AFE_PORT_ID_QUATERNARY_TDM_RX:
  1115. case AFE_PORT_ID_QUATERNARY_TDM_TX:
  1116. case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
  1117. case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
  1118. case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
  1119. case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
  1120. case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
  1121. case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
  1122. case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
  1123. case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
  1124. case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
  1125. case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
  1126. case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
  1127. case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
  1128. case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
  1129. case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
  1130. case AFE_PORT_ID_QUINARY_TDM_RX:
  1131. case AFE_PORT_ID_QUINARY_TDM_TX:
  1132. case AFE_PORT_ID_QUINARY_TDM_RX_1:
  1133. case AFE_PORT_ID_QUINARY_TDM_TX_1:
  1134. case AFE_PORT_ID_QUINARY_TDM_RX_2:
  1135. case AFE_PORT_ID_QUINARY_TDM_TX_2:
  1136. case AFE_PORT_ID_QUINARY_TDM_RX_3:
  1137. case AFE_PORT_ID_QUINARY_TDM_TX_3:
  1138. case AFE_PORT_ID_QUINARY_TDM_RX_4:
  1139. case AFE_PORT_ID_QUINARY_TDM_TX_4:
  1140. case AFE_PORT_ID_QUINARY_TDM_RX_5:
  1141. case AFE_PORT_ID_QUINARY_TDM_TX_5:
  1142. case AFE_PORT_ID_QUINARY_TDM_RX_6:
  1143. case AFE_PORT_ID_QUINARY_TDM_TX_6:
  1144. case AFE_PORT_ID_QUINARY_TDM_RX_7:
  1145. case AFE_PORT_ID_QUINARY_TDM_TX_7:
  1146. case AFE_PORT_ID_SENARY_TDM_RX:
  1147. case AFE_PORT_ID_SENARY_TDM_TX:
  1148. case AFE_PORT_ID_SENARY_TDM_RX_1:
  1149. case AFE_PORT_ID_SENARY_TDM_TX_1:
  1150. case AFE_PORT_ID_SENARY_TDM_RX_2:
  1151. case AFE_PORT_ID_SENARY_TDM_TX_2:
  1152. case AFE_PORT_ID_SENARY_TDM_RX_3:
  1153. case AFE_PORT_ID_SENARY_TDM_TX_3:
  1154. case AFE_PORT_ID_SENARY_TDM_RX_4:
  1155. case AFE_PORT_ID_SENARY_TDM_TX_4:
  1156. case AFE_PORT_ID_SENARY_TDM_RX_5:
  1157. case AFE_PORT_ID_SENARY_TDM_TX_5:
  1158. case AFE_PORT_ID_SENARY_TDM_RX_6:
  1159. case AFE_PORT_ID_SENARY_TDM_TX_6:
  1160. case AFE_PORT_ID_SENARY_TDM_RX_7:
  1161. case AFE_PORT_ID_SENARY_TDM_TX_7:
  1162. case AFE_PORT_ID_SENARY_MI2S_RX:
  1163. case AFE_PORT_ID_SENARY_MI2S_TX:
  1164. case AFE_PORT_ID_USB_RX:
  1165. case AFE_PORT_ID_USB_TX:
  1166. case AFE_PORT_ID_INT0_MI2S_RX:
  1167. case AFE_PORT_ID_INT0_MI2S_TX:
  1168. case AFE_PORT_ID_INT1_MI2S_RX:
  1169. case AFE_PORT_ID_INT1_MI2S_TX:
  1170. case AFE_PORT_ID_INT2_MI2S_RX:
  1171. case AFE_PORT_ID_INT2_MI2S_TX:
  1172. case AFE_PORT_ID_INT3_MI2S_RX:
  1173. case AFE_PORT_ID_INT3_MI2S_TX:
  1174. case AFE_PORT_ID_INT4_MI2S_RX:
  1175. case AFE_PORT_ID_INT4_MI2S_TX:
  1176. case AFE_PORT_ID_INT5_MI2S_RX:
  1177. case AFE_PORT_ID_INT5_MI2S_TX:
  1178. case AFE_PORT_ID_INT6_MI2S_RX:
  1179. case AFE_PORT_ID_INT6_MI2S_TX:
  1180. case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
  1181. case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
  1182. case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
  1183. case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
  1184. case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
  1185. case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
  1186. case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
  1187. case AFE_PORT_ID_VA_CODEC_DMA_TX_2:
  1188. case AFE_PORT_ID_RX_CODEC_DMA_RX_0:
  1189. case AFE_PORT_ID_TX_CODEC_DMA_TX_0:
  1190. case AFE_PORT_ID_RX_CODEC_DMA_RX_1:
  1191. case AFE_PORT_ID_TX_CODEC_DMA_TX_1:
  1192. case AFE_PORT_ID_RX_CODEC_DMA_RX_2:
  1193. case AFE_PORT_ID_TX_CODEC_DMA_TX_2:
  1194. case AFE_PORT_ID_RX_CODEC_DMA_RX_3:
  1195. case AFE_PORT_ID_TX_CODEC_DMA_TX_3:
  1196. case AFE_PORT_ID_RX_CODEC_DMA_RX_4:
  1197. case AFE_PORT_ID_TX_CODEC_DMA_TX_4:
  1198. case AFE_PORT_ID_RX_CODEC_DMA_RX_5:
  1199. case AFE_PORT_ID_TX_CODEC_DMA_TX_5:
  1200. case AFE_PORT_ID_RX_CODEC_DMA_RX_6:
  1201. case AFE_PORT_ID_RX_CODEC_DMA_RX_7:
  1202. case RT_PROXY_PORT_002_RX:
  1203. case RT_PROXY_PORT_002_TX:
  1204. {
  1205. ret = 0;
  1206. break;
  1207. }
  1208. default:
  1209. ret = -EINVAL;
  1210. }
  1211. return ret;
  1212. }
  1213. EXPORT_SYMBOL(q6audio_validate_port);