msm-digital-cdc-regmap.c 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. /*
  2. * Copyright (c) 2015-2017, 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. #include <linux/regmap.h>
  14. #include "msm-cdc-common.h"
  15. #include "sdm660-cdc-registers.h"
  16. /*
  17. * Default register reset values that are common across different versions
  18. * are defined here. If a register reset value is changed based on version
  19. * then remove it from this structure and add it in version specific
  20. * structures.
  21. */
  22. struct reg_default
  23. msm89xx_cdc_core_defaults[MSM89XX_CDC_CORE_CACHE_SIZE] = {
  24. {MSM89XX_CDC_CORE_CLK_RX_RESET_CTL, 0x00},
  25. {MSM89XX_CDC_CORE_CLK_TX_RESET_B1_CTL, 0x00},
  26. {MSM89XX_CDC_CORE_CLK_DMIC_B1_CTL, 0x00},
  27. {MSM89XX_CDC_CORE_CLK_RX_I2S_CTL, 0x13},
  28. {MSM89XX_CDC_CORE_CLK_TX_I2S_CTL, 0x13},
  29. {MSM89XX_CDC_CORE_CLK_OTHR_RESET_B1_CTL, 0x00},
  30. {MSM89XX_CDC_CORE_CLK_TX_CLK_EN_B1_CTL, 0x00},
  31. {MSM89XX_CDC_CORE_CLK_OTHR_CTL, 0x04},
  32. {MSM89XX_CDC_CORE_CLK_RX_B1_CTL, 0x00},
  33. {MSM89XX_CDC_CORE_CLK_MCLK_CTL, 0x00},
  34. {MSM89XX_CDC_CORE_CLK_PDM_CTL, 0x00},
  35. {MSM89XX_CDC_CORE_CLK_SD_CTL, 0x00},
  36. {MSM89XX_CDC_CORE_CLK_DMIC_B2_CTL, 0x00},
  37. {MSM89XX_CDC_CORE_CLK_RX_B2_CTL, 0x00},
  38. {MSM89XX_CDC_CORE_CLK_TX2_I2S_CTL, 0x13},
  39. {MSM89XX_CDC_CORE_RX1_B1_CTL, 0x00},
  40. {MSM89XX_CDC_CORE_RX2_B1_CTL, 0x00},
  41. {MSM89XX_CDC_CORE_RX3_B1_CTL, 0x00},
  42. {MSM89XX_CDC_CORE_RX1_B2_CTL, 0x00},
  43. {MSM89XX_CDC_CORE_RX2_B2_CTL, 0x00},
  44. {MSM89XX_CDC_CORE_RX3_B2_CTL, 0x00},
  45. {MSM89XX_CDC_CORE_RX1_B3_CTL, 0x00},
  46. {MSM89XX_CDC_CORE_RX2_B3_CTL, 0x00},
  47. {MSM89XX_CDC_CORE_RX3_B3_CTL, 0x00},
  48. {MSM89XX_CDC_CORE_RX1_B4_CTL, 0x00},
  49. {MSM89XX_CDC_CORE_RX2_B4_CTL, 0x00},
  50. {MSM89XX_CDC_CORE_RX3_B4_CTL, 0x00},
  51. {MSM89XX_CDC_CORE_RX1_B5_CTL, 0x68},
  52. {MSM89XX_CDC_CORE_RX2_B5_CTL, 0x68},
  53. {MSM89XX_CDC_CORE_RX3_B5_CTL, 0x68},
  54. {MSM89XX_CDC_CORE_RX1_B6_CTL, 0x00},
  55. {MSM89XX_CDC_CORE_RX2_B6_CTL, 0x00},
  56. {MSM89XX_CDC_CORE_RX3_B6_CTL, 0x00},
  57. {MSM89XX_CDC_CORE_RX1_VOL_CTL_B1_CTL, 0x00},
  58. {MSM89XX_CDC_CORE_RX2_VOL_CTL_B1_CTL, 0x00},
  59. {MSM89XX_CDC_CORE_RX3_VOL_CTL_B1_CTL, 0x00},
  60. {MSM89XX_CDC_CORE_RX1_VOL_CTL_B2_CTL, 0x00},
  61. {MSM89XX_CDC_CORE_RX2_VOL_CTL_B2_CTL, 0x00},
  62. {MSM89XX_CDC_CORE_RX3_VOL_CTL_B2_CTL, 0x00},
  63. {MSM89XX_CDC_CORE_TOP_GAIN_UPDATE, 0x00},
  64. {MSM89XX_CDC_CORE_TOP_CTL, 0x01},
  65. {MSM89XX_CDC_CORE_COMP0_B1_CTL, 0x30},
  66. {MSM89XX_CDC_CORE_COMP0_B2_CTL, 0xB5},
  67. {MSM89XX_CDC_CORE_COMP0_B3_CTL, 0x28},
  68. {MSM89XX_CDC_CORE_COMP0_B4_CTL, 0x37},
  69. {MSM89XX_CDC_CORE_COMP0_B5_CTL, 0x7F},
  70. {MSM89XX_CDC_CORE_COMP0_B6_CTL, 0x00},
  71. {MSM89XX_CDC_CORE_COMP0_SHUT_DOWN_STATUS, 0x03},
  72. {MSM89XX_CDC_CORE_COMP0_FS_CFG, 0x03},
  73. {MSM89XX_CDC_CORE_COMP0_DELAY_BUF_CTL, 0x02},
  74. {MSM89XX_CDC_CORE_DEBUG_DESER1_CTL, 0x00},
  75. {MSM89XX_CDC_CORE_DEBUG_DESER2_CTL, 0x00},
  76. {MSM89XX_CDC_CORE_DEBUG_B1_CTL_CFG, 0x00},
  77. {MSM89XX_CDC_CORE_DEBUG_B2_CTL_CFG, 0x00},
  78. {MSM89XX_CDC_CORE_DEBUG_B3_CTL_CFG, 0x00},
  79. {MSM89XX_CDC_CORE_IIR1_GAIN_B1_CTL, 0x00},
  80. {MSM89XX_CDC_CORE_IIR2_GAIN_B1_CTL, 0x00},
  81. {MSM89XX_CDC_CORE_IIR1_GAIN_B2_CTL, 0x00},
  82. {MSM89XX_CDC_CORE_IIR2_GAIN_B2_CTL, 0x00},
  83. {MSM89XX_CDC_CORE_IIR1_GAIN_B3_CTL, 0x00},
  84. {MSM89XX_CDC_CORE_IIR2_GAIN_B3_CTL, 0x00},
  85. {MSM89XX_CDC_CORE_IIR1_GAIN_B4_CTL, 0x00},
  86. {MSM89XX_CDC_CORE_IIR2_GAIN_B4_CTL, 0x00},
  87. {MSM89XX_CDC_CORE_IIR1_GAIN_B5_CTL, 0x00},
  88. {MSM89XX_CDC_CORE_IIR2_GAIN_B5_CTL, 0x00},
  89. {MSM89XX_CDC_CORE_IIR1_GAIN_B6_CTL, 0x00},
  90. {MSM89XX_CDC_CORE_IIR2_GAIN_B6_CTL, 0x00},
  91. {MSM89XX_CDC_CORE_IIR1_GAIN_B7_CTL, 0x00},
  92. {MSM89XX_CDC_CORE_IIR2_GAIN_B7_CTL, 0x00},
  93. {MSM89XX_CDC_CORE_IIR1_GAIN_B8_CTL, 0x00},
  94. {MSM89XX_CDC_CORE_IIR2_GAIN_B8_CTL, 0x00},
  95. {MSM89XX_CDC_CORE_IIR1_CTL, 0x40},
  96. {MSM89XX_CDC_CORE_IIR2_CTL, 0x40},
  97. {MSM89XX_CDC_CORE_IIR1_GAIN_TIMER_CTL, 0x00},
  98. {MSM89XX_CDC_CORE_IIR2_GAIN_TIMER_CTL, 0x00},
  99. {MSM89XX_CDC_CORE_IIR1_COEF_B1_CTL, 0x00},
  100. {MSM89XX_CDC_CORE_IIR2_COEF_B1_CTL, 0x00},
  101. {MSM89XX_CDC_CORE_IIR1_COEF_B2_CTL, 0x00},
  102. {MSM89XX_CDC_CORE_IIR2_COEF_B2_CTL, 0x00},
  103. {MSM89XX_CDC_CORE_CONN_RX1_B1_CTL, 0x00},
  104. {MSM89XX_CDC_CORE_CONN_RX1_B2_CTL, 0x00},
  105. {MSM89XX_CDC_CORE_CONN_RX1_B3_CTL, 0x00},
  106. {MSM89XX_CDC_CORE_CONN_RX2_B1_CTL, 0x00},
  107. {MSM89XX_CDC_CORE_CONN_RX2_B2_CTL, 0x00},
  108. {MSM89XX_CDC_CORE_CONN_RX2_B3_CTL, 0x00},
  109. {MSM89XX_CDC_CORE_CONN_RX3_B1_CTL, 0x00},
  110. {MSM89XX_CDC_CORE_CONN_RX3_B2_CTL, 0x00},
  111. {MSM89XX_CDC_CORE_CONN_TX_B1_CTL, 0x00},
  112. {MSM89XX_CDC_CORE_CONN_TX_B2_CTL, 0x00},
  113. {MSM89XX_CDC_CORE_CONN_EQ1_B1_CTL, 0x00},
  114. {MSM89XX_CDC_CORE_CONN_EQ1_B2_CTL, 0x00},
  115. {MSM89XX_CDC_CORE_CONN_EQ1_B3_CTL, 0x00},
  116. {MSM89XX_CDC_CORE_CONN_EQ1_B4_CTL, 0x00},
  117. {MSM89XX_CDC_CORE_CONN_EQ2_B1_CTL, 0x00},
  118. {MSM89XX_CDC_CORE_CONN_EQ2_B2_CTL, 0x00},
  119. {MSM89XX_CDC_CORE_CONN_EQ2_B3_CTL, 0x00},
  120. {MSM89XX_CDC_CORE_CONN_EQ2_B4_CTL, 0x00},
  121. {MSM89XX_CDC_CORE_CONN_TX_I2S_SD1_CTL, 0x00},
  122. {MSM89XX_CDC_CORE_CONN_TX_B3_CTL, 0x00},
  123. {MSM89XX_CDC_CORE_TX5_VOL_CTL_TIMER, 0x00},
  124. {MSM89XX_CDC_CORE_TX5_VOL_CTL_GAIN, 0x00},
  125. {MSM89XX_CDC_CORE_TX5_VOL_CTL_CFG, 0x00},
  126. {MSM89XX_CDC_CORE_TX5_MUX_CTL, 0x00},
  127. {MSM89XX_CDC_CORE_TX5_CLK_FS_CTL, 0x03},
  128. {MSM89XX_CDC_CORE_TX5_DMIC_CTL, 0x00},
  129. {MSM89XX_CDC_CORE_TX1_VOL_CTL_TIMER, 0x00},
  130. {MSM89XX_CDC_CORE_TX2_VOL_CTL_TIMER, 0x00},
  131. {MSM89XX_CDC_CORE_TX3_VOL_CTL_TIMER, 0x00},
  132. {MSM89XX_CDC_CORE_TX4_VOL_CTL_TIMER, 0x00},
  133. {MSM89XX_CDC_CORE_TX1_VOL_CTL_GAIN, 0x00},
  134. {MSM89XX_CDC_CORE_TX2_VOL_CTL_GAIN, 0x00},
  135. {MSM89XX_CDC_CORE_TX3_VOL_CTL_GAIN, 0x00},
  136. {MSM89XX_CDC_CORE_TX4_VOL_CTL_GAIN, 0x00},
  137. {MSM89XX_CDC_CORE_TX1_VOL_CTL_CFG, 0x00},
  138. {MSM89XX_CDC_CORE_TX2_VOL_CTL_CFG, 0x00},
  139. {MSM89XX_CDC_CORE_TX3_VOL_CTL_CFG, 0x00},
  140. {MSM89XX_CDC_CORE_TX4_VOL_CTL_CFG, 0x00},
  141. {MSM89XX_CDC_CORE_TX1_MUX_CTL, 0x00},
  142. {MSM89XX_CDC_CORE_TX2_MUX_CTL, 0x00},
  143. {MSM89XX_CDC_CORE_TX3_MUX_CTL, 0x00},
  144. {MSM89XX_CDC_CORE_TX4_MUX_CTL, 0x00},
  145. {MSM89XX_CDC_CORE_TX1_CLK_FS_CTL, 0x03},
  146. {MSM89XX_CDC_CORE_TX2_CLK_FS_CTL, 0x03},
  147. {MSM89XX_CDC_CORE_TX3_CLK_FS_CTL, 0x03},
  148. {MSM89XX_CDC_CORE_TX4_CLK_FS_CTL, 0x03},
  149. {MSM89XX_CDC_CORE_TX1_DMIC_CTL, 0x00},
  150. {MSM89XX_CDC_CORE_TX2_DMIC_CTL, 0x00},
  151. {MSM89XX_CDC_CORE_TX3_DMIC_CTL, 0x00},
  152. {MSM89XX_CDC_CORE_TX4_DMIC_CTL, 0x00},
  153. };
  154. static const u8 msm89xx_cdc_core_reg_readable[MSM89XX_CDC_CORE_CACHE_SIZE] = {
  155. [MSM89XX_CDC_CORE_CLK_RX_RESET_CTL] = 1,
  156. [MSM89XX_CDC_CORE_CLK_TX_RESET_B1_CTL] = 1,
  157. [MSM89XX_CDC_CORE_CLK_DMIC_B1_CTL] = 1,
  158. [MSM89XX_CDC_CORE_CLK_RX_I2S_CTL] = 1,
  159. [MSM89XX_CDC_CORE_CLK_TX_I2S_CTL] = 1,
  160. [MSM89XX_CDC_CORE_CLK_OTHR_RESET_B1_CTL] = 1,
  161. [MSM89XX_CDC_CORE_CLK_TX_CLK_EN_B1_CTL] = 1,
  162. [MSM89XX_CDC_CORE_CLK_OTHR_CTL] = 1,
  163. [MSM89XX_CDC_CORE_CLK_RX_B1_CTL] = 1,
  164. [MSM89XX_CDC_CORE_CLK_MCLK_CTL] = 1,
  165. [MSM89XX_CDC_CORE_CLK_PDM_CTL] = 1,
  166. [MSM89XX_CDC_CORE_CLK_SD_CTL] = 1,
  167. [MSM89XX_CDC_CORE_CLK_DMIC_B2_CTL] = 1,
  168. [MSM89XX_CDC_CORE_CLK_RX_B2_CTL] = 1,
  169. [MSM89XX_CDC_CORE_CLK_TX2_I2S_CTL] = 1,
  170. [MSM89XX_CDC_CORE_RX1_B1_CTL] = 1,
  171. [MSM89XX_CDC_CORE_RX2_B1_CTL] = 1,
  172. [MSM89XX_CDC_CORE_RX3_B1_CTL] = 1,
  173. [MSM89XX_CDC_CORE_RX1_B2_CTL] = 1,
  174. [MSM89XX_CDC_CORE_RX2_B2_CTL] = 1,
  175. [MSM89XX_CDC_CORE_RX3_B2_CTL] = 1,
  176. [MSM89XX_CDC_CORE_RX1_B3_CTL] = 1,
  177. [MSM89XX_CDC_CORE_RX2_B3_CTL] = 1,
  178. [MSM89XX_CDC_CORE_RX3_B3_CTL] = 1,
  179. [MSM89XX_CDC_CORE_RX1_B4_CTL] = 1,
  180. [MSM89XX_CDC_CORE_RX2_B4_CTL] = 1,
  181. [MSM89XX_CDC_CORE_RX3_B4_CTL] = 1,
  182. [MSM89XX_CDC_CORE_RX1_B5_CTL] = 1,
  183. [MSM89XX_CDC_CORE_RX2_B5_CTL] = 1,
  184. [MSM89XX_CDC_CORE_RX3_B5_CTL] = 1,
  185. [MSM89XX_CDC_CORE_RX1_B6_CTL] = 1,
  186. [MSM89XX_CDC_CORE_RX2_B6_CTL] = 1,
  187. [MSM89XX_CDC_CORE_RX3_B6_CTL] = 1,
  188. [MSM89XX_CDC_CORE_RX1_VOL_CTL_B1_CTL] = 1,
  189. [MSM89XX_CDC_CORE_RX2_VOL_CTL_B1_CTL] = 1,
  190. [MSM89XX_CDC_CORE_RX3_VOL_CTL_B1_CTL] = 1,
  191. [MSM89XX_CDC_CORE_RX1_VOL_CTL_B2_CTL] = 1,
  192. [MSM89XX_CDC_CORE_RX2_VOL_CTL_B2_CTL] = 1,
  193. [MSM89XX_CDC_CORE_RX3_VOL_CTL_B2_CTL] = 1,
  194. [MSM89XX_CDC_CORE_TOP_GAIN_UPDATE] = 1,
  195. [MSM89XX_CDC_CORE_TOP_CTL] = 1,
  196. [MSM89XX_CDC_CORE_COMP0_B1_CTL] = 1,
  197. [MSM89XX_CDC_CORE_COMP0_B2_CTL] = 1,
  198. [MSM89XX_CDC_CORE_COMP0_B3_CTL] = 1,
  199. [MSM89XX_CDC_CORE_COMP0_B4_CTL] = 1,
  200. [MSM89XX_CDC_CORE_COMP0_B5_CTL] = 1,
  201. [MSM89XX_CDC_CORE_COMP0_B6_CTL] = 1,
  202. [MSM89XX_CDC_CORE_COMP0_SHUT_DOWN_STATUS] = 1,
  203. [MSM89XX_CDC_CORE_COMP0_FS_CFG] = 1,
  204. [MSM89XX_CDC_CORE_COMP0_DELAY_BUF_CTL] = 1,
  205. [MSM89XX_CDC_CORE_DEBUG_DESER1_CTL] = 1,
  206. [MSM89XX_CDC_CORE_DEBUG_DESER2_CTL] = 1,
  207. [MSM89XX_CDC_CORE_DEBUG_B1_CTL_CFG] = 1,
  208. [MSM89XX_CDC_CORE_DEBUG_B2_CTL_CFG] = 1,
  209. [MSM89XX_CDC_CORE_DEBUG_B3_CTL_CFG] = 1,
  210. [MSM89XX_CDC_CORE_IIR1_GAIN_B1_CTL] = 1,
  211. [MSM89XX_CDC_CORE_IIR2_GAIN_B1_CTL] = 1,
  212. [MSM89XX_CDC_CORE_IIR1_GAIN_B2_CTL] = 1,
  213. [MSM89XX_CDC_CORE_IIR2_GAIN_B2_CTL] = 1,
  214. [MSM89XX_CDC_CORE_IIR1_GAIN_B3_CTL] = 1,
  215. [MSM89XX_CDC_CORE_IIR2_GAIN_B3_CTL] = 1,
  216. [MSM89XX_CDC_CORE_IIR1_GAIN_B4_CTL] = 1,
  217. [MSM89XX_CDC_CORE_IIR2_GAIN_B4_CTL] = 1,
  218. [MSM89XX_CDC_CORE_IIR1_GAIN_B5_CTL] = 1,
  219. [MSM89XX_CDC_CORE_IIR2_GAIN_B5_CTL] = 1,
  220. [MSM89XX_CDC_CORE_IIR1_GAIN_B6_CTL] = 1,
  221. [MSM89XX_CDC_CORE_IIR2_GAIN_B6_CTL] = 1,
  222. [MSM89XX_CDC_CORE_IIR1_GAIN_B7_CTL] = 1,
  223. [MSM89XX_CDC_CORE_IIR2_GAIN_B7_CTL] = 1,
  224. [MSM89XX_CDC_CORE_IIR1_GAIN_B8_CTL] = 1,
  225. [MSM89XX_CDC_CORE_IIR2_GAIN_B8_CTL] = 1,
  226. [MSM89XX_CDC_CORE_IIR1_CTL] = 1,
  227. [MSM89XX_CDC_CORE_IIR2_CTL] = 1,
  228. [MSM89XX_CDC_CORE_IIR1_GAIN_TIMER_CTL] = 1,
  229. [MSM89XX_CDC_CORE_IIR2_GAIN_TIMER_CTL] = 1,
  230. [MSM89XX_CDC_CORE_IIR1_COEF_B1_CTL] = 1,
  231. [MSM89XX_CDC_CORE_IIR2_COEF_B1_CTL] = 1,
  232. [MSM89XX_CDC_CORE_IIR1_COEF_B2_CTL] = 1,
  233. [MSM89XX_CDC_CORE_IIR2_COEF_B2_CTL] = 1,
  234. [MSM89XX_CDC_CORE_CONN_RX1_B1_CTL] = 1,
  235. [MSM89XX_CDC_CORE_CONN_RX1_B2_CTL] = 1,
  236. [MSM89XX_CDC_CORE_CONN_RX1_B3_CTL] = 1,
  237. [MSM89XX_CDC_CORE_CONN_RX2_B1_CTL] = 1,
  238. [MSM89XX_CDC_CORE_CONN_RX2_B2_CTL] = 1,
  239. [MSM89XX_CDC_CORE_CONN_RX2_B3_CTL] = 1,
  240. [MSM89XX_CDC_CORE_CONN_RX3_B1_CTL] = 1,
  241. [MSM89XX_CDC_CORE_CONN_RX3_B2_CTL] = 1,
  242. [MSM89XX_CDC_CORE_CONN_TX_B1_CTL] = 1,
  243. [MSM89XX_CDC_CORE_CONN_TX_B2_CTL] = 1,
  244. [MSM89XX_CDC_CORE_CONN_EQ1_B1_CTL] = 1,
  245. [MSM89XX_CDC_CORE_CONN_EQ1_B2_CTL] = 1,
  246. [MSM89XX_CDC_CORE_CONN_EQ1_B3_CTL] = 1,
  247. [MSM89XX_CDC_CORE_CONN_EQ1_B4_CTL] = 1,
  248. [MSM89XX_CDC_CORE_CONN_EQ2_B1_CTL] = 1,
  249. [MSM89XX_CDC_CORE_CONN_EQ2_B2_CTL] = 1,
  250. [MSM89XX_CDC_CORE_CONN_EQ2_B3_CTL] = 1,
  251. [MSM89XX_CDC_CORE_CONN_EQ2_B4_CTL] = 1,
  252. [MSM89XX_CDC_CORE_CONN_TX_I2S_SD1_CTL] = 1,
  253. [MSM89XX_CDC_CORE_CONN_TX_B3_CTL] = 1,
  254. [MSM89XX_CDC_CORE_TX1_VOL_CTL_TIMER] = 1,
  255. [MSM89XX_CDC_CORE_TX2_VOL_CTL_TIMER] = 1,
  256. [MSM89XX_CDC_CORE_TX3_VOL_CTL_TIMER] = 1,
  257. [MSM89XX_CDC_CORE_TX4_VOL_CTL_TIMER] = 1,
  258. [MSM89XX_CDC_CORE_TX1_VOL_CTL_GAIN] = 1,
  259. [MSM89XX_CDC_CORE_TX2_VOL_CTL_GAIN] = 1,
  260. [MSM89XX_CDC_CORE_TX3_VOL_CTL_GAIN] = 1,
  261. [MSM89XX_CDC_CORE_TX4_VOL_CTL_GAIN] = 1,
  262. [MSM89XX_CDC_CORE_TX1_VOL_CTL_CFG] = 1,
  263. [MSM89XX_CDC_CORE_TX2_VOL_CTL_CFG] = 1,
  264. [MSM89XX_CDC_CORE_TX3_VOL_CTL_CFG] = 1,
  265. [MSM89XX_CDC_CORE_TX4_VOL_CTL_CFG] = 1,
  266. [MSM89XX_CDC_CORE_TX1_MUX_CTL] = 1,
  267. [MSM89XX_CDC_CORE_TX2_MUX_CTL] = 1,
  268. [MSM89XX_CDC_CORE_TX3_MUX_CTL] = 1,
  269. [MSM89XX_CDC_CORE_TX4_MUX_CTL] = 1,
  270. [MSM89XX_CDC_CORE_TX1_CLK_FS_CTL] = 1,
  271. [MSM89XX_CDC_CORE_TX2_CLK_FS_CTL] = 1,
  272. [MSM89XX_CDC_CORE_TX3_CLK_FS_CTL] = 1,
  273. [MSM89XX_CDC_CORE_TX4_CLK_FS_CTL] = 1,
  274. [MSM89XX_CDC_CORE_TX5_VOL_CTL_TIMER] = 1,
  275. [MSM89XX_CDC_CORE_TX5_VOL_CTL_GAIN] = 1,
  276. [MSM89XX_CDC_CORE_TX5_VOL_CTL_CFG] = 1,
  277. [MSM89XX_CDC_CORE_TX5_MUX_CTL] = 1,
  278. [MSM89XX_CDC_CORE_TX5_CLK_FS_CTL] = 1,
  279. [MSM89XX_CDC_CORE_TX5_DMIC_CTL] = 1,
  280. [MSM89XX_CDC_CORE_TX1_DMIC_CTL] = 1,
  281. [MSM89XX_CDC_CORE_TX2_DMIC_CTL] = 1,
  282. [MSM89XX_CDC_CORE_TX3_DMIC_CTL] = 1,
  283. [MSM89XX_CDC_CORE_TX4_DMIC_CTL] = 1,
  284. };
  285. static const u8 msm89xx_cdc_core_reg_writeable[MSM89XX_CDC_CORE_CACHE_SIZE] = {
  286. [MSM89XX_CDC_CORE_CLK_RX_RESET_CTL] = 1,
  287. [MSM89XX_CDC_CORE_CLK_TX_RESET_B1_CTL] = 1,
  288. [MSM89XX_CDC_CORE_CLK_DMIC_B1_CTL] = 1,
  289. [MSM89XX_CDC_CORE_CLK_RX_I2S_CTL] = 1,
  290. [MSM89XX_CDC_CORE_CLK_TX_I2S_CTL] = 1,
  291. [MSM89XX_CDC_CORE_CLK_OTHR_RESET_B1_CTL] = 1,
  292. [MSM89XX_CDC_CORE_CLK_TX_CLK_EN_B1_CTL] = 1,
  293. [MSM89XX_CDC_CORE_CLK_OTHR_CTL] = 1,
  294. [MSM89XX_CDC_CORE_CLK_RX_B1_CTL] = 1,
  295. [MSM89XX_CDC_CORE_CLK_MCLK_CTL] = 1,
  296. [MSM89XX_CDC_CORE_CLK_PDM_CTL] = 1,
  297. [MSM89XX_CDC_CORE_CLK_SD_CTL] = 1,
  298. [MSM89XX_CDC_CORE_CLK_DMIC_B2_CTL] = 1,
  299. [MSM89XX_CDC_CORE_CLK_RX_B2_CTL] = 1,
  300. [MSM89XX_CDC_CORE_CLK_TX2_I2S_CTL] = 1,
  301. [MSM89XX_CDC_CORE_RX1_B1_CTL] = 1,
  302. [MSM89XX_CDC_CORE_RX2_B1_CTL] = 1,
  303. [MSM89XX_CDC_CORE_RX3_B1_CTL] = 1,
  304. [MSM89XX_CDC_CORE_RX1_B2_CTL] = 1,
  305. [MSM89XX_CDC_CORE_RX2_B2_CTL] = 1,
  306. [MSM89XX_CDC_CORE_RX3_B2_CTL] = 1,
  307. [MSM89XX_CDC_CORE_RX1_B3_CTL] = 1,
  308. [MSM89XX_CDC_CORE_RX2_B3_CTL] = 1,
  309. [MSM89XX_CDC_CORE_RX3_B3_CTL] = 1,
  310. [MSM89XX_CDC_CORE_RX1_B4_CTL] = 1,
  311. [MSM89XX_CDC_CORE_RX2_B4_CTL] = 1,
  312. [MSM89XX_CDC_CORE_RX3_B4_CTL] = 1,
  313. [MSM89XX_CDC_CORE_RX1_B5_CTL] = 1,
  314. [MSM89XX_CDC_CORE_RX2_B5_CTL] = 1,
  315. [MSM89XX_CDC_CORE_RX3_B5_CTL] = 1,
  316. [MSM89XX_CDC_CORE_RX1_B6_CTL] = 1,
  317. [MSM89XX_CDC_CORE_RX2_B6_CTL] = 1,
  318. [MSM89XX_CDC_CORE_RX3_B6_CTL] = 1,
  319. [MSM89XX_CDC_CORE_RX1_VOL_CTL_B1_CTL] = 1,
  320. [MSM89XX_CDC_CORE_RX2_VOL_CTL_B1_CTL] = 1,
  321. [MSM89XX_CDC_CORE_RX3_VOL_CTL_B1_CTL] = 1,
  322. [MSM89XX_CDC_CORE_RX1_VOL_CTL_B2_CTL] = 1,
  323. [MSM89XX_CDC_CORE_RX2_VOL_CTL_B2_CTL] = 1,
  324. [MSM89XX_CDC_CORE_RX3_VOL_CTL_B2_CTL] = 1,
  325. [MSM89XX_CDC_CORE_TOP_GAIN_UPDATE] = 1,
  326. [MSM89XX_CDC_CORE_TOP_CTL] = 1,
  327. [MSM89XX_CDC_CORE_COMP0_B1_CTL] = 1,
  328. [MSM89XX_CDC_CORE_COMP0_B2_CTL] = 1,
  329. [MSM89XX_CDC_CORE_COMP0_B3_CTL] = 1,
  330. [MSM89XX_CDC_CORE_COMP0_B4_CTL] = 1,
  331. [MSM89XX_CDC_CORE_COMP0_B5_CTL] = 1,
  332. [MSM89XX_CDC_CORE_COMP0_B6_CTL] = 1,
  333. [MSM89XX_CDC_CORE_COMP0_FS_CFG] = 1,
  334. [MSM89XX_CDC_CORE_COMP0_DELAY_BUF_CTL] = 1,
  335. [MSM89XX_CDC_CORE_DEBUG_DESER1_CTL] = 1,
  336. [MSM89XX_CDC_CORE_DEBUG_DESER2_CTL] = 1,
  337. [MSM89XX_CDC_CORE_DEBUG_B1_CTL_CFG] = 1,
  338. [MSM89XX_CDC_CORE_DEBUG_B2_CTL_CFG] = 1,
  339. [MSM89XX_CDC_CORE_DEBUG_B3_CTL_CFG] = 1,
  340. [MSM89XX_CDC_CORE_IIR1_GAIN_B1_CTL] = 1,
  341. [MSM89XX_CDC_CORE_IIR2_GAIN_B1_CTL] = 1,
  342. [MSM89XX_CDC_CORE_IIR1_GAIN_B2_CTL] = 1,
  343. [MSM89XX_CDC_CORE_IIR2_GAIN_B2_CTL] = 1,
  344. [MSM89XX_CDC_CORE_IIR1_GAIN_B3_CTL] = 1,
  345. [MSM89XX_CDC_CORE_IIR2_GAIN_B3_CTL] = 1,
  346. [MSM89XX_CDC_CORE_IIR1_GAIN_B4_CTL] = 1,
  347. [MSM89XX_CDC_CORE_IIR2_GAIN_B4_CTL] = 1,
  348. [MSM89XX_CDC_CORE_IIR1_GAIN_B5_CTL] = 1,
  349. [MSM89XX_CDC_CORE_IIR2_GAIN_B5_CTL] = 1,
  350. [MSM89XX_CDC_CORE_IIR1_GAIN_B6_CTL] = 1,
  351. [MSM89XX_CDC_CORE_IIR2_GAIN_B6_CTL] = 1,
  352. [MSM89XX_CDC_CORE_IIR1_GAIN_B7_CTL] = 1,
  353. [MSM89XX_CDC_CORE_IIR2_GAIN_B7_CTL] = 1,
  354. [MSM89XX_CDC_CORE_IIR1_GAIN_B8_CTL] = 1,
  355. [MSM89XX_CDC_CORE_IIR2_GAIN_B8_CTL] = 1,
  356. [MSM89XX_CDC_CORE_IIR1_CTL] = 1,
  357. [MSM89XX_CDC_CORE_IIR2_CTL] = 1,
  358. [MSM89XX_CDC_CORE_IIR1_GAIN_TIMER_CTL] = 1,
  359. [MSM89XX_CDC_CORE_IIR2_GAIN_TIMER_CTL] = 1,
  360. [MSM89XX_CDC_CORE_IIR1_COEF_B1_CTL] = 1,
  361. [MSM89XX_CDC_CORE_IIR2_COEF_B1_CTL] = 1,
  362. [MSM89XX_CDC_CORE_IIR1_COEF_B2_CTL] = 1,
  363. [MSM89XX_CDC_CORE_IIR2_COEF_B2_CTL] = 1,
  364. [MSM89XX_CDC_CORE_CONN_RX1_B1_CTL] = 1,
  365. [MSM89XX_CDC_CORE_CONN_RX1_B2_CTL] = 1,
  366. [MSM89XX_CDC_CORE_CONN_RX1_B3_CTL] = 1,
  367. [MSM89XX_CDC_CORE_CONN_RX2_B1_CTL] = 1,
  368. [MSM89XX_CDC_CORE_CONN_RX2_B2_CTL] = 1,
  369. [MSM89XX_CDC_CORE_CONN_RX2_B3_CTL] = 1,
  370. [MSM89XX_CDC_CORE_CONN_RX3_B1_CTL] = 1,
  371. [MSM89XX_CDC_CORE_CONN_RX3_B2_CTL] = 1,
  372. [MSM89XX_CDC_CORE_CONN_TX_B1_CTL] = 1,
  373. [MSM89XX_CDC_CORE_CONN_TX_B2_CTL] = 1,
  374. [MSM89XX_CDC_CORE_CONN_EQ1_B1_CTL] = 1,
  375. [MSM89XX_CDC_CORE_CONN_EQ1_B2_CTL] = 1,
  376. [MSM89XX_CDC_CORE_CONN_EQ1_B3_CTL] = 1,
  377. [MSM89XX_CDC_CORE_CONN_EQ1_B4_CTL] = 1,
  378. [MSM89XX_CDC_CORE_CONN_EQ2_B1_CTL] = 1,
  379. [MSM89XX_CDC_CORE_CONN_EQ2_B2_CTL] = 1,
  380. [MSM89XX_CDC_CORE_CONN_EQ2_B3_CTL] = 1,
  381. [MSM89XX_CDC_CORE_CONN_EQ2_B4_CTL] = 1,
  382. [MSM89XX_CDC_CORE_CONN_TX_I2S_SD1_CTL] = 1,
  383. [MSM89XX_CDC_CORE_CONN_TX_B3_CTL] = 1,
  384. [MSM89XX_CDC_CORE_TX1_VOL_CTL_TIMER] = 1,
  385. [MSM89XX_CDC_CORE_TX2_VOL_CTL_TIMER] = 1,
  386. [MSM89XX_CDC_CORE_TX3_VOL_CTL_TIMER] = 1,
  387. [MSM89XX_CDC_CORE_TX4_VOL_CTL_TIMER] = 1,
  388. [MSM89XX_CDC_CORE_TX1_VOL_CTL_GAIN] = 1,
  389. [MSM89XX_CDC_CORE_TX2_VOL_CTL_GAIN] = 1,
  390. [MSM89XX_CDC_CORE_TX3_VOL_CTL_GAIN] = 1,
  391. [MSM89XX_CDC_CORE_TX4_VOL_CTL_GAIN] = 1,
  392. [MSM89XX_CDC_CORE_TX1_VOL_CTL_CFG] = 1,
  393. [MSM89XX_CDC_CORE_TX2_VOL_CTL_CFG] = 1,
  394. [MSM89XX_CDC_CORE_TX3_VOL_CTL_CFG] = 1,
  395. [MSM89XX_CDC_CORE_TX4_VOL_CTL_CFG] = 1,
  396. [MSM89XX_CDC_CORE_TX1_MUX_CTL] = 1,
  397. [MSM89XX_CDC_CORE_TX2_MUX_CTL] = 1,
  398. [MSM89XX_CDC_CORE_TX3_MUX_CTL] = 1,
  399. [MSM89XX_CDC_CORE_TX4_MUX_CTL] = 1,
  400. [MSM89XX_CDC_CORE_TX1_CLK_FS_CTL] = 1,
  401. [MSM89XX_CDC_CORE_TX2_CLK_FS_CTL] = 1,
  402. [MSM89XX_CDC_CORE_TX3_CLK_FS_CTL] = 1,
  403. [MSM89XX_CDC_CORE_TX4_CLK_FS_CTL] = 1,
  404. [MSM89XX_CDC_CORE_TX5_VOL_CTL_TIMER] = 1,
  405. [MSM89XX_CDC_CORE_TX5_VOL_CTL_GAIN] = 1,
  406. [MSM89XX_CDC_CORE_TX5_VOL_CTL_CFG] = 1,
  407. [MSM89XX_CDC_CORE_TX5_MUX_CTL] = 1,
  408. [MSM89XX_CDC_CORE_TX5_CLK_FS_CTL] = 1,
  409. [MSM89XX_CDC_CORE_TX5_DMIC_CTL] = 1,
  410. [MSM89XX_CDC_CORE_TX1_DMIC_CTL] = 1,
  411. [MSM89XX_CDC_CORE_TX2_DMIC_CTL] = 1,
  412. [MSM89XX_CDC_CORE_TX3_DMIC_CTL] = 1,
  413. [MSM89XX_CDC_CORE_TX4_DMIC_CTL] = 1,
  414. };
  415. bool msm89xx_cdc_core_readable_reg(struct device *dev, unsigned int reg)
  416. {
  417. return msm89xx_cdc_core_reg_readable[reg];
  418. }
  419. bool msm89xx_cdc_core_writeable_reg(struct device *dev, unsigned int reg)
  420. {
  421. return msm89xx_cdc_core_reg_writeable[reg];
  422. }
  423. bool msm89xx_cdc_core_volatile_reg(struct device *dev, unsigned int reg)
  424. {
  425. switch (reg) {
  426. case MSM89XX_CDC_CORE_RX1_B1_CTL:
  427. case MSM89XX_CDC_CORE_RX2_B1_CTL:
  428. case MSM89XX_CDC_CORE_RX3_B1_CTL:
  429. case MSM89XX_CDC_CORE_RX1_B6_CTL:
  430. case MSM89XX_CDC_CORE_RX2_B6_CTL:
  431. case MSM89XX_CDC_CORE_RX3_B6_CTL:
  432. case MSM89XX_CDC_CORE_TX1_VOL_CTL_CFG:
  433. case MSM89XX_CDC_CORE_TX2_VOL_CTL_CFG:
  434. case MSM89XX_CDC_CORE_TX3_VOL_CTL_CFG:
  435. case MSM89XX_CDC_CORE_TX4_VOL_CTL_CFG:
  436. case MSM89XX_CDC_CORE_TX5_VOL_CTL_CFG:
  437. case MSM89XX_CDC_CORE_IIR1_COEF_B1_CTL:
  438. case MSM89XX_CDC_CORE_IIR2_COEF_B1_CTL:
  439. case MSM89XX_CDC_CORE_CLK_MCLK_CTL:
  440. case MSM89XX_CDC_CORE_CLK_PDM_CTL:
  441. return true;
  442. default:
  443. return false;
  444. }
  445. }