msm-dolby-common.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. /*
  2. * Copyright (c) 2013-2014, 2016 The Linux Foundation. All rights reserved.
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 and
  6. * only version 2 as published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. */
  13. #ifndef _MSM_DOLBY_COMMON_H_
  14. #define _MSM_DOLBY_COMMON_H_
  15. #include <sound/soc.h>
  16. #define DOLBY_BUNDLE_MODULE_ID 0x00010723
  17. #define DOLBY_VISUALIZER_MODULE_ID 0x0001072B
  18. #define DOLBY_PARAM_ID_VDHE 0x0001074D
  19. #define DOLBY_PARAM_ID_VSPE 0x00010750
  20. #define DOLBY_PARAM_ID_DSSF 0x00010753
  21. #define DOLBY_PARAM_ID_DVLI 0x0001073E
  22. #define DOLBY_PARAM_ID_DVLO 0x0001073F
  23. #define DOLBY_PARAM_ID_DVLE 0x0001073C
  24. #define DOLBY_PARAM_ID_DVMC 0x00010741
  25. #define DOLBY_PARAM_ID_DVME 0x00010740
  26. #define DOLBY_PARAM_ID_IENB 0x00010744
  27. #define DOLBY_PARAM_ID_IEBF 0x00010745
  28. #define DOLBY_PARAM_ID_IEON 0x00010743
  29. #define DOLBY_PARAM_ID_DEON 0x00010738
  30. #define DOLBY_PARAM_ID_NGON 0x00010736
  31. #define DOLBY_PARAM_ID_GEON 0x00010748
  32. #define DOLBY_PARAM_ID_GENB 0x00010749
  33. #define DOLBY_PARAM_ID_GEBF 0x0001074A
  34. #define DOLBY_PARAM_ID_AONB 0x0001075B
  35. #define DOLBY_PARAM_ID_AOBF 0x0001075C
  36. #define DOLBY_PARAM_ID_AOBG 0x0001075D
  37. #define DOLBY_PARAM_ID_AOON 0x00010759
  38. #define DOLBY_PARAM_ID_ARNB 0x0001075F
  39. #define DOLBY_PARAM_ID_ARBF 0x00010760
  40. #define DOLBY_PARAM_ID_PLB 0x00010768
  41. #define DOLBY_PARAM_ID_PLMD 0x00010767
  42. #define DOLBY_PARAM_ID_DHSB 0x0001074E
  43. #define DOLBY_PARAM_ID_DHRG 0x0001074F
  44. #define DOLBY_PARAM_ID_DSSB 0x00010751
  45. #define DOLBY_PARAM_ID_DSSA 0x00010752
  46. #define DOLBY_PARAM_ID_DVLA 0x0001073D
  47. #define DOLBY_PARAM_ID_IEBT 0x00010746
  48. #define DOLBY_PARAM_ID_IEA 0x0001076A
  49. #define DOLBY_PARAM_ID_DEA 0x00010739
  50. #define DOLBY_PARAM_ID_DED 0x0001073A
  51. #define DOLBY_PARAM_ID_GEBG 0x0001074B
  52. #define DOLBY_PARAM_ID_AOCC 0x0001075A
  53. #define DOLBY_PARAM_ID_ARBI 0x00010761
  54. #define DOLBY_PARAM_ID_ARBL 0x00010762
  55. #define DOLBY_PARAM_ID_ARBH 0x00010763
  56. #define DOLBY_PARAM_ID_AROD 0x00010764
  57. #define DOLBY_PARAM_ID_ARTP 0x00010765
  58. #define DOLBY_PARAM_ID_VMON 0x00010756
  59. #define DOLBY_PARAM_ID_VMB 0x00010757
  60. #define DOLBY_PARAM_ID_VCNB 0x00010733
  61. #define DOLBY_PARAM_ID_VCBF 0x00010734
  62. #define DOLBY_PARAM_ID_PREG 0x00010728
  63. #define DOLBY_PARAM_ID_VEN 0x00010732
  64. #define DOLBY_PARAM_ID_PSTG 0x00010729
  65. #define DOLBY_PARAM_ID_INIT_ENDP 0x00010727
  66. /* Not Used with Set Param kcontrol, only to query using Get Param */
  67. #define DOLBY_PARAM_ID_VER 0x00010726
  68. #define DOLBY_PARAM_ID_VCBG 0x00010730
  69. #define DOLBY_PARAM_ID_VCBE 0x00010731
  70. /* DOLBY DAP control params */
  71. #define DOLBY_COMMIT_ALL_TO_DSP 0x70000001
  72. #define DOLBY_COMMIT_TO_DSP 0x70000002
  73. #define DOLBY_USE_CACHE 0x70000003
  74. #define DOLBY_AUTO_ENDP 0x70000004
  75. #define DOLBY_AUTO_ENDDEP_PARAMS 0x70000005
  76. #define DOLBY_DAP_BYPASS 0x70000006
  77. #define DOLBY_ENABLE_CUSTOM_STEREO 0x000108c7
  78. /* DOLBY DAP offsets start */
  79. #define DOLBY_PARAM_VDHE_LENGTH 1
  80. #define DOLBY_PARAM_VDHE_OFFSET 0
  81. #define DOLBY_PARAM_VSPE_LENGTH 1
  82. #define DOLBY_PARAM_VSPE_OFFSET (DOLBY_PARAM_VDHE_OFFSET + \
  83. DOLBY_PARAM_VDHE_LENGTH)
  84. #define DOLBY_PARAM_DSSF_LENGTH 1
  85. #define DOLBY_PARAM_DSSF_OFFSET (DOLBY_PARAM_VSPE_OFFSET + \
  86. DOLBY_PARAM_VSPE_LENGTH)
  87. #define DOLBY_PARAM_DVLI_LENGTH 1
  88. #define DOLBY_PARAM_DVLI_OFFSET (DOLBY_PARAM_DSSF_OFFSET + \
  89. DOLBY_PARAM_DSSF_LENGTH)
  90. #define DOLBY_PARAM_DVLO_LENGTH 1
  91. #define DOLBY_PARAM_DVLO_OFFSET (DOLBY_PARAM_DVLI_OFFSET + \
  92. DOLBY_PARAM_DVLI_LENGTH)
  93. #define DOLBY_PARAM_DVLE_LENGTH 1
  94. #define DOLBY_PARAM_DVLE_OFFSET (DOLBY_PARAM_DVLO_OFFSET + \
  95. DOLBY_PARAM_DVLO_LENGTH)
  96. #define DOLBY_PARAM_DVMC_LENGTH 1
  97. #define DOLBY_PARAM_DVMC_OFFSET (DOLBY_PARAM_DVLE_OFFSET + \
  98. DOLBY_PARAM_DVLE_LENGTH)
  99. #define DOLBY_PARAM_DVME_LENGTH 1
  100. #define DOLBY_PARAM_DVME_OFFSET (DOLBY_PARAM_DVMC_OFFSET + \
  101. DOLBY_PARAM_DVMC_LENGTH)
  102. #define DOLBY_PARAM_IENB_LENGTH 1
  103. #define DOLBY_PARAM_IENB_OFFSET (DOLBY_PARAM_DVME_OFFSET + \
  104. DOLBY_PARAM_DVME_LENGTH)
  105. #define DOLBY_PARAM_IEBF_LENGTH 40
  106. #define DOLBY_PARAM_IEBF_OFFSET (DOLBY_PARAM_IENB_OFFSET + \
  107. DOLBY_PARAM_IENB_LENGTH)
  108. #define DOLBY_PARAM_IEON_LENGTH 1
  109. #define DOLBY_PARAM_IEON_OFFSET (DOLBY_PARAM_IEBF_OFFSET + \
  110. DOLBY_PARAM_IEBF_LENGTH)
  111. #define DOLBY_PARAM_DEON_LENGTH 1
  112. #define DOLBY_PARAM_DEON_OFFSET (DOLBY_PARAM_IEON_OFFSET + \
  113. DOLBY_PARAM_IEON_LENGTH)
  114. #define DOLBY_PARAM_NGON_LENGTH 1
  115. #define DOLBY_PARAM_NGON_OFFSET (DOLBY_PARAM_DEON_OFFSET + \
  116. DOLBY_PARAM_DEON_LENGTH)
  117. #define DOLBY_PARAM_GEON_LENGTH 1
  118. #define DOLBY_PARAM_GEON_OFFSET (DOLBY_PARAM_NGON_OFFSET + \
  119. DOLBY_PARAM_NGON_LENGTH)
  120. #define DOLBY_PARAM_GENB_LENGTH 1
  121. #define DOLBY_PARAM_GENB_OFFSET (DOLBY_PARAM_GEON_OFFSET + \
  122. DOLBY_PARAM_GEON_LENGTH)
  123. #define DOLBY_PARAM_GEBF_LENGTH 40
  124. #define DOLBY_PARAM_GEBF_OFFSET (DOLBY_PARAM_GENB_OFFSET + \
  125. DOLBY_PARAM_GENB_LENGTH)
  126. #define DOLBY_PARAM_AONB_LENGTH 1
  127. #define DOLBY_PARAM_AONB_OFFSET (DOLBY_PARAM_GEBF_OFFSET + \
  128. DOLBY_PARAM_GEBF_LENGTH)
  129. #define DOLBY_PARAM_AOBF_LENGTH 40
  130. #define DOLBY_PARAM_AOBF_OFFSET (DOLBY_PARAM_AONB_OFFSET + \
  131. DOLBY_PARAM_AONB_LENGTH)
  132. #define DOLBY_PARAM_AOBG_LENGTH 329
  133. #define DOLBY_PARAM_AOBG_OFFSET (DOLBY_PARAM_AOBF_OFFSET + \
  134. DOLBY_PARAM_AOBF_LENGTH)
  135. #define DOLBY_PARAM_AOON_LENGTH 1
  136. #define DOLBY_PARAM_AOON_OFFSET (DOLBY_PARAM_AOBG_OFFSET + \
  137. DOLBY_PARAM_AOBG_LENGTH)
  138. #define DOLBY_PARAM_ARNB_LENGTH 1
  139. #define DOLBY_PARAM_ARNB_OFFSET (DOLBY_PARAM_AOON_OFFSET + \
  140. DOLBY_PARAM_AOON_LENGTH)
  141. #define DOLBY_PARAM_ARBF_LENGTH 40
  142. #define DOLBY_PARAM_ARBF_OFFSET (DOLBY_PARAM_ARNB_OFFSET + \
  143. DOLBY_PARAM_ARNB_LENGTH)
  144. #define DOLBY_PARAM_PLB_LENGTH 1
  145. #define DOLBY_PARAM_PLB_OFFSET (DOLBY_PARAM_ARBF_OFFSET + \
  146. DOLBY_PARAM_ARBF_LENGTH)
  147. #define DOLBY_PARAM_PLMD_LENGTH 1
  148. #define DOLBY_PARAM_PLMD_OFFSET (DOLBY_PARAM_PLB_OFFSET + \
  149. DOLBY_PARAM_PLB_LENGTH)
  150. #define DOLBY_PARAM_DHSB_LENGTH 1
  151. #define DOLBY_PARAM_DHSB_OFFSET (DOLBY_PARAM_PLMD_OFFSET + \
  152. DOLBY_PARAM_PLMD_LENGTH)
  153. #define DOLBY_PARAM_DHRG_LENGTH 1
  154. #define DOLBY_PARAM_DHRG_OFFSET (DOLBY_PARAM_DHSB_OFFSET + \
  155. DOLBY_PARAM_DHSB_LENGTH)
  156. #define DOLBY_PARAM_DSSB_LENGTH 1
  157. #define DOLBY_PARAM_DSSB_OFFSET (DOLBY_PARAM_DHRG_OFFSET + \
  158. DOLBY_PARAM_DHRG_LENGTH)
  159. #define DOLBY_PARAM_DSSA_LENGTH 1
  160. #define DOLBY_PARAM_DSSA_OFFSET (DOLBY_PARAM_DSSB_OFFSET + \
  161. DOLBY_PARAM_DSSB_LENGTH)
  162. #define DOLBY_PARAM_DVLA_LENGTH 1
  163. #define DOLBY_PARAM_DVLA_OFFSET (DOLBY_PARAM_DSSA_OFFSET + \
  164. DOLBY_PARAM_DSSA_LENGTH)
  165. #define DOLBY_PARAM_IEBT_LENGTH 40
  166. #define DOLBY_PARAM_IEBT_OFFSET (DOLBY_PARAM_DVLA_OFFSET + \
  167. DOLBY_PARAM_DVLA_LENGTH)
  168. #define DOLBY_PARAM_IEA_LENGTH 1
  169. #define DOLBY_PARAM_IEA_OFFSET (DOLBY_PARAM_IEBT_OFFSET + \
  170. DOLBY_PARAM_IEBT_LENGTH)
  171. #define DOLBY_PARAM_DEA_LENGTH 1
  172. #define DOLBY_PARAM_DEA_OFFSET (DOLBY_PARAM_IEA_OFFSET + \
  173. DOLBY_PARAM_IEA_LENGTH)
  174. #define DOLBY_PARAM_DED_LENGTH 1
  175. #define DOLBY_PARAM_DED_OFFSET (DOLBY_PARAM_DEA_OFFSET + \
  176. DOLBY_PARAM_DEA_LENGTH)
  177. #define DOLBY_PARAM_GEBG_LENGTH 40
  178. #define DOLBY_PARAM_GEBG_OFFSET (DOLBY_PARAM_DED_OFFSET + \
  179. DOLBY_PARAM_DED_LENGTH)
  180. #define DOLBY_PARAM_AOCC_LENGTH 1
  181. #define DOLBY_PARAM_AOCC_OFFSET (DOLBY_PARAM_GEBG_OFFSET + \
  182. DOLBY_PARAM_GEBG_LENGTH)
  183. #define DOLBY_PARAM_ARBI_LENGTH 40
  184. #define DOLBY_PARAM_ARBI_OFFSET (DOLBY_PARAM_AOCC_OFFSET + \
  185. DOLBY_PARAM_AOCC_LENGTH)
  186. #define DOLBY_PARAM_ARBL_LENGTH 40
  187. #define DOLBY_PARAM_ARBL_OFFSET (DOLBY_PARAM_ARBI_OFFSET + \
  188. DOLBY_PARAM_ARBI_LENGTH)
  189. #define DOLBY_PARAM_ARBH_LENGTH 40
  190. #define DOLBY_PARAM_ARBH_OFFSET (DOLBY_PARAM_ARBL_OFFSET + \
  191. DOLBY_PARAM_ARBL_LENGTH)
  192. #define DOLBY_PARAM_AROD_LENGTH 1
  193. #define DOLBY_PARAM_AROD_OFFSET (DOLBY_PARAM_ARBH_OFFSET + \
  194. DOLBY_PARAM_ARBH_LENGTH)
  195. #define DOLBY_PARAM_ARTP_LENGTH 1
  196. #define DOLBY_PARAM_ARTP_OFFSET (DOLBY_PARAM_AROD_OFFSET + \
  197. DOLBY_PARAM_AROD_LENGTH)
  198. #define DOLBY_PARAM_VMON_LENGTH 1
  199. #define DOLBY_PARAM_VMON_OFFSET (DOLBY_PARAM_ARTP_OFFSET + \
  200. DOLBY_PARAM_ARTP_LENGTH)
  201. #define DOLBY_PARAM_VMB_LENGTH 1
  202. #define DOLBY_PARAM_VMB_OFFSET (DOLBY_PARAM_VMON_OFFSET + \
  203. DOLBY_PARAM_VMON_LENGTH)
  204. #define DOLBY_PARAM_VCNB_LENGTH 1
  205. #define DOLBY_PARAM_VCNB_OFFSET (DOLBY_PARAM_VMB_OFFSET + \
  206. DOLBY_PARAM_VMB_LENGTH)
  207. #define DOLBY_PARAM_VCBF_LENGTH 20
  208. #define DOLBY_PARAM_VCBF_OFFSET (DOLBY_PARAM_VCNB_OFFSET + \
  209. DOLBY_PARAM_VCNB_LENGTH)
  210. #define DOLBY_PARAM_PREG_LENGTH 1
  211. #define DOLBY_PARAM_PREG_OFFSET (DOLBY_PARAM_VCBF_OFFSET + \
  212. DOLBY_PARAM_VCBF_LENGTH)
  213. #define DOLBY_PARAM_VEN_LENGTH 1
  214. #define DOLBY_PARAM_VEN_OFFSET (DOLBY_PARAM_PREG_OFFSET + \
  215. DOLBY_PARAM_PREG_LENGTH)
  216. #define DOLBY_PARAM_PSTG_LENGTH 1
  217. #define DOLBY_PARAM_PSTG_OFFSET (DOLBY_PARAM_VEN_OFFSET + \
  218. DOLBY_PARAM_VEN_LENGTH)
  219. #define DOLBY_PARAM_INT_ENDP_LENGTH 1
  220. #define DOLBY_PARAM_PAYLOAD_SIZE 3
  221. #define DOLBY_MAX_LENGTH_INDIVIDUAL_PARAM 329
  222. #define TOTAL_LENGTH_DOLBY_PARAM 745
  223. #define DOLBY_VIS_PARAM_HEADER_SIZE 25
  224. #define DOLBY_PARAM_VCNB_MAX_LENGTH 40
  225. #define DOLBY_INVALID_PORT_ID -1
  226. enum {
  227. DEVICE_NONE = 0x0,
  228. /* output devices */
  229. EARPIECE = 0x1,
  230. SPEAKER = 0x2,
  231. WIRED_HEADSET = 0x4,
  232. WIRED_HEADPHONE = 0x8,
  233. BLUETOOTH_SCO = 0x10,
  234. BLUETOOTH_SCO_HEADSET = 0x20,
  235. BLUETOOTH_SCO_CARKIT = 0x40,
  236. BLUETOOTH_A2DP = 0x80,
  237. BLUETOOTH_A2DP_HEADPHONES = 0x100,
  238. BLUETOOTH_A2DP_SPEAKER = 0x200,
  239. AUX_DIGITAL = 0x400,
  240. ANLG_DOCK_HEADSET = 0x800,
  241. DGTL_DOCK_HEADSET = 0x1000,
  242. USB_ACCESSORY = 0x2000,
  243. USB_DEVICE = 0x4000,
  244. REMOTE_SUBMIX = 0x8000,
  245. ANC_HEADSET = 0x10000,
  246. ANC_HEADPHONE = 0x20000,
  247. PROXY = 0x2000000,
  248. FM = 0x100000,
  249. FM_TX = 0x1000000,
  250. DEVICE_OUT_DEFAULT = 0x40000000,
  251. DEVICE_OUT_ALL = 0x403FFFFF,
  252. };
  253. #endif