audio.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. /*
  2. * audio.h -- Audio Driver for Wolfson WM8350 PMIC
  3. *
  4. * Copyright 2007 Wolfson Microelectronics PLC
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms of the GNU General Public License as published by the
  8. * Free Software Foundation; either version 2 of the License, or (at your
  9. * option) any later version.
  10. *
  11. */
  12. #ifndef __LINUX_MFD_WM8350_AUDIO_H_
  13. #define __LINUX_MFD_WM8350_AUDIO_H_
  14. #define WM8350_CLOCK_CONTROL_1 0x28
  15. #define WM8350_CLOCK_CONTROL_2 0x29
  16. #define WM8350_FLL_CONTROL_1 0x2A
  17. #define WM8350_FLL_CONTROL_2 0x2B
  18. #define WM8350_FLL_CONTROL_3 0x2C
  19. #define WM8350_FLL_CONTROL_4 0x2D
  20. #define WM8350_DAC_CONTROL 0x30
  21. #define WM8350_DAC_DIGITAL_VOLUME_L 0x32
  22. #define WM8350_DAC_DIGITAL_VOLUME_R 0x33
  23. #define WM8350_DAC_LR_RATE 0x35
  24. #define WM8350_DAC_CLOCK_CONTROL 0x36
  25. #define WM8350_DAC_MUTE 0x3A
  26. #define WM8350_DAC_MUTE_VOLUME 0x3B
  27. #define WM8350_DAC_SIDE 0x3C
  28. #define WM8350_ADC_CONTROL 0x40
  29. #define WM8350_ADC_DIGITAL_VOLUME_L 0x42
  30. #define WM8350_ADC_DIGITAL_VOLUME_R 0x43
  31. #define WM8350_ADC_DIVIDER 0x44
  32. #define WM8350_ADC_LR_RATE 0x46
  33. #define WM8350_INPUT_CONTROL 0x48
  34. #define WM8350_IN3_INPUT_CONTROL 0x49
  35. #define WM8350_MIC_BIAS_CONTROL 0x4A
  36. #define WM8350_OUTPUT_CONTROL 0x4C
  37. #define WM8350_JACK_DETECT 0x4D
  38. #define WM8350_ANTI_POP_CONTROL 0x4E
  39. #define WM8350_LEFT_INPUT_VOLUME 0x50
  40. #define WM8350_RIGHT_INPUT_VOLUME 0x51
  41. #define WM8350_LEFT_MIXER_CONTROL 0x58
  42. #define WM8350_RIGHT_MIXER_CONTROL 0x59
  43. #define WM8350_OUT3_MIXER_CONTROL 0x5C
  44. #define WM8350_OUT4_MIXER_CONTROL 0x5D
  45. #define WM8350_OUTPUT_LEFT_MIXER_VOLUME 0x60
  46. #define WM8350_OUTPUT_RIGHT_MIXER_VOLUME 0x61
  47. #define WM8350_INPUT_MIXER_VOLUME_L 0x62
  48. #define WM8350_INPUT_MIXER_VOLUME_R 0x63
  49. #define WM8350_INPUT_MIXER_VOLUME 0x64
  50. #define WM8350_LOUT1_VOLUME 0x68
  51. #define WM8350_ROUT1_VOLUME 0x69
  52. #define WM8350_LOUT2_VOLUME 0x6A
  53. #define WM8350_ROUT2_VOLUME 0x6B
  54. #define WM8350_BEEP_VOLUME 0x6F
  55. #define WM8350_AI_FORMATING 0x70
  56. #define WM8350_ADC_DAC_COMP 0x71
  57. #define WM8350_AI_ADC_CONTROL 0x72
  58. #define WM8350_AI_DAC_CONTROL 0x73
  59. #define WM8350_AIF_TEST 0x74
  60. #define WM8350_JACK_PIN_STATUS 0xE7
  61. /* Bit values for R08 (0x08) */
  62. #define WM8350_CODEC_ISEL_1_5 0 /* x1.5 */
  63. #define WM8350_CODEC_ISEL_1_0 1 /* x1.0 */
  64. #define WM8350_CODEC_ISEL_0_75 2 /* x0.75 */
  65. #define WM8350_CODEC_ISEL_0_5 3 /* x0.5 */
  66. #define WM8350_VMID_OFF 0
  67. #define WM8350_VMID_500K 1
  68. #define WM8350_VMID_100K 2
  69. #define WM8350_VMID_10K 3
  70. /*
  71. * R40 (0x28) - Clock Control 1
  72. */
  73. #define WM8350_TOCLK_RATE 0x4000
  74. #define WM8350_MCLK_SEL 0x0800
  75. #define WM8350_MCLK_DIV_MASK 0x0100
  76. #define WM8350_BCLK_DIV_MASK 0x00F0
  77. #define WM8350_OPCLK_DIV_MASK 0x0007
  78. /*
  79. * R41 (0x29) - Clock Control 2
  80. */
  81. #define WM8350_LRC_ADC_SEL 0x8000
  82. #define WM8350_MCLK_DIR 0x0001
  83. /*
  84. * R42 (0x2A) - FLL Control 1
  85. */
  86. #define WM8350_FLL_DITHER_WIDTH_MASK 0x3000
  87. #define WM8350_FLL_DITHER_HP 0x0800
  88. #define WM8350_FLL_OUTDIV_MASK 0x0700
  89. #define WM8350_FLL_RSP_RATE_MASK 0x00F0
  90. #define WM8350_FLL_RATE_MASK 0x0007
  91. /*
  92. * R43 (0x2B) - FLL Control 2
  93. */
  94. #define WM8350_FLL_RATIO_MASK 0xF800
  95. #define WM8350_FLL_N_MASK 0x03FF
  96. /*
  97. * R44 (0x2C) - FLL Control 3
  98. */
  99. #define WM8350_FLL_K_MASK 0xFFFF
  100. /*
  101. * R45 (0x2D) - FLL Control 4
  102. */
  103. #define WM8350_FLL_FRAC 0x0020
  104. #define WM8350_FLL_SLOW_LOCK_REF 0x0010
  105. #define WM8350_FLL_CLK_SRC_MASK 0x0003
  106. /*
  107. * R48 (0x30) - DAC Control
  108. */
  109. #define WM8350_DAC_MONO 0x2000
  110. #define WM8350_AIF_LRCLKRATE 0x1000
  111. #define WM8350_DEEMP_MASK 0x0030
  112. #define WM8350_DACL_DATINV 0x0002
  113. #define WM8350_DACR_DATINV 0x0001
  114. /*
  115. * R50 (0x32) - DAC Digital Volume L
  116. */
  117. #define WM8350_DAC_VU 0x0100
  118. #define WM8350_DACL_VOL_MASK 0x00FF
  119. /*
  120. * R51 (0x33) - DAC Digital Volume R
  121. */
  122. #define WM8350_DAC_VU 0x0100
  123. #define WM8350_DACR_VOL_MASK 0x00FF
  124. /*
  125. * R53 (0x35) - DAC LR Rate
  126. */
  127. #define WM8350_DACLRC_ENA 0x0800
  128. #define WM8350_DACLRC_RATE_MASK 0x07FF
  129. /*
  130. * R54 (0x36) - DAC Clock Control
  131. */
  132. #define WM8350_DACCLK_POL 0x0010
  133. #define WM8350_DAC_CLKDIV_MASK 0x0007
  134. /*
  135. * R58 (0x3A) - DAC Mute
  136. */
  137. #define WM8350_DAC_MUTE_ENA 0x4000
  138. /*
  139. * R59 (0x3B) - DAC Mute Volume
  140. */
  141. #define WM8350_DAC_MUTEMODE 0x4000
  142. #define WM8350_DAC_MUTERATE 0x2000
  143. #define WM8350_DAC_SB_FILT 0x1000
  144. /*
  145. * R60 (0x3C) - DAC Side
  146. */
  147. #define WM8350_ADC_TO_DACL_MASK 0x3000
  148. #define WM8350_ADC_TO_DACR_MASK 0x0C00
  149. /*
  150. * R64 (0x40) - ADC Control
  151. */
  152. #define WM8350_ADC_HPF_CUT_MASK 0x0300
  153. #define WM8350_ADCL_DATINV 0x0002
  154. #define WM8350_ADCR_DATINV 0x0001
  155. /*
  156. * R66 (0x42) - ADC Digital Volume L
  157. */
  158. #define WM8350_ADC_VU 0x0100
  159. #define WM8350_ADCL_VOL_MASK 0x00FF
  160. /*
  161. * R67 (0x43) - ADC Digital Volume R
  162. */
  163. #define WM8350_ADC_VU 0x0100
  164. #define WM8350_ADCR_VOL_MASK 0x00FF
  165. /*
  166. * R68 (0x44) - ADC Divider
  167. */
  168. #define WM8350_ADCL_DAC_SVOL_MASK 0x0F00
  169. #define WM8350_ADCR_DAC_SVOL_MASK 0x00F0
  170. #define WM8350_ADCCLK_POL 0x0008
  171. #define WM8350_ADC_CLKDIV_MASK 0x0007
  172. /*
  173. * R70 (0x46) - ADC LR Rate
  174. */
  175. #define WM8350_ADCLRC_ENA 0x0800
  176. #define WM8350_ADCLRC_RATE_MASK 0x07FF
  177. /*
  178. * R72 (0x48) - Input Control
  179. */
  180. #define WM8350_IN2R_ENA 0x0400
  181. #define WM8350_IN1RN_ENA 0x0200
  182. #define WM8350_IN1RP_ENA 0x0100
  183. #define WM8350_IN2L_ENA 0x0004
  184. #define WM8350_IN1LN_ENA 0x0002
  185. #define WM8350_IN1LP_ENA 0x0001
  186. /*
  187. * R73 (0x49) - IN3 Input Control
  188. */
  189. #define WM8350_IN3R_SHORT 0x4000
  190. #define WM8350_IN3L_SHORT 0x0040
  191. /*
  192. * R74 (0x4A) - Mic Bias Control
  193. */
  194. #define WM8350_MICBSEL 0x4000
  195. #define WM8350_MCDTHR_MASK 0x001C
  196. #define WM8350_MCDSCTHR_MASK 0x0003
  197. /*
  198. * R76 (0x4C) - Output Control
  199. */
  200. #define WM8350_OUT4_VROI 0x0800
  201. #define WM8350_OUT3_VROI 0x0400
  202. #define WM8350_OUT2_VROI 0x0200
  203. #define WM8350_OUT1_VROI 0x0100
  204. #define WM8350_OUT2_FB 0x0004
  205. #define WM8350_OUT1_FB 0x0001
  206. /*
  207. * R77 (0x4D) - Jack Detect
  208. */
  209. #define WM8350_JDL_ENA 0x8000
  210. #define WM8350_JDR_ENA 0x4000
  211. /*
  212. * R78 (0x4E) - Anti Pop Control
  213. */
  214. #define WM8350_ANTI_POP_MASK 0x0300
  215. #define WM8350_DIS_OP_LN4_MASK 0x00C0
  216. #define WM8350_DIS_OP_LN3_MASK 0x0030
  217. #define WM8350_DIS_OP_OUT2_MASK 0x000C
  218. #define WM8350_DIS_OP_OUT1_MASK 0x0003
  219. /*
  220. * R80 (0x50) - Left Input Volume
  221. */
  222. #define WM8350_INL_MUTE 0x4000
  223. #define WM8350_INL_ZC 0x2000
  224. #define WM8350_IN_VU 0x0100
  225. #define WM8350_INL_VOL_MASK 0x00FC
  226. /*
  227. * R81 (0x51) - Right Input Volume
  228. */
  229. #define WM8350_INR_MUTE 0x4000
  230. #define WM8350_INR_ZC 0x2000
  231. #define WM8350_IN_VU 0x0100
  232. #define WM8350_INR_VOL_MASK 0x00FC
  233. /*
  234. * R88 (0x58) - Left Mixer Control
  235. */
  236. #define WM8350_DACR_TO_MIXOUTL 0x1000
  237. #define WM8350_DACL_TO_MIXOUTL 0x0800
  238. #define WM8350_IN3L_TO_MIXOUTL 0x0004
  239. #define WM8350_INR_TO_MIXOUTL 0x0002
  240. #define WM8350_INL_TO_MIXOUTL 0x0001
  241. /*
  242. * R89 (0x59) - Right Mixer Control
  243. */
  244. #define WM8350_DACR_TO_MIXOUTR 0x1000
  245. #define WM8350_DACL_TO_MIXOUTR 0x0800
  246. #define WM8350_IN3R_TO_MIXOUTR 0x0008
  247. #define WM8350_INR_TO_MIXOUTR 0x0002
  248. #define WM8350_INL_TO_MIXOUTR 0x0001
  249. /*
  250. * R92 (0x5C) - OUT3 Mixer Control
  251. */
  252. #define WM8350_DACL_TO_OUT3 0x0800
  253. #define WM8350_MIXINL_TO_OUT3 0x0100
  254. #define WM8350_OUT4_TO_OUT3 0x0008
  255. #define WM8350_MIXOUTL_TO_OUT3 0x0001
  256. /*
  257. * R93 (0x5D) - OUT4 Mixer Control
  258. */
  259. #define WM8350_DACR_TO_OUT4 0x1000
  260. #define WM8350_DACL_TO_OUT4 0x0800
  261. #define WM8350_OUT4_ATTN 0x0400
  262. #define WM8350_MIXINR_TO_OUT4 0x0200
  263. #define WM8350_OUT3_TO_OUT4 0x0004
  264. #define WM8350_MIXOUTR_TO_OUT4 0x0002
  265. #define WM8350_MIXOUTL_TO_OUT4 0x0001
  266. /*
  267. * R96 (0x60) - Output Left Mixer Volume
  268. */
  269. #define WM8350_IN3L_MIXOUTL_VOL_MASK 0x0E00
  270. #define WM8350_IN3L_MIXOUTL_VOL_SHIFT 9
  271. #define WM8350_INR_MIXOUTL_VOL_MASK 0x00E0
  272. #define WM8350_INR_MIXOUTL_VOL_SHIFT 5
  273. #define WM8350_INL_MIXOUTL_VOL_MASK 0x000E
  274. #define WM8350_INL_MIXOUTL_VOL_SHIFT 1
  275. /* Bit values for R96 (0x60) */
  276. #define WM8350_IN3L_MIXOUTL_VOL_OFF 0
  277. #define WM8350_IN3L_MIXOUTL_VOL_M12DB 1
  278. #define WM8350_IN3L_MIXOUTL_VOL_M9DB 2
  279. #define WM8350_IN3L_MIXOUTL_VOL_M6DB 3
  280. #define WM8350_IN3L_MIXOUTL_VOL_M3DB 4
  281. #define WM8350_IN3L_MIXOUTL_VOL_0DB 5
  282. #define WM8350_IN3L_MIXOUTL_VOL_3DB 6
  283. #define WM8350_IN3L_MIXOUTL_VOL_6DB 7
  284. #define WM8350_INR_MIXOUTL_VOL_OFF 0
  285. #define WM8350_INR_MIXOUTL_VOL_M12DB 1
  286. #define WM8350_INR_MIXOUTL_VOL_M9DB 2
  287. #define WM8350_INR_MIXOUTL_VOL_M6DB 3
  288. #define WM8350_INR_MIXOUTL_VOL_M3DB 4
  289. #define WM8350_INR_MIXOUTL_VOL_0DB 5
  290. #define WM8350_INR_MIXOUTL_VOL_3DB 6
  291. #define WM8350_INR_MIXOUTL_VOL_6DB 7
  292. #define WM8350_INL_MIXOUTL_VOL_OFF 0
  293. #define WM8350_INL_MIXOUTL_VOL_M12DB 1
  294. #define WM8350_INL_MIXOUTL_VOL_M9DB 2
  295. #define WM8350_INL_MIXOUTL_VOL_M6DB 3
  296. #define WM8350_INL_MIXOUTL_VOL_M3DB 4
  297. #define WM8350_INL_MIXOUTL_VOL_0DB 5
  298. #define WM8350_INL_MIXOUTL_VOL_3DB 6
  299. #define WM8350_INL_MIXOUTL_VOL_6DB 7
  300. /*
  301. * R97 (0x61) - Output Right Mixer Volume
  302. */
  303. #define WM8350_IN3R_MIXOUTR_VOL_MASK 0xE000
  304. #define WM8350_IN3R_MIXOUTR_VOL_SHIFT 13
  305. #define WM8350_INR_MIXOUTR_VOL_MASK 0x00E0
  306. #define WM8350_INR_MIXOUTR_VOL_SHIFT 5
  307. #define WM8350_INL_MIXOUTR_VOL_MASK 0x000E
  308. #define WM8350_INL_MIXOUTR_VOL_SHIFT 1
  309. /* Bit values for R96 (0x60) */
  310. #define WM8350_IN3R_MIXOUTR_VOL_OFF 0
  311. #define WM8350_IN3R_MIXOUTR_VOL_M12DB 1
  312. #define WM8350_IN3R_MIXOUTR_VOL_M9DB 2
  313. #define WM8350_IN3R_MIXOUTR_VOL_M6DB 3
  314. #define WM8350_IN3R_MIXOUTR_VOL_M3DB 4
  315. #define WM8350_IN3R_MIXOUTR_VOL_0DB 5
  316. #define WM8350_IN3R_MIXOUTR_VOL_3DB 6
  317. #define WM8350_IN3R_MIXOUTR_VOL_6DB 7
  318. #define WM8350_INR_MIXOUTR_VOL_OFF 0
  319. #define WM8350_INR_MIXOUTR_VOL_M12DB 1
  320. #define WM8350_INR_MIXOUTR_VOL_M9DB 2
  321. #define WM8350_INR_MIXOUTR_VOL_M6DB 3
  322. #define WM8350_INR_MIXOUTR_VOL_M3DB 4
  323. #define WM8350_INR_MIXOUTR_VOL_0DB 5
  324. #define WM8350_INR_MIXOUTR_VOL_3DB 6
  325. #define WM8350_INR_MIXOUTR_VOL_6DB 7
  326. #define WM8350_INL_MIXOUTR_VOL_OFF 0
  327. #define WM8350_INL_MIXOUTR_VOL_M12DB 1
  328. #define WM8350_INL_MIXOUTR_VOL_M9DB 2
  329. #define WM8350_INL_MIXOUTR_VOL_M6DB 3
  330. #define WM8350_INL_MIXOUTR_VOL_M3DB 4
  331. #define WM8350_INL_MIXOUTR_VOL_0DB 5
  332. #define WM8350_INL_MIXOUTR_VOL_3DB 6
  333. #define WM8350_INL_MIXOUTR_VOL_6DB 7
  334. /*
  335. * R98 (0x62) - Input Mixer Volume L
  336. */
  337. #define WM8350_IN3L_MIXINL_VOL_MASK 0x0E00
  338. #define WM8350_IN2L_MIXINL_VOL_MASK 0x000E
  339. #define WM8350_INL_MIXINL_VOL 0x0001
  340. /*
  341. * R99 (0x63) - Input Mixer Volume R
  342. */
  343. #define WM8350_IN3R_MIXINR_VOL_MASK 0xE000
  344. #define WM8350_IN2R_MIXINR_VOL_MASK 0x00E0
  345. #define WM8350_INR_MIXINR_VOL 0x0001
  346. /*
  347. * R100 (0x64) - Input Mixer Volume
  348. */
  349. #define WM8350_OUT4_MIXIN_DST 0x8000
  350. #define WM8350_OUT4_MIXIN_VOL_MASK 0x000E
  351. /*
  352. * R104 (0x68) - LOUT1 Volume
  353. */
  354. #define WM8350_OUT1L_MUTE 0x4000
  355. #define WM8350_OUT1L_ZC 0x2000
  356. #define WM8350_OUT1_VU 0x0100
  357. #define WM8350_OUT1L_VOL_MASK 0x00FC
  358. #define WM8350_OUT1L_VOL_SHIFT 2
  359. /*
  360. * R105 (0x69) - ROUT1 Volume
  361. */
  362. #define WM8350_OUT1R_MUTE 0x4000
  363. #define WM8350_OUT1R_ZC 0x2000
  364. #define WM8350_OUT1_VU 0x0100
  365. #define WM8350_OUT1R_VOL_MASK 0x00FC
  366. #define WM8350_OUT1R_VOL_SHIFT 2
  367. /*
  368. * R106 (0x6A) - LOUT2 Volume
  369. */
  370. #define WM8350_OUT2L_MUTE 0x4000
  371. #define WM8350_OUT2L_ZC 0x2000
  372. #define WM8350_OUT2_VU 0x0100
  373. #define WM8350_OUT2L_VOL_MASK 0x00FC
  374. /*
  375. * R107 (0x6B) - ROUT2 Volume
  376. */
  377. #define WM8350_OUT2R_MUTE 0x4000
  378. #define WM8350_OUT2R_ZC 0x2000
  379. #define WM8350_OUT2R_INV 0x0400
  380. #define WM8350_OUT2R_INV_MUTE 0x0200
  381. #define WM8350_OUT2_VU 0x0100
  382. #define WM8350_OUT2R_VOL_MASK 0x00FC
  383. /*
  384. * R111 (0x6F) - BEEP Volume
  385. */
  386. #define WM8350_IN3R_OUT2R_VOL_MASK 0x00E0
  387. /*
  388. * R112 (0x70) - AI Formating
  389. */
  390. #define WM8350_AIF_BCLK_INV 0x8000
  391. #define WM8350_AIF_TRI 0x2000
  392. #define WM8350_AIF_LRCLK_INV 0x1000
  393. #define WM8350_AIF_WL_MASK 0x0C00
  394. #define WM8350_AIF_FMT_MASK 0x0300
  395. /*
  396. * R113 (0x71) - ADC DAC COMP
  397. */
  398. #define WM8350_DAC_COMP 0x0080
  399. #define WM8350_DAC_COMPMODE 0x0040
  400. #define WM8350_ADC_COMP 0x0020
  401. #define WM8350_ADC_COMPMODE 0x0010
  402. #define WM8350_LOOPBACK 0x0001
  403. /*
  404. * R114 (0x72) - AI ADC Control
  405. */
  406. #define WM8350_AIFADC_PD 0x0080
  407. #define WM8350_AIFADCL_SRC 0x0040
  408. #define WM8350_AIFADCR_SRC 0x0020
  409. #define WM8350_AIFADC_TDM_CHAN 0x0010
  410. #define WM8350_AIFADC_TDM 0x0008
  411. /*
  412. * R115 (0x73) - AI DAC Control
  413. */
  414. #define WM8350_BCLK_MSTR 0x4000
  415. #define WM8350_AIFDAC_PD 0x0080
  416. #define WM8350_DACL_SRC 0x0040
  417. #define WM8350_DACR_SRC 0x0020
  418. #define WM8350_AIFDAC_TDM_CHAN 0x0010
  419. #define WM8350_AIFDAC_TDM 0x0008
  420. #define WM8350_DAC_BOOST_MASK 0x0003
  421. /*
  422. * R116 (0x74) - AIF Test
  423. */
  424. #define WM8350_CODEC_BYP 0x4000
  425. #define WM8350_AIFADC_WR_TST 0x2000
  426. #define WM8350_AIFADC_RD_TST 0x1000
  427. #define WM8350_AIFDAC_WR_TST 0x0800
  428. #define WM8350_AIFDAC_RD_TST 0x0400
  429. #define WM8350_AIFADC_ASYN 0x0020
  430. #define WM8350_AIFDAC_ASYN 0x0010
  431. /*
  432. * R231 (0xE7) - Jack Status
  433. */
  434. #define WM8350_JACK_R_LVL 0x0400
  435. /*
  436. * WM8350 Platform setup
  437. */
  438. #define WM8350_S_CURVE_NONE 0x0
  439. #define WM8350_S_CURVE_FAST 0x1
  440. #define WM8350_S_CURVE_MEDIUM 0x2
  441. #define WM8350_S_CURVE_SLOW 0x3
  442. #define WM8350_DISCHARGE_OFF 0x0
  443. #define WM8350_DISCHARGE_FAST 0x1
  444. #define WM8350_DISCHARGE_MEDIUM 0x2
  445. #define WM8350_DISCHARGE_SLOW 0x3
  446. #define WM8350_TIE_OFF_500R 0x0
  447. #define WM8350_TIE_OFF_30K 0x1
  448. /*
  449. * Clock sources & directions
  450. */
  451. #define WM8350_SYSCLK 0
  452. #define WM8350_MCLK_SEL_PLL_MCLK 0
  453. #define WM8350_MCLK_SEL_PLL_DAC 1
  454. #define WM8350_MCLK_SEL_PLL_ADC 2
  455. #define WM8350_MCLK_SEL_PLL_32K 3
  456. #define WM8350_MCLK_SEL_MCLK 5
  457. #define WM8350_MCLK_DIR_OUT 0
  458. #define WM8350_MCLK_DIR_IN 1
  459. /* clock divider id's */
  460. #define WM8350_ADC_CLKDIV 0
  461. #define WM8350_DAC_CLKDIV 1
  462. #define WM8350_BCLK_CLKDIV 2
  463. #define WM8350_OPCLK_CLKDIV 3
  464. #define WM8350_TO_CLKDIV 4
  465. #define WM8350_SYS_CLKDIV 5
  466. #define WM8350_DACLR_CLKDIV 6
  467. #define WM8350_ADCLR_CLKDIV 7
  468. /* ADC clock dividers */
  469. #define WM8350_ADCDIV_1 0x0
  470. #define WM8350_ADCDIV_1_5 0x1
  471. #define WM8350_ADCDIV_2 0x2
  472. #define WM8350_ADCDIV_3 0x3
  473. #define WM8350_ADCDIV_4 0x4
  474. #define WM8350_ADCDIV_5_5 0x5
  475. #define WM8350_ADCDIV_6 0x6
  476. /* ADC clock dividers */
  477. #define WM8350_DACDIV_1 0x0
  478. #define WM8350_DACDIV_1_5 0x1
  479. #define WM8350_DACDIV_2 0x2
  480. #define WM8350_DACDIV_3 0x3
  481. #define WM8350_DACDIV_4 0x4
  482. #define WM8350_DACDIV_5_5 0x5
  483. #define WM8350_DACDIV_6 0x6
  484. /* BCLK clock dividers */
  485. #define WM8350_BCLK_DIV_1 (0x0 << 4)
  486. #define WM8350_BCLK_DIV_1_5 (0x1 << 4)
  487. #define WM8350_BCLK_DIV_2 (0x2 << 4)
  488. #define WM8350_BCLK_DIV_3 (0x3 << 4)
  489. #define WM8350_BCLK_DIV_4 (0x4 << 4)
  490. #define WM8350_BCLK_DIV_5_5 (0x5 << 4)
  491. #define WM8350_BCLK_DIV_6 (0x6 << 4)
  492. #define WM8350_BCLK_DIV_8 (0x7 << 4)
  493. #define WM8350_BCLK_DIV_11 (0x8 << 4)
  494. #define WM8350_BCLK_DIV_12 (0x9 << 4)
  495. #define WM8350_BCLK_DIV_16 (0xa << 4)
  496. #define WM8350_BCLK_DIV_22 (0xb << 4)
  497. #define WM8350_BCLK_DIV_24 (0xc << 4)
  498. #define WM8350_BCLK_DIV_32 (0xd << 4)
  499. #define WM8350_BCLK_DIV_44 (0xe << 4)
  500. #define WM8350_BCLK_DIV_48 (0xf << 4)
  501. /* Sys (MCLK) clock dividers */
  502. #define WM8350_MCLK_DIV_1 (0x0 << 8)
  503. #define WM8350_MCLK_DIV_2 (0x1 << 8)
  504. /* OP clock dividers */
  505. #define WM8350_OPCLK_DIV_1 0x0
  506. #define WM8350_OPCLK_DIV_2 0x1
  507. #define WM8350_OPCLK_DIV_3 0x2
  508. #define WM8350_OPCLK_DIV_4 0x3
  509. #define WM8350_OPCLK_DIV_5_5 0x4
  510. #define WM8350_OPCLK_DIV_6 0x5
  511. /* DAI ID */
  512. #define WM8350_HIFI_DAI 0
  513. /*
  514. * Audio interrupts.
  515. */
  516. #define WM8350_IRQ_CODEC_JCK_DET_L 39
  517. #define WM8350_IRQ_CODEC_JCK_DET_R 40
  518. #define WM8350_IRQ_CODEC_MICSCD 41
  519. #define WM8350_IRQ_CODEC_MICD 42
  520. #endif