/sound/soc/codecs/wm8993.h

https://bitbucket.org/abioy/linux · C Header · 2132 lines · 1679 code · 117 blank · 336 comment · 0 complexity · 85b03b72ff5d45cad62c6207675a35c0 MD5 · raw file

Large files are truncated click here to view the full file

  1. #ifndef WM8993_H
  2. #define WM8993_H
  3. extern struct snd_soc_dai wm8993_dai;
  4. extern struct snd_soc_codec_device soc_codec_dev_wm8993;
  5. #define WM8993_SYSCLK_MCLK 1
  6. #define WM8993_SYSCLK_FLL 2
  7. #define WM8993_FLL_MCLK 1
  8. #define WM8993_FLL_BCLK 2
  9. #define WM8993_FLL_LRCLK 3
  10. /*
  11. * Register values.
  12. */
  13. #define WM8993_SOFTWARE_RESET 0x00
  14. #define WM8993_POWER_MANAGEMENT_1 0x01
  15. #define WM8993_POWER_MANAGEMENT_2 0x02
  16. #define WM8993_POWER_MANAGEMENT_3 0x03
  17. #define WM8993_AUDIO_INTERFACE_1 0x04
  18. #define WM8993_AUDIO_INTERFACE_2 0x05
  19. #define WM8993_CLOCKING_1 0x06
  20. #define WM8993_CLOCKING_2 0x07
  21. #define WM8993_AUDIO_INTERFACE_3 0x08
  22. #define WM8993_AUDIO_INTERFACE_4 0x09
  23. #define WM8993_DAC_CTRL 0x0A
  24. #define WM8993_LEFT_DAC_DIGITAL_VOLUME 0x0B
  25. #define WM8993_RIGHT_DAC_DIGITAL_VOLUME 0x0C
  26. #define WM8993_DIGITAL_SIDE_TONE 0x0D
  27. #define WM8993_ADC_CTRL 0x0E
  28. #define WM8993_LEFT_ADC_DIGITAL_VOLUME 0x0F
  29. #define WM8993_RIGHT_ADC_DIGITAL_VOLUME 0x10
  30. #define WM8993_GPIO_CTRL_1 0x12
  31. #define WM8993_GPIO1 0x13
  32. #define WM8993_IRQ_DEBOUNCE 0x14
  33. #define WM8993_GPIOCTRL_2 0x16
  34. #define WM8993_GPIO_POL 0x17
  35. #define WM8993_LEFT_LINE_INPUT_1_2_VOLUME 0x18
  36. #define WM8993_LEFT_LINE_INPUT_3_4_VOLUME 0x19
  37. #define WM8993_RIGHT_LINE_INPUT_1_2_VOLUME 0x1A
  38. #define WM8993_RIGHT_LINE_INPUT_3_4_VOLUME 0x1B
  39. #define WM8993_LEFT_OUTPUT_VOLUME 0x1C
  40. #define WM8993_RIGHT_OUTPUT_VOLUME 0x1D
  41. #define WM8993_LINE_OUTPUTS_VOLUME 0x1E
  42. #define WM8993_HPOUT2_VOLUME 0x1F
  43. #define WM8993_LEFT_OPGA_VOLUME 0x20
  44. #define WM8993_RIGHT_OPGA_VOLUME 0x21
  45. #define WM8993_SPKMIXL_ATTENUATION 0x22
  46. #define WM8993_SPKMIXR_ATTENUATION 0x23
  47. #define WM8993_SPKOUT_MIXERS 0x24
  48. #define WM8993_SPKOUT_BOOST 0x25
  49. #define WM8993_SPEAKER_VOLUME_LEFT 0x26
  50. #define WM8993_SPEAKER_VOLUME_RIGHT 0x27
  51. #define WM8993_INPUT_MIXER2 0x28
  52. #define WM8993_INPUT_MIXER3 0x29
  53. #define WM8993_INPUT_MIXER4 0x2A
  54. #define WM8993_INPUT_MIXER5 0x2B
  55. #define WM8993_INPUT_MIXER6 0x2C
  56. #define WM8993_OUTPUT_MIXER1 0x2D
  57. #define WM8993_OUTPUT_MIXER2 0x2E
  58. #define WM8993_OUTPUT_MIXER3 0x2F
  59. #define WM8993_OUTPUT_MIXER4 0x30
  60. #define WM8993_OUTPUT_MIXER5 0x31
  61. #define WM8993_OUTPUT_MIXER6 0x32
  62. #define WM8993_HPOUT2_MIXER 0x33
  63. #define WM8993_LINE_MIXER1 0x34
  64. #define WM8993_LINE_MIXER2 0x35
  65. #define WM8993_SPEAKER_MIXER 0x36
  66. #define WM8993_ADDITIONAL_CONTROL 0x37
  67. #define WM8993_ANTIPOP1 0x38
  68. #define WM8993_ANTIPOP2 0x39
  69. #define WM8993_MICBIAS 0x3A
  70. #define WM8993_FLL_CONTROL_1 0x3C
  71. #define WM8993_FLL_CONTROL_2 0x3D
  72. #define WM8993_FLL_CONTROL_3 0x3E
  73. #define WM8993_FLL_CONTROL_4 0x3F
  74. #define WM8993_FLL_CONTROL_5 0x40
  75. #define WM8993_CLOCKING_3 0x41
  76. #define WM8993_CLOCKING_4 0x42
  77. #define WM8993_MW_SLAVE_CONTROL 0x43
  78. #define WM8993_BUS_CONTROL_1 0x45
  79. #define WM8993_WRITE_SEQUENCER_0 0x46
  80. #define WM8993_WRITE_SEQUENCER_1 0x47
  81. #define WM8993_WRITE_SEQUENCER_2 0x48
  82. #define WM8993_WRITE_SEQUENCER_3 0x49
  83. #define WM8993_WRITE_SEQUENCER_4 0x4A
  84. #define WM8993_WRITE_SEQUENCER_5 0x4B
  85. #define WM8993_CHARGE_PUMP_1 0x4C
  86. #define WM8993_CLASS_W_0 0x51
  87. #define WM8993_DC_SERVO_0 0x54
  88. #define WM8993_DC_SERVO_1 0x55
  89. #define WM8993_DC_SERVO_3 0x57
  90. #define WM8993_DC_SERVO_READBACK_0 0x58
  91. #define WM8993_DC_SERVO_READBACK_1 0x59
  92. #define WM8993_DC_SERVO_READBACK_2 0x5A
  93. #define WM8993_ANALOGUE_HP_0 0x60
  94. #define WM8993_EQ1 0x62
  95. #define WM8993_EQ2 0x63
  96. #define WM8993_EQ3 0x64
  97. #define WM8993_EQ4 0x65
  98. #define WM8993_EQ5 0x66
  99. #define WM8993_EQ6 0x67
  100. #define WM8993_EQ7 0x68
  101. #define WM8993_EQ8 0x69
  102. #define WM8993_EQ9 0x6A
  103. #define WM8993_EQ10 0x6B
  104. #define WM8993_EQ11 0x6C
  105. #define WM8993_EQ12 0x6D
  106. #define WM8993_EQ13 0x6E
  107. #define WM8993_EQ14 0x6F
  108. #define WM8993_EQ15 0x70
  109. #define WM8993_EQ16 0x71
  110. #define WM8993_EQ17 0x72
  111. #define WM8993_EQ18 0x73
  112. #define WM8993_EQ19 0x74
  113. #define WM8993_EQ20 0x75
  114. #define WM8993_EQ21 0x76
  115. #define WM8993_EQ22 0x77
  116. #define WM8993_EQ23 0x78
  117. #define WM8993_EQ24 0x79
  118. #define WM8993_DIGITAL_PULLS 0x7A
  119. #define WM8993_DRC_CONTROL_1 0x7B
  120. #define WM8993_DRC_CONTROL_2 0x7C
  121. #define WM8993_DRC_CONTROL_3 0x7D
  122. #define WM8993_DRC_CONTROL_4 0x7E
  123. #define WM8993_REGISTER_COUNT 0x7F
  124. #define WM8993_MAX_REGISTER 0x7E
  125. /*
  126. * Field Definitions.
  127. */
  128. /*
  129. * R0 (0x00) - Software Reset
  130. */
  131. #define WM8993_SW_RESET_MASK 0xFFFF /* SW_RESET - [15:0] */
  132. #define WM8993_SW_RESET_SHIFT 0 /* SW_RESET - [15:0] */
  133. #define WM8993_SW_RESET_WIDTH 16 /* SW_RESET - [15:0] */
  134. /*
  135. * R1 (0x01) - Power Management (1)
  136. */
  137. #define WM8993_SPKOUTR_ENA 0x2000 /* SPKOUTR_ENA */
  138. #define WM8993_SPKOUTR_ENA_MASK 0x2000 /* SPKOUTR_ENA */
  139. #define WM8993_SPKOUTR_ENA_SHIFT 13 /* SPKOUTR_ENA */
  140. #define WM8993_SPKOUTR_ENA_WIDTH 1 /* SPKOUTR_ENA */
  141. #define WM8993_SPKOUTL_ENA 0x1000 /* SPKOUTL_ENA */
  142. #define WM8993_SPKOUTL_ENA_MASK 0x1000 /* SPKOUTL_ENA */
  143. #define WM8993_SPKOUTL_ENA_SHIFT 12 /* SPKOUTL_ENA */
  144. #define WM8993_SPKOUTL_ENA_WIDTH 1 /* SPKOUTL_ENA */
  145. #define WM8993_HPOUT2_ENA 0x0800 /* HPOUT2_ENA */
  146. #define WM8993_HPOUT2_ENA_MASK 0x0800 /* HPOUT2_ENA */
  147. #define WM8993_HPOUT2_ENA_SHIFT 11 /* HPOUT2_ENA */
  148. #define WM8993_HPOUT2_ENA_WIDTH 1 /* HPOUT2_ENA */
  149. #define WM8993_HPOUT1L_ENA 0x0200 /* HPOUT1L_ENA */
  150. #define WM8993_HPOUT1L_ENA_MASK 0x0200 /* HPOUT1L_ENA */
  151. #define WM8993_HPOUT1L_ENA_SHIFT 9 /* HPOUT1L_ENA */
  152. #define WM8993_HPOUT1L_ENA_WIDTH 1 /* HPOUT1L_ENA */
  153. #define WM8993_HPOUT1R_ENA 0x0100 /* HPOUT1R_ENA */
  154. #define WM8993_HPOUT1R_ENA_MASK 0x0100 /* HPOUT1R_ENA */
  155. #define WM8993_HPOUT1R_ENA_SHIFT 8 /* HPOUT1R_ENA */
  156. #define WM8993_HPOUT1R_ENA_WIDTH 1 /* HPOUT1R_ENA */
  157. #define WM8993_MICB2_ENA 0x0020 /* MICB2_ENA */
  158. #define WM8993_MICB2_ENA_MASK 0x0020 /* MICB2_ENA */
  159. #define WM8993_MICB2_ENA_SHIFT 5 /* MICB2_ENA */
  160. #define WM8993_MICB2_ENA_WIDTH 1 /* MICB2_ENA */
  161. #define WM8993_MICB1_ENA 0x0010 /* MICB1_ENA */
  162. #define WM8993_MICB1_ENA_MASK 0x0010 /* MICB1_ENA */
  163. #define WM8993_MICB1_ENA_SHIFT 4 /* MICB1_ENA */
  164. #define WM8993_MICB1_ENA_WIDTH 1 /* MICB1_ENA */
  165. #define WM8993_VMID_SEL_MASK 0x0006 /* VMID_SEL - [2:1] */
  166. #define WM8993_VMID_SEL_SHIFT 1 /* VMID_SEL - [2:1] */
  167. #define WM8993_VMID_SEL_WIDTH 2 /* VMID_SEL - [2:1] */
  168. #define WM8993_BIAS_ENA 0x0001 /* BIAS_ENA */
  169. #define WM8993_BIAS_ENA_MASK 0x0001 /* BIAS_ENA */
  170. #define WM8993_BIAS_ENA_SHIFT 0 /* BIAS_ENA */
  171. #define WM8993_BIAS_ENA_WIDTH 1 /* BIAS_ENA */
  172. /*
  173. * R2 (0x02) - Power Management (2)
  174. */
  175. #define WM8993_TSHUT_ENA 0x4000 /* TSHUT_ENA */
  176. #define WM8993_TSHUT_ENA_MASK 0x4000 /* TSHUT_ENA */
  177. #define WM8993_TSHUT_ENA_SHIFT 14 /* TSHUT_ENA */
  178. #define WM8993_TSHUT_ENA_WIDTH 1 /* TSHUT_ENA */
  179. #define WM8993_TSHUT_OPDIS 0x2000 /* TSHUT_OPDIS */
  180. #define WM8993_TSHUT_OPDIS_MASK 0x2000 /* TSHUT_OPDIS */
  181. #define WM8993_TSHUT_OPDIS_SHIFT 13 /* TSHUT_OPDIS */
  182. #define WM8993_TSHUT_OPDIS_WIDTH 1 /* TSHUT_OPDIS */
  183. #define WM8993_OPCLK_ENA 0x0800 /* OPCLK_ENA */
  184. #define WM8993_OPCLK_ENA_MASK 0x0800 /* OPCLK_ENA */
  185. #define WM8993_OPCLK_ENA_SHIFT 11 /* OPCLK_ENA */
  186. #define WM8993_OPCLK_ENA_WIDTH 1 /* OPCLK_ENA */
  187. #define WM8993_MIXINL_ENA 0x0200 /* MIXINL_ENA */
  188. #define WM8993_MIXINL_ENA_MASK 0x0200 /* MIXINL_ENA */
  189. #define WM8993_MIXINL_ENA_SHIFT 9 /* MIXINL_ENA */
  190. #define WM8993_MIXINL_ENA_WIDTH 1 /* MIXINL_ENA */
  191. #define WM8993_MIXINR_ENA 0x0100 /* MIXINR_ENA */
  192. #define WM8993_MIXINR_ENA_MASK 0x0100 /* MIXINR_ENA */
  193. #define WM8993_MIXINR_ENA_SHIFT 8 /* MIXINR_ENA */
  194. #define WM8993_MIXINR_ENA_WIDTH 1 /* MIXINR_ENA */
  195. #define WM8993_IN2L_ENA 0x0080 /* IN2L_ENA */
  196. #define WM8993_IN2L_ENA_MASK 0x0080 /* IN2L_ENA */
  197. #define WM8993_IN2L_ENA_SHIFT 7 /* IN2L_ENA */
  198. #define WM8993_IN2L_ENA_WIDTH 1 /* IN2L_ENA */
  199. #define WM8993_IN1L_ENA 0x0040 /* IN1L_ENA */
  200. #define WM8993_IN1L_ENA_MASK 0x0040 /* IN1L_ENA */
  201. #define WM8993_IN1L_ENA_SHIFT 6 /* IN1L_ENA */
  202. #define WM8993_IN1L_ENA_WIDTH 1 /* IN1L_ENA */
  203. #define WM8993_IN2R_ENA 0x0020 /* IN2R_ENA */
  204. #define WM8993_IN2R_ENA_MASK 0x0020 /* IN2R_ENA */
  205. #define WM8993_IN2R_ENA_SHIFT 5 /* IN2R_ENA */
  206. #define WM8993_IN2R_ENA_WIDTH 1 /* IN2R_ENA */
  207. #define WM8993_IN1R_ENA 0x0010 /* IN1R_ENA */
  208. #define WM8993_IN1R_ENA_MASK 0x0010 /* IN1R_ENA */
  209. #define WM8993_IN1R_ENA_SHIFT 4 /* IN1R_ENA */
  210. #define WM8993_IN1R_ENA_WIDTH 1 /* IN1R_ENA */
  211. #define WM8993_ADCL_ENA 0x0002 /* ADCL_ENA */
  212. #define WM8993_ADCL_ENA_MASK 0x0002 /* ADCL_ENA */
  213. #define WM8993_ADCL_ENA_SHIFT 1 /* ADCL_ENA */
  214. #define WM8993_ADCL_ENA_WIDTH 1 /* ADCL_ENA */
  215. #define WM8993_ADCR_ENA 0x0001 /* ADCR_ENA */
  216. #define WM8993_ADCR_ENA_MASK 0x0001 /* ADCR_ENA */
  217. #define WM8993_ADCR_ENA_SHIFT 0 /* ADCR_ENA */
  218. #define WM8993_ADCR_ENA_WIDTH 1 /* ADCR_ENA */
  219. /*
  220. * R3 (0x03) - Power Management (3)
  221. */
  222. #define WM8993_LINEOUT1N_ENA 0x2000 /* LINEOUT1N_ENA */
  223. #define WM8993_LINEOUT1N_ENA_MASK 0x2000 /* LINEOUT1N_ENA */
  224. #define WM8993_LINEOUT1N_ENA_SHIFT 13 /* LINEOUT1N_ENA */
  225. #define WM8993_LINEOUT1N_ENA_WIDTH 1 /* LINEOUT1N_ENA */
  226. #define WM8993_LINEOUT1P_ENA 0x1000 /* LINEOUT1P_ENA */
  227. #define WM8993_LINEOUT1P_ENA_MASK 0x1000 /* LINEOUT1P_ENA */
  228. #define WM8993_LINEOUT1P_ENA_SHIFT 12 /* LINEOUT1P_ENA */
  229. #define WM8993_LINEOUT1P_ENA_WIDTH 1 /* LINEOUT1P_ENA */
  230. #define WM8993_LINEOUT2N_ENA 0x0800 /* LINEOUT2N_ENA */
  231. #define WM8993_LINEOUT2N_ENA_MASK 0x0800 /* LINEOUT2N_ENA */
  232. #define WM8993_LINEOUT2N_ENA_SHIFT 11 /* LINEOUT2N_ENA */
  233. #define WM8993_LINEOUT2N_ENA_WIDTH 1 /* LINEOUT2N_ENA */
  234. #define WM8993_LINEOUT2P_ENA 0x0400 /* LINEOUT2P_ENA */
  235. #define WM8993_LINEOUT2P_ENA_MASK 0x0400 /* LINEOUT2P_ENA */
  236. #define WM8993_LINEOUT2P_ENA_SHIFT 10 /* LINEOUT2P_ENA */
  237. #define WM8993_LINEOUT2P_ENA_WIDTH 1 /* LINEOUT2P_ENA */
  238. #define WM8993_SPKRVOL_ENA 0x0200 /* SPKRVOL_ENA */
  239. #define WM8993_SPKRVOL_ENA_MASK 0x0200 /* SPKRVOL_ENA */
  240. #define WM8993_SPKRVOL_ENA_SHIFT 9 /* SPKRVOL_ENA */
  241. #define WM8993_SPKRVOL_ENA_WIDTH 1 /* SPKRVOL_ENA */
  242. #define WM8993_SPKLVOL_ENA 0x0100 /* SPKLVOL_ENA */
  243. #define WM8993_SPKLVOL_ENA_MASK 0x0100 /* SPKLVOL_ENA */
  244. #define WM8993_SPKLVOL_ENA_SHIFT 8 /* SPKLVOL_ENA */
  245. #define WM8993_SPKLVOL_ENA_WIDTH 1 /* SPKLVOL_ENA */
  246. #define WM8993_MIXOUTLVOL_ENA 0x0080 /* MIXOUTLVOL_ENA */
  247. #define WM8993_MIXOUTLVOL_ENA_MASK 0x0080 /* MIXOUTLVOL_ENA */
  248. #define WM8993_MIXOUTLVOL_ENA_SHIFT 7 /* MIXOUTLVOL_ENA */
  249. #define WM8993_MIXOUTLVOL_ENA_WIDTH 1 /* MIXOUTLVOL_ENA */
  250. #define WM8993_MIXOUTRVOL_ENA 0x0040 /* MIXOUTRVOL_ENA */
  251. #define WM8993_MIXOUTRVOL_ENA_MASK 0x0040 /* MIXOUTRVOL_ENA */
  252. #define WM8993_MIXOUTRVOL_ENA_SHIFT 6 /* MIXOUTRVOL_ENA */
  253. #define WM8993_MIXOUTRVOL_ENA_WIDTH 1 /* MIXOUTRVOL_ENA */
  254. #define WM8993_MIXOUTL_ENA 0x0020 /* MIXOUTL_ENA */
  255. #define WM8993_MIXOUTL_ENA_MASK 0x0020 /* MIXOUTL_ENA */
  256. #define WM8993_MIXOUTL_ENA_SHIFT 5 /* MIXOUTL_ENA */
  257. #define WM8993_MIXOUTL_ENA_WIDTH 1 /* MIXOUTL_ENA */
  258. #define WM8993_MIXOUTR_ENA 0x0010 /* MIXOUTR_ENA */
  259. #define WM8993_MIXOUTR_ENA_MASK 0x0010 /* MIXOUTR_ENA */
  260. #define WM8993_MIXOUTR_ENA_SHIFT 4 /* MIXOUTR_ENA */
  261. #define WM8993_MIXOUTR_ENA_WIDTH 1 /* MIXOUTR_ENA */
  262. #define WM8993_DACL_ENA 0x0002 /* DACL_ENA */
  263. #define WM8993_DACL_ENA_MASK 0x0002 /* DACL_ENA */
  264. #define WM8993_DACL_ENA_SHIFT 1 /* DACL_ENA */
  265. #define WM8993_DACL_ENA_WIDTH 1 /* DACL_ENA */
  266. #define WM8993_DACR_ENA 0x0001 /* DACR_ENA */
  267. #define WM8993_DACR_ENA_MASK 0x0001 /* DACR_ENA */
  268. #define WM8993_DACR_ENA_SHIFT 0 /* DACR_ENA */
  269. #define WM8993_DACR_ENA_WIDTH 1 /* DACR_ENA */
  270. /*
  271. * R4 (0x04) - Audio Interface (1)
  272. */
  273. #define WM8993_AIFADCL_SRC 0x8000 /* AIFADCL_SRC */
  274. #define WM8993_AIFADCL_SRC_MASK 0x8000 /* AIFADCL_SRC */
  275. #define WM8993_AIFADCL_SRC_SHIFT 15 /* AIFADCL_SRC */
  276. #define WM8993_AIFADCL_SRC_WIDTH 1 /* AIFADCL_SRC */
  277. #define WM8993_AIFADCR_SRC 0x4000 /* AIFADCR_SRC */
  278. #define WM8993_AIFADCR_SRC_MASK 0x4000 /* AIFADCR_SRC */
  279. #define WM8993_AIFADCR_SRC_SHIFT 14 /* AIFADCR_SRC */
  280. #define WM8993_AIFADCR_SRC_WIDTH 1 /* AIFADCR_SRC */
  281. #define WM8993_AIFADC_TDM 0x2000 /* AIFADC_TDM */
  282. #define WM8993_AIFADC_TDM_MASK 0x2000 /* AIFADC_TDM */
  283. #define WM8993_AIFADC_TDM_SHIFT 13 /* AIFADC_TDM */
  284. #define WM8993_AIFADC_TDM_WIDTH 1 /* AIFADC_TDM */
  285. #define WM8993_AIFADC_TDM_CHAN 0x1000 /* AIFADC_TDM_CHAN */
  286. #define WM8993_AIFADC_TDM_CHAN_MASK 0x1000 /* AIFADC_TDM_CHAN */
  287. #define WM8993_AIFADC_TDM_CHAN_SHIFT 12 /* AIFADC_TDM_CHAN */
  288. #define WM8993_AIFADC_TDM_CHAN_WIDTH 1 /* AIFADC_TDM_CHAN */
  289. #define WM8993_BCLK_DIR 0x0200 /* BCLK_DIR */
  290. #define WM8993_BCLK_DIR_MASK 0x0200 /* BCLK_DIR */
  291. #define WM8993_BCLK_DIR_SHIFT 9 /* BCLK_DIR */
  292. #define WM8993_BCLK_DIR_WIDTH 1 /* BCLK_DIR */
  293. #define WM8993_AIF_BCLK_INV 0x0100 /* AIF_BCLK_INV */
  294. #define WM8993_AIF_BCLK_INV_MASK 0x0100 /* AIF_BCLK_INV */
  295. #define WM8993_AIF_BCLK_INV_SHIFT 8 /* AIF_BCLK_INV */
  296. #define WM8993_AIF_BCLK_INV_WIDTH 1 /* AIF_BCLK_INV */
  297. #define WM8993_AIF_LRCLK_INV 0x0080 /* AIF_LRCLK_INV */
  298. #define WM8993_AIF_LRCLK_INV_MASK 0x0080 /* AIF_LRCLK_INV */
  299. #define WM8993_AIF_LRCLK_INV_SHIFT 7 /* AIF_LRCLK_INV */
  300. #define WM8993_AIF_LRCLK_INV_WIDTH 1 /* AIF_LRCLK_INV */
  301. #define WM8993_AIF_WL_MASK 0x0060 /* AIF_WL - [6:5] */
  302. #define WM8993_AIF_WL_SHIFT 5 /* AIF_WL - [6:5] */
  303. #define WM8993_AIF_WL_WIDTH 2 /* AIF_WL - [6:5] */
  304. #define WM8993_AIF_FMT_MASK 0x0018 /* AIF_FMT - [4:3] */
  305. #define WM8993_AIF_FMT_SHIFT 3 /* AIF_FMT - [4:3] */
  306. #define WM8993_AIF_FMT_WIDTH 2 /* AIF_FMT - [4:3] */
  307. /*
  308. * R5 (0x05) - Audio Interface (2)
  309. */
  310. #define WM8993_AIFDACL_SRC 0x8000 /* AIFDACL_SRC */
  311. #define WM8993_AIFDACL_SRC_MASK 0x8000 /* AIFDACL_SRC */
  312. #define WM8993_AIFDACL_SRC_SHIFT 15 /* AIFDACL_SRC */
  313. #define WM8993_AIFDACL_SRC_WIDTH 1 /* AIFDACL_SRC */
  314. #define WM8993_AIFDACR_SRC 0x4000 /* AIFDACR_SRC */
  315. #define WM8993_AIFDACR_SRC_MASK 0x4000 /* AIFDACR_SRC */
  316. #define WM8993_AIFDACR_SRC_SHIFT 14 /* AIFDACR_SRC */
  317. #define WM8993_AIFDACR_SRC_WIDTH 1 /* AIFDACR_SRC */
  318. #define WM8993_AIFDAC_TDM 0x2000 /* AIFDAC_TDM */
  319. #define WM8993_AIFDAC_TDM_MASK 0x2000 /* AIFDAC_TDM */
  320. #define WM8993_AIFDAC_TDM_SHIFT 13 /* AIFDAC_TDM */
  321. #define WM8993_AIFDAC_TDM_WIDTH 1 /* AIFDAC_TDM */
  322. #define WM8993_AIFDAC_TDM_CHAN 0x1000 /* AIFDAC_TDM_CHAN */
  323. #define WM8993_AIFDAC_TDM_CHAN_MASK 0x1000 /* AIFDAC_TDM_CHAN */
  324. #define WM8993_AIFDAC_TDM_CHAN_SHIFT 12 /* AIFDAC_TDM_CHAN */
  325. #define WM8993_AIFDAC_TDM_CHAN_WIDTH 1 /* AIFDAC_TDM_CHAN */
  326. #define WM8993_DAC_BOOST_MASK 0x0C00 /* DAC_BOOST - [11:10] */
  327. #define WM8993_DAC_BOOST_SHIFT 10 /* DAC_BOOST - [11:10] */
  328. #define WM8993_DAC_BOOST_WIDTH 2 /* DAC_BOOST - [11:10] */
  329. #define WM8993_DAC_COMP 0x0010 /* DAC_COMP */
  330. #define WM8993_DAC_COMP_MASK 0x0010 /* DAC_COMP */
  331. #define WM8993_DAC_COMP_SHIFT 4 /* DAC_COMP */
  332. #define WM8993_DAC_COMP_WIDTH 1 /* DAC_COMP */
  333. #define WM8993_DAC_COMPMODE 0x0008 /* DAC_COMPMODE */
  334. #define WM8993_DAC_COMPMODE_MASK 0x0008 /* DAC_COMPMODE */
  335. #define WM8993_DAC_COMPMODE_SHIFT 3 /* DAC_COMPMODE */
  336. #define WM8993_DAC_COMPMODE_WIDTH 1 /* DAC_COMPMODE */
  337. #define WM8993_ADC_COMP 0x0004 /* ADC_COMP */
  338. #define WM8993_ADC_COMP_MASK 0x0004 /* ADC_COMP */
  339. #define WM8993_ADC_COMP_SHIFT 2 /* ADC_COMP */
  340. #define WM8993_ADC_COMP_WIDTH 1 /* ADC_COMP */
  341. #define WM8993_ADC_COMPMODE 0x0002 /* ADC_COMPMODE */
  342. #define WM8993_ADC_COMPMODE_MASK 0x0002 /* ADC_COMPMODE */
  343. #define WM8993_ADC_COMPMODE_SHIFT 1 /* ADC_COMPMODE */
  344. #define WM8993_ADC_COMPMODE_WIDTH 1 /* ADC_COMPMODE */
  345. #define WM8993_LOOPBACK 0x0001 /* LOOPBACK */
  346. #define WM8993_LOOPBACK_MASK 0x0001 /* LOOPBACK */
  347. #define WM8993_LOOPBACK_SHIFT 0 /* LOOPBACK */
  348. #define WM8993_LOOPBACK_WIDTH 1 /* LOOPBACK */
  349. /*
  350. * R6 (0x06) - Clocking 1
  351. */
  352. #define WM8993_TOCLK_RATE 0x8000 /* TOCLK_RATE */
  353. #define WM8993_TOCLK_RATE_MASK 0x8000 /* TOCLK_RATE */
  354. #define WM8993_TOCLK_RATE_SHIFT 15 /* TOCLK_RATE */
  355. #define WM8993_TOCLK_RATE_WIDTH 1 /* TOCLK_RATE */
  356. #define WM8993_TOCLK_ENA 0x4000 /* TOCLK_ENA */
  357. #define WM8993_TOCLK_ENA_MASK 0x4000 /* TOCLK_ENA */
  358. #define WM8993_TOCLK_ENA_SHIFT 14 /* TOCLK_ENA */
  359. #define WM8993_TOCLK_ENA_WIDTH 1 /* TOCLK_ENA */
  360. #define WM8993_OPCLK_DIV_MASK 0x1E00 /* OPCLK_DIV - [12:9] */
  361. #define WM8993_OPCLK_DIV_SHIFT 9 /* OPCLK_DIV - [12:9] */
  362. #define WM8993_OPCLK_DIV_WIDTH 4 /* OPCLK_DIV - [12:9] */
  363. #define WM8993_DCLK_DIV_MASK 0x01C0 /* DCLK_DIV - [8:6] */
  364. #define WM8993_DCLK_DIV_SHIFT 6 /* DCLK_DIV - [8:6] */
  365. #define WM8993_DCLK_DIV_WIDTH 3 /* DCLK_DIV - [8:6] */
  366. #define WM8993_BCLK_DIV_MASK 0x001E /* BCLK_DIV - [4:1] */
  367. #define WM8993_BCLK_DIV_SHIFT 1 /* BCLK_DIV - [4:1] */
  368. #define WM8993_BCLK_DIV_WIDTH 4 /* BCLK_DIV - [4:1] */
  369. /*
  370. * R7 (0x07) - Clocking 2
  371. */
  372. #define WM8993_MCLK_SRC 0x8000 /* MCLK_SRC */
  373. #define WM8993_MCLK_SRC_MASK 0x8000 /* MCLK_SRC */
  374. #define WM8993_MCLK_SRC_SHIFT 15 /* MCLK_SRC */
  375. #define WM8993_MCLK_SRC_WIDTH 1 /* MCLK_SRC */
  376. #define WM8993_SYSCLK_SRC 0x4000 /* SYSCLK_SRC */
  377. #define WM8993_SYSCLK_SRC_MASK 0x4000 /* SYSCLK_SRC */
  378. #define WM8993_SYSCLK_SRC_SHIFT 14 /* SYSCLK_SRC */
  379. #define WM8993_SYSCLK_SRC_WIDTH 1 /* SYSCLK_SRC */
  380. #define WM8993_MCLK_DIV 0x1000 /* MCLK_DIV */
  381. #define WM8993_MCLK_DIV_MASK 0x1000 /* MCLK_DIV */
  382. #define WM8993_MCLK_DIV_SHIFT 12 /* MCLK_DIV */
  383. #define WM8993_MCLK_DIV_WIDTH 1 /* MCLK_DIV */
  384. #define WM8993_MCLK_INV 0x0400 /* MCLK_INV */
  385. #define WM8993_MCLK_INV_MASK 0x0400 /* MCLK_INV */
  386. #define WM8993_MCLK_INV_SHIFT 10 /* MCLK_INV */
  387. #define WM8993_MCLK_INV_WIDTH 1 /* MCLK_INV */
  388. #define WM8993_ADC_DIV_MASK 0x00E0 /* ADC_DIV - [7:5] */
  389. #define WM8993_ADC_DIV_SHIFT 5 /* ADC_DIV - [7:5] */
  390. #define WM8993_ADC_DIV_WIDTH 3 /* ADC_DIV - [7:5] */
  391. #define WM8993_DAC_DIV_MASK 0x001C /* DAC_DIV - [4:2] */
  392. #define WM8993_DAC_DIV_SHIFT 2 /* DAC_DIV - [4:2] */
  393. #define WM8993_DAC_DIV_WIDTH 3 /* DAC_DIV - [4:2] */
  394. /*
  395. * R8 (0x08) - Audio Interface (3)
  396. */
  397. #define WM8993_AIF_MSTR1 0x8000 /* AIF_MSTR1 */
  398. #define WM8993_AIF_MSTR1_MASK 0x8000 /* AIF_MSTR1 */
  399. #define WM8993_AIF_MSTR1_SHIFT 15 /* AIF_MSTR1 */
  400. #define WM8993_AIF_MSTR1_WIDTH 1 /* AIF_MSTR1 */
  401. /*
  402. * R9 (0x09) - Audio Interface (4)
  403. */
  404. #define WM8993_AIF_TRIS 0x2000 /* AIF_TRIS */
  405. #define WM8993_AIF_TRIS_MASK 0x2000 /* AIF_TRIS */
  406. #define WM8993_AIF_TRIS_SHIFT 13 /* AIF_TRIS */
  407. #define WM8993_AIF_TRIS_WIDTH 1 /* AIF_TRIS */
  408. #define WM8993_LRCLK_DIR 0x0800 /* LRCLK_DIR */
  409. #define WM8993_LRCLK_DIR_MASK 0x0800 /* LRCLK_DIR */
  410. #define WM8993_LRCLK_DIR_SHIFT 11 /* LRCLK_DIR */
  411. #define WM8993_LRCLK_DIR_WIDTH 1 /* LRCLK_DIR */
  412. #define WM8993_LRCLK_RATE_MASK 0x07FF /* LRCLK_RATE - [10:0] */
  413. #define WM8993_LRCLK_RATE_SHIFT 0 /* LRCLK_RATE - [10:0] */
  414. #define WM8993_LRCLK_RATE_WIDTH 11 /* LRCLK_RATE - [10:0] */
  415. /*
  416. * R10 (0x0A) - DAC CTRL
  417. */
  418. #define WM8993_DAC_OSR128 0x2000 /* DAC_OSR128 */
  419. #define WM8993_DAC_OSR128_MASK 0x2000 /* DAC_OSR128 */
  420. #define WM8993_DAC_OSR128_SHIFT 13 /* DAC_OSR128 */
  421. #define WM8993_DAC_OSR128_WIDTH 1 /* DAC_OSR128 */
  422. #define WM8993_DAC_MONO 0x0200 /* DAC_MONO */
  423. #define WM8993_DAC_MONO_MASK 0x0200 /* DAC_MONO */
  424. #define WM8993_DAC_MONO_SHIFT 9 /* DAC_MONO */
  425. #define WM8993_DAC_MONO_WIDTH 1 /* DAC_MONO */
  426. #define WM8993_DAC_SB_FILT 0x0100 /* DAC_SB_FILT */
  427. #define WM8993_DAC_SB_FILT_MASK 0x0100 /* DAC_SB_FILT */
  428. #define WM8993_DAC_SB_FILT_SHIFT 8 /* DAC_SB_FILT */
  429. #define WM8993_DAC_SB_FILT_WIDTH 1 /* DAC_SB_FILT */
  430. #define WM8993_DAC_MUTERATE 0x0080 /* DAC_MUTERATE */
  431. #define WM8993_DAC_MUTERATE_MASK 0x0080 /* DAC_MUTERATE */
  432. #define WM8993_DAC_MUTERATE_SHIFT 7 /* DAC_MUTERATE */
  433. #define WM8993_DAC_MUTERATE_WIDTH 1 /* DAC_MUTERATE */
  434. #define WM8993_DAC_UNMUTE_RAMP 0x0040 /* DAC_UNMUTE_RAMP */
  435. #define WM8993_DAC_UNMUTE_RAMP_MASK 0x0040 /* DAC_UNMUTE_RAMP */
  436. #define WM8993_DAC_UNMUTE_RAMP_SHIFT 6 /* DAC_UNMUTE_RAMP */
  437. #define WM8993_DAC_UNMUTE_RAMP_WIDTH 1 /* DAC_UNMUTE_RAMP */
  438. #define WM8993_DEEMPH_MASK 0x0030 /* DEEMPH - [5:4] */
  439. #define WM8993_DEEMPH_SHIFT 4 /* DEEMPH - [5:4] */
  440. #define WM8993_DEEMPH_WIDTH 2 /* DEEMPH - [5:4] */
  441. #define WM8993_DAC_MUTE 0x0004 /* DAC_MUTE */
  442. #define WM8993_DAC_MUTE_MASK 0x0004 /* DAC_MUTE */
  443. #define WM8993_DAC_MUTE_SHIFT 2 /* DAC_MUTE */
  444. #define WM8993_DAC_MUTE_WIDTH 1 /* DAC_MUTE */
  445. #define WM8993_DACL_DATINV 0x0002 /* DACL_DATINV */
  446. #define WM8993_DACL_DATINV_MASK 0x0002 /* DACL_DATINV */
  447. #define WM8993_DACL_DATINV_SHIFT 1 /* DACL_DATINV */
  448. #define WM8993_DACL_DATINV_WIDTH 1 /* DACL_DATINV */
  449. #define WM8993_DACR_DATINV 0x0001 /* DACR_DATINV */
  450. #define WM8993_DACR_DATINV_MASK 0x0001 /* DACR_DATINV */
  451. #define WM8993_DACR_DATINV_SHIFT 0 /* DACR_DATINV */
  452. #define WM8993_DACR_DATINV_WIDTH 1 /* DACR_DATINV */
  453. /*
  454. * R11 (0x0B) - Left DAC Digital Volume
  455. */
  456. #define WM8993_DAC_VU 0x0100 /* DAC_VU */
  457. #define WM8993_DAC_VU_MASK 0x0100 /* DAC_VU */
  458. #define WM8993_DAC_VU_SHIFT 8 /* DAC_VU */
  459. #define WM8993_DAC_VU_WIDTH 1 /* DAC_VU */
  460. #define WM8993_DACL_VOL_MASK 0x00FF /* DACL_VOL - [7:0] */
  461. #define WM8993_DACL_VOL_SHIFT 0 /* DACL_VOL - [7:0] */
  462. #define WM8993_DACL_VOL_WIDTH 8 /* DACL_VOL - [7:0] */
  463. /*
  464. * R12 (0x0C) - Right DAC Digital Volume
  465. */
  466. #define WM8993_DAC_VU 0x0100 /* DAC_VU */
  467. #define WM8993_DAC_VU_MASK 0x0100 /* DAC_VU */
  468. #define WM8993_DAC_VU_SHIFT 8 /* DAC_VU */
  469. #define WM8993_DAC_VU_WIDTH 1 /* DAC_VU */
  470. #define WM8993_DACR_VOL_MASK 0x00FF /* DACR_VOL - [7:0] */
  471. #define WM8993_DACR_VOL_SHIFT 0 /* DACR_VOL - [7:0] */
  472. #define WM8993_DACR_VOL_WIDTH 8 /* DACR_VOL - [7:0] */
  473. /*
  474. * R13 (0x0D) - Digital Side Tone
  475. */
  476. #define WM8993_ADCL_DAC_SVOL_MASK 0x1E00 /* ADCL_DAC_SVOL - [12:9] */
  477. #define WM8993_ADCL_DAC_SVOL_SHIFT 9 /* ADCL_DAC_SVOL - [12:9] */
  478. #define WM8993_ADCL_DAC_SVOL_WIDTH 4 /* ADCL_DAC_SVOL - [12:9] */
  479. #define WM8993_ADCR_DAC_SVOL_MASK 0x01E0 /* ADCR_DAC_SVOL - [8:5] */
  480. #define WM8993_ADCR_DAC_SVOL_SHIFT 5 /* ADCR_DAC_SVOL - [8:5] */
  481. #define WM8993_ADCR_DAC_SVOL_WIDTH 4 /* ADCR_DAC_SVOL - [8:5] */
  482. #define WM8993_ADC_TO_DACL_MASK 0x000C /* ADC_TO_DACL - [3:2] */
  483. #define WM8993_ADC_TO_DACL_SHIFT 2 /* ADC_TO_DACL - [3:2] */
  484. #define WM8993_ADC_TO_DACL_WIDTH 2 /* ADC_TO_DACL - [3:2] */
  485. #define WM8993_ADC_TO_DACR_MASK 0x0003 /* ADC_TO_DACR - [1:0] */
  486. #define WM8993_ADC_TO_DACR_SHIFT 0 /* ADC_TO_DACR - [1:0] */
  487. #define WM8993_ADC_TO_DACR_WIDTH 2 /* ADC_TO_DACR - [1:0] */
  488. /*
  489. * R14 (0x0E) - ADC CTRL
  490. */
  491. #define WM8993_ADC_OSR128 0x0200 /* ADC_OSR128 */
  492. #define WM8993_ADC_OSR128_MASK 0x0200 /* ADC_OSR128 */
  493. #define WM8993_ADC_OSR128_SHIFT 9 /* ADC_OSR128 */
  494. #define WM8993_ADC_OSR128_WIDTH 1 /* ADC_OSR128 */
  495. #define WM8993_ADC_HPF 0x0100 /* ADC_HPF */
  496. #define WM8993_ADC_HPF_MASK 0x0100 /* ADC_HPF */
  497. #define WM8993_ADC_HPF_SHIFT 8 /* ADC_HPF */
  498. #define WM8993_ADC_HPF_WIDTH 1 /* ADC_HPF */
  499. #define WM8993_ADC_HPF_CUT_MASK 0x0060 /* ADC_HPF_CUT - [6:5] */
  500. #define WM8993_ADC_HPF_CUT_SHIFT 5 /* ADC_HPF_CUT - [6:5] */
  501. #define WM8993_ADC_HPF_CUT_WIDTH 2 /* ADC_HPF_CUT - [6:5] */
  502. #define WM8993_ADCL_DATINV 0x0002 /* ADCL_DATINV */
  503. #define WM8993_ADCL_DATINV_MASK 0x0002 /* ADCL_DATINV */
  504. #define WM8993_ADCL_DATINV_SHIFT 1 /* ADCL_DATINV */
  505. #define WM8993_ADCL_DATINV_WIDTH 1 /* ADCL_DATINV */
  506. #define WM8993_ADCR_DATINV 0x0001 /* ADCR_DATINV */
  507. #define WM8993_ADCR_DATINV_MASK 0x0001 /* ADCR_DATINV */
  508. #define WM8993_ADCR_DATINV_SHIFT 0 /* ADCR_DATINV */
  509. #define WM8993_ADCR_DATINV_WIDTH 1 /* ADCR_DATINV */
  510. /*
  511. * R15 (0x0F) - Left ADC Digital Volume
  512. */
  513. #define WM8993_ADC_VU 0x0100 /* ADC_VU */
  514. #define WM8993_ADC_VU_MASK 0x0100 /* ADC_VU */
  515. #define WM8993_ADC_VU_SHIFT 8 /* ADC_VU */
  516. #define WM8993_ADC_VU_WIDTH 1 /* ADC_VU */
  517. #define WM8993_ADCL_VOL_MASK 0x00FF /* ADCL_VOL - [7:0] */
  518. #define WM8993_ADCL_VOL_SHIFT 0 /* ADCL_VOL - [7:0] */
  519. #define WM8993_ADCL_VOL_WIDTH 8 /* ADCL_VOL - [7:0] */
  520. /*
  521. * R16 (0x10) - Right ADC Digital Volume
  522. */
  523. #define WM8993_ADC_VU 0x0100 /* ADC_VU */
  524. #define WM8993_ADC_VU_MASK 0x0100 /* ADC_VU */
  525. #define WM8993_ADC_VU_SHIFT 8 /* ADC_VU */
  526. #define WM8993_ADC_VU_WIDTH 1 /* ADC_VU */
  527. #define WM8993_ADCR_VOL_MASK 0x00FF /* ADCR_VOL - [7:0] */
  528. #define WM8993_ADCR_VOL_SHIFT 0 /* ADCR_VOL - [7:0] */
  529. #define WM8993_ADCR_VOL_WIDTH 8 /* ADCR_VOL - [7:0] */
  530. /*
  531. * R18 (0x12) - GPIO CTRL 1
  532. */
  533. #define WM8993_JD2_SC_EINT 0x8000 /* JD2_SC_EINT */
  534. #define WM8993_JD2_SC_EINT_MASK 0x8000 /* JD2_SC_EINT */
  535. #define WM8993_JD2_SC_EINT_SHIFT 15 /* JD2_SC_EINT */
  536. #define WM8993_JD2_SC_EINT_WIDTH 1 /* JD2_SC_EINT */
  537. #define WM8993_JD2_EINT 0x4000 /* JD2_EINT */
  538. #define WM8993_JD2_EINT_MASK 0x4000 /* JD2_EINT */
  539. #define WM8993_JD2_EINT_SHIFT 14 /* JD2_EINT */
  540. #define WM8993_JD2_EINT_WIDTH 1 /* JD2_EINT */
  541. #define WM8993_WSEQ_EINT 0x2000 /* WSEQ_EINT */
  542. #define WM8993_WSEQ_EINT_MASK 0x2000 /* WSEQ_EINT */
  543. #define WM8993_WSEQ_EINT_SHIFT 13 /* WSEQ_EINT */
  544. #define WM8993_WSEQ_EINT_WIDTH 1 /* WSEQ_EINT */
  545. #define WM8993_IRQ 0x1000 /* IRQ */
  546. #define WM8993_IRQ_MASK 0x1000 /* IRQ */
  547. #define WM8993_IRQ_SHIFT 12 /* IRQ */
  548. #define WM8993_IRQ_WIDTH 1 /* IRQ */
  549. #define WM8993_TEMPOK_EINT 0x0800 /* TEMPOK_EINT */
  550. #define WM8993_TEMPOK_EINT_MASK 0x0800 /* TEMPOK_EINT */
  551. #define WM8993_TEMPOK_EINT_SHIFT 11 /* TEMPOK_EINT */
  552. #define WM8993_TEMPOK_EINT_WIDTH 1 /* TEMPOK_EINT */
  553. #define WM8993_JD1_SC_EINT 0x0400 /* JD1_SC_EINT */
  554. #define WM8993_JD1_SC_EINT_MASK 0x0400 /* JD1_SC_EINT */
  555. #define WM8993_JD1_SC_EINT_SHIFT 10 /* JD1_SC_EINT */
  556. #define WM8993_JD1_SC_EINT_WIDTH 1 /* JD1_SC_EINT */
  557. #define WM8993_JD1_EINT 0x0200 /* JD1_EINT */
  558. #define WM8993_JD1_EINT_MASK 0x0200 /* JD1_EINT */
  559. #define WM8993_JD1_EINT_SHIFT 9 /* JD1_EINT */
  560. #define WM8993_JD1_EINT_WIDTH 1 /* JD1_EINT */
  561. #define WM8993_FLL_LOCK_EINT 0x0100 /* FLL_LOCK_EINT */
  562. #define WM8993_FLL_LOCK_EINT_MASK 0x0100 /* FLL_LOCK_EINT */
  563. #define WM8993_FLL_LOCK_EINT_SHIFT 8 /* FLL_LOCK_EINT */
  564. #define WM8993_FLL_LOCK_EINT_WIDTH 1 /* FLL_LOCK_EINT */
  565. #define WM8993_GPI8_EINT 0x0080 /* GPI8_EINT */
  566. #define WM8993_GPI8_EINT_MASK 0x0080 /* GPI8_EINT */
  567. #define WM8993_GPI8_EINT_SHIFT 7 /* GPI8_EINT */
  568. #define WM8993_GPI8_EINT_WIDTH 1 /* GPI8_EINT */
  569. #define WM8993_GPI7_EINT 0x0040 /* GPI7_EINT */
  570. #define WM8993_GPI7_EINT_MASK 0x0040 /* GPI7_EINT */
  571. #define WM8993_GPI7_EINT_SHIFT 6 /* GPI7_EINT */
  572. #define WM8993_GPI7_EINT_WIDTH 1 /* GPI7_EINT */
  573. #define WM8993_GPIO1_EINT 0x0001 /* GPIO1_EINT */
  574. #define WM8993_GPIO1_EINT_MASK 0x0001 /* GPIO1_EINT */
  575. #define WM8993_GPIO1_EINT_SHIFT 0 /* GPIO1_EINT */
  576. #define WM8993_GPIO1_EINT_WIDTH 1 /* GPIO1_EINT */
  577. /*
  578. * R19 (0x13) - GPIO1
  579. */
  580. #define WM8993_GPIO1_PU 0x0020 /* GPIO1_PU */
  581. #define WM8993_GPIO1_PU_MASK 0x0020 /* GPIO1_PU */
  582. #define WM8993_GPIO1_PU_SHIFT 5 /* GPIO1_PU */
  583. #define WM8993_GPIO1_PU_WIDTH 1 /* GPIO1_PU */
  584. #define WM8993_GPIO1_PD 0x0010 /* GPIO1_PD */
  585. #define WM8993_GPIO1_PD_MASK 0x0010 /* GPIO1_PD */
  586. #define WM8993_GPIO1_PD_SHIFT 4 /* GPIO1_PD */
  587. #define WM8993_GPIO1_PD_WIDTH 1 /* GPIO1_PD */
  588. #define WM8993_GPIO1_SEL_MASK 0x000F /* GPIO1_SEL - [3:0] */
  589. #define WM8993_GPIO1_SEL_SHIFT 0 /* GPIO1_SEL - [3:0] */
  590. #define WM8993_GPIO1_SEL_WIDTH 4 /* GPIO1_SEL - [3:0] */
  591. /*
  592. * R20 (0x14) - IRQ_DEBOUNCE
  593. */
  594. #define WM8993_JD2_SC_DB 0x8000 /* JD2_SC_DB */
  595. #define WM8993_JD2_SC_DB_MASK 0x8000 /* JD2_SC_DB */
  596. #define WM8993_JD2_SC_DB_SHIFT 15 /* JD2_SC_DB */
  597. #define WM8993_JD2_SC_DB_WIDTH 1 /* JD2_SC_DB */
  598. #define WM8993_JD2_DB 0x4000 /* JD2_DB */
  599. #define WM8993_JD2_DB_MASK 0x4000 /* JD2_DB */
  600. #define WM8993_JD2_DB_SHIFT 14 /* JD2_DB */
  601. #define WM8993_JD2_DB_WIDTH 1 /* JD2_DB */
  602. #define WM8993_WSEQ_DB 0x2000 /* WSEQ_DB */
  603. #define WM8993_WSEQ_DB_MASK 0x2000 /* WSEQ_DB */
  604. #define WM8993_WSEQ_DB_SHIFT 13 /* WSEQ_DB */
  605. #define WM8993_WSEQ_DB_WIDTH 1 /* WSEQ_DB */
  606. #define WM8993_TEMPOK_DB 0x0800 /* TEMPOK_DB */
  607. #define WM8993_TEMPOK_DB_MASK 0x0800 /* TEMPOK_DB */
  608. #define WM8993_TEMPOK_DB_SHIFT 11 /* TEMPOK_DB */
  609. #define WM8993_TEMPOK_DB_WIDTH 1 /* TEMPOK_DB */
  610. #define WM8993_JD1_SC_DB 0x0400 /* JD1_SC_DB */
  611. #define WM8993_JD1_SC_DB_MASK 0x0400 /* JD1_SC_DB */
  612. #define WM8993_JD1_SC_DB_SHIFT 10 /* JD1_SC_DB */
  613. #define WM8993_JD1_SC_DB_WIDTH 1 /* JD1_SC_DB */
  614. #define WM8993_JD1_DB 0x0200 /* JD1_DB */
  615. #define WM8993_JD1_DB_MASK 0x0200 /* JD1_DB */
  616. #define WM8993_JD1_DB_SHIFT 9 /* JD1_DB */
  617. #define WM8993_JD1_DB_WIDTH 1 /* JD1_DB */
  618. #define WM8993_FLL_LOCK_DB 0x0100 /* FLL_LOCK_DB */
  619. #define WM8993_FLL_LOCK_DB_MASK 0x0100 /* FLL_LOCK_DB */
  620. #define WM8993_FLL_LOCK_DB_SHIFT 8 /* FLL_LOCK_DB */
  621. #define WM8993_FLL_LOCK_DB_WIDTH 1 /* FLL_LOCK_DB */
  622. #define WM8993_GPI8_DB 0x0080 /* GPI8_DB */
  623. #define WM8993_GPI8_DB_MASK 0x0080 /* GPI8_DB */
  624. #define WM8993_GPI8_DB_SHIFT 7 /* GPI8_DB */
  625. #define WM8993_GPI8_DB_WIDTH 1 /* GPI8_DB */
  626. #define WM8993_GPI7_DB 0x0008 /* GPI7_DB */
  627. #define WM8993_GPI7_DB_MASK 0x0008 /* GPI7_DB */
  628. #define WM8993_GPI7_DB_SHIFT 3 /* GPI7_DB */
  629. #define WM8993_GPI7_DB_WIDTH 1 /* GPI7_DB */
  630. #define WM8993_GPIO1_DB 0x0001 /* GPIO1_DB */
  631. #define WM8993_GPIO1_DB_MASK 0x0001 /* GPIO1_DB */
  632. #define WM8993_GPIO1_DB_SHIFT 0 /* GPIO1_DB */
  633. #define WM8993_GPIO1_DB_WIDTH 1 /* GPIO1_DB */
  634. /*
  635. * R22 (0x16) - GPIOCTRL 2
  636. */
  637. #define WM8993_IM_JD2_EINT 0x2000 /* IM_JD2_EINT */
  638. #define WM8993_IM_JD2_EINT_MASK 0x2000 /* IM_JD2_EINT */
  639. #define WM8993_IM_JD2_EINT_SHIFT 13 /* IM_JD2_EINT */
  640. #define WM8993_IM_JD2_EINT_WIDTH 1 /* IM_JD2_EINT */
  641. #define WM8993_IM_JD2_SC_EINT 0x1000 /* IM_JD2_SC_EINT */
  642. #define WM8993_IM_JD2_SC_EINT_MASK 0x1000 /* IM_JD2_SC_EINT */
  643. #define WM8993_IM_JD2_SC_EINT_SHIFT 12 /* IM_JD2_SC_EINT */
  644. #define WM8993_IM_JD2_SC_EINT_WIDTH 1 /* IM_JD2_SC_EINT */
  645. #define WM8993_IM_TEMPOK_EINT 0x0800 /* IM_TEMPOK_EINT */
  646. #define WM8993_IM_TEMPOK_EINT_MASK 0x0800 /* IM_TEMPOK_EINT */
  647. #define WM8993_IM_TEMPOK_EINT_SHIFT 11 /* IM_TEMPOK_EINT */
  648. #define WM8993_IM_TEMPOK_EINT_WIDTH 1 /* IM_TEMPOK_EINT */
  649. #define WM8993_IM_JD1_SC_EINT 0x0400 /* IM_JD1_SC_EINT */
  650. #define WM8993_IM_JD1_SC_EINT_MASK 0x0400 /* IM_JD1_SC_EINT */
  651. #define WM8993_IM_JD1_SC_EINT_SHIFT 10 /* IM_JD1_SC_EINT */
  652. #define WM8993_IM_JD1_SC_EINT_WIDTH 1 /* IM_JD1_SC_EINT */
  653. #define WM8993_IM_JD1_EINT 0x0200 /* IM_JD1_EINT */
  654. #define WM8993_IM_JD1_EINT_MASK 0x0200 /* IM_JD1_EINT */
  655. #define WM8993_IM_JD1_EINT_SHIFT 9 /* IM_JD1_EINT */
  656. #define WM8993_IM_JD1_EINT_WIDTH 1 /* IM_JD1_EINT */
  657. #define WM8993_IM_FLL_LOCK_EINT 0x0100 /* IM_FLL_LOCK_EINT */
  658. #define WM8993_IM_FLL_LOCK_EINT_MASK 0x0100 /* IM_FLL_LOCK_EINT */
  659. #define WM8993_IM_FLL_LOCK_EINT_SHIFT 8 /* IM_FLL_LOCK_EINT */
  660. #define WM8993_IM_FLL_LOCK_EINT_WIDTH 1 /* IM_FLL_LOCK_EINT */
  661. #define WM8993_IM_GPI8_EINT 0x0040 /* IM_GPI8_EINT */
  662. #define WM8993_IM_GPI8_EINT_MASK 0x0040 /* IM_GPI8_EINT */
  663. #define WM8993_IM_GPI8_EINT_SHIFT 6 /* IM_GPI8_EINT */
  664. #define WM8993_IM_GPI8_EINT_WIDTH 1 /* IM_GPI8_EINT */
  665. #define WM8993_IM_GPIO1_EINT 0x0020 /* IM_GPIO1_EINT */
  666. #define WM8993_IM_GPIO1_EINT_MASK 0x0020 /* IM_GPIO1_EINT */
  667. #define WM8993_IM_GPIO1_EINT_SHIFT 5 /* IM_GPIO1_EINT */
  668. #define WM8993_IM_GPIO1_EINT_WIDTH 1 /* IM_GPIO1_EINT */
  669. #define WM8993_GPI8_ENA 0x0010 /* GPI8_ENA */
  670. #define WM8993_GPI8_ENA_MASK 0x0010 /* GPI8_ENA */
  671. #define WM8993_GPI8_ENA_SHIFT 4 /* GPI8_ENA */
  672. #define WM8993_GPI8_ENA_WIDTH 1 /* GPI8_ENA */
  673. #define WM8993_IM_GPI7_EINT 0x0004 /* IM_GPI7_EINT */
  674. #define WM8993_IM_GPI7_EINT_MASK 0x0004 /* IM_GPI7_EINT */
  675. #define WM8993_IM_GPI7_EINT_SHIFT 2 /* IM_GPI7_EINT */
  676. #define WM8993_IM_GPI7_EINT_WIDTH 1 /* IM_GPI7_EINT */
  677. #define WM8993_IM_WSEQ_EINT 0x0002 /* IM_WSEQ_EINT */
  678. #define WM8993_IM_WSEQ_EINT_MASK 0x0002 /* IM_WSEQ_EINT */
  679. #define WM8993_IM_WSEQ_EINT_SHIFT 1 /* IM_WSEQ_EINT */
  680. #define WM8993_IM_WSEQ_EINT_WIDTH 1 /* IM_WSEQ_EINT */
  681. #define WM8993_GPI7_ENA 0x0001 /* GPI7_ENA */
  682. #define WM8993_GPI7_ENA_MASK 0x0001 /* GPI7_ENA */
  683. #define WM8993_GPI7_ENA_SHIFT 0 /* GPI7_ENA */
  684. #define WM8993_GPI7_ENA_WIDTH 1 /* GPI7_ENA */
  685. /*
  686. * R23 (0x17) - GPIO_POL
  687. */
  688. #define WM8993_JD2_SC_POL 0x8000 /* JD2_SC_POL */
  689. #define WM8993_JD2_SC_POL_MASK 0x8000 /* JD2_SC_POL */
  690. #define WM8993_JD2_SC_POL_SHIFT 15 /* JD2_SC_POL */
  691. #define WM8993_JD2_SC_POL_WIDTH 1 /* JD2_SC_POL */
  692. #define WM8993_JD2_POL 0x4000 /* JD2_POL */
  693. #define WM8993_JD2_POL_MASK 0x4000 /* JD2_POL */
  694. #define WM8993_JD2_POL_SHIFT 14 /* JD2_POL */
  695. #define WM8993_JD2_POL_WIDTH 1 /* JD2_POL */
  696. #define WM8993_WSEQ_POL 0x2000 /* WSEQ_POL */
  697. #define WM8993_WSEQ_POL_MASK 0x2000 /* WSEQ_POL */
  698. #define WM8993_WSEQ_POL_SHIFT 13 /* WSEQ_POL */
  699. #define WM8993_WSEQ_POL_WIDTH 1 /* WSEQ_POL */
  700. #define WM8993_IRQ_POL 0x1000 /* IRQ_POL */
  701. #define WM8993_IRQ_POL_MASK 0x1000 /* IRQ_POL */
  702. #define WM8993_IRQ_POL_SHIFT 12 /* IRQ_POL */
  703. #define WM8993_IRQ_POL_WIDTH 1 /* IRQ_POL */
  704. #define WM8993_TEMPOK_POL 0x0800 /* TEMPOK_POL */
  705. #define WM8993_TEMPOK_POL_MASK 0x0800 /* TEMPOK_POL */
  706. #define WM8993_TEMPOK_POL_SHIFT 11 /* TEMPOK_POL */
  707. #define WM8993_TEMPOK_POL_WIDTH 1 /* TEMPOK_POL */
  708. #define WM8993_JD1_SC_POL 0x0400 /* JD1_SC_POL */
  709. #define WM8993_JD1_SC_POL_MASK 0x0400 /* JD1_SC_POL */
  710. #define WM8993_JD1_SC_POL_SHIFT 10 /* JD1_SC_POL */
  711. #define WM8993_JD1_SC_POL_WIDTH 1 /* JD1_SC_POL */
  712. #define WM8993_JD1_POL 0x0200 /* JD1_POL */
  713. #define WM8993_JD1_POL_MASK 0x0200 /* JD1_POL */
  714. #define WM8993_JD1_POL_SHIFT 9 /* JD1_POL */
  715. #define WM8993_JD1_POL_WIDTH 1 /* JD1_POL */
  716. #define WM8993_FLL_LOCK_POL 0x0100 /* FLL_LOCK_POL */
  717. #define WM8993_FLL_LOCK_POL_MASK 0x0100 /* FLL_LOCK_POL */
  718. #define WM8993_FLL_LOCK_POL_SHIFT 8 /* FLL_LOCK_POL */
  719. #define WM8993_FLL_LOCK_POL_WIDTH 1 /* FLL_LOCK_POL */
  720. #define WM8993_GPI8_POL 0x0080 /* GPI8_POL */
  721. #define WM8993_GPI8_POL_MASK 0x0080 /* GPI8_POL */
  722. #define WM8993_GPI8_POL_SHIFT 7 /* GPI8_POL */
  723. #define WM8993_GPI8_POL_WIDTH 1 /* GPI8_POL */
  724. #define WM8993_GPI7_POL 0x0040 /* GPI7_POL */
  725. #define WM8993_GPI7_POL_MASK 0x0040 /* GPI7_POL */
  726. #define WM8993_GPI7_POL_SHIFT 6 /* GPI7_POL */
  727. #define WM8993_GPI7_POL_WIDTH 1 /* GPI7_POL */
  728. #define WM8993_GPIO1_POL 0x0001 /* GPIO1_POL */
  729. #define WM8993_GPIO1_POL_MASK 0x0001 /* GPIO1_POL */
  730. #define WM8993_GPIO1_POL_SHIFT 0 /* GPIO1_POL */
  731. #define WM8993_GPIO1_POL_WIDTH 1 /* GPIO1_POL */
  732. /*
  733. * R24 (0x18) - Left Line Input 1&2 Volume
  734. */
  735. #define WM8993_IN1_VU 0x0100 /* IN1_VU */
  736. #define WM8993_IN1_VU_MASK 0x0100 /* IN1_VU */
  737. #define WM8993_IN1_VU_SHIFT 8 /* IN1_VU */
  738. #define WM8993_IN1_VU_WIDTH 1 /* IN1_VU */
  739. #define WM8993_IN1L_MUTE 0x0080 /* IN1L_MUTE */
  740. #define WM8993_IN1L_MUTE_MASK 0x0080 /* IN1L_MUTE */
  741. #define WM8993_IN1L_MUTE_SHIFT 7 /* IN1L_MUTE */
  742. #define WM8993_IN1L_MUTE_WIDTH 1 /* IN1L_MUTE */
  743. #define WM8993_IN1L_ZC 0x0040 /* IN1L_ZC */
  744. #define WM8993_IN1L_ZC_MASK 0x0040 /* IN1L_ZC */
  745. #define WM8993_IN1L_ZC_SHIFT 6 /* IN1L_ZC */
  746. #define WM8993_IN1L_ZC_WIDTH 1 /* IN1L_ZC */
  747. #define WM8993_IN1L_VOL_MASK 0x001F /* IN1L_VOL - [4:0] */
  748. #define WM8993_IN1L_VOL_SHIFT 0 /* IN1L_VOL - [4:0] */
  749. #define WM8993_IN1L_VOL_WIDTH 5 /* IN1L_VOL - [4:0] */
  750. /*
  751. * R25 (0x19) - Left Line Input 3&4 Volume
  752. */
  753. #define WM8993_IN2_VU 0x0100 /* IN2_VU */
  754. #define WM8993_IN2_VU_MASK 0x0100 /* IN2_VU */
  755. #define WM8993_IN2_VU_SHIFT 8 /* IN2_VU */
  756. #define WM8993_IN2_VU_WIDTH 1 /* IN2_VU */
  757. #define WM8993_IN2L_MUTE 0x0080 /* IN2L_MUTE */
  758. #define WM8993_IN2L_MUTE_MASK 0x0080 /* IN2L_MUTE */
  759. #define WM8993_IN2L_MUTE_SHIFT 7 /* IN2L_MUTE */
  760. #define WM8993_IN2L_MUTE_WIDTH 1 /* IN2L_MUTE */
  761. #define WM8993_IN2L_ZC 0x0040 /* IN2L_ZC */
  762. #define WM8993_IN2L_ZC_MASK 0x0040 /* IN2L_ZC */
  763. #define WM8993_IN2L_ZC_SHIFT 6 /* IN2L_ZC */
  764. #define WM8993_IN2L_ZC_WIDTH 1 /* IN2L_ZC */
  765. #define WM8993_IN2L_VOL_MASK 0x001F /* IN2L_VOL - [4:0] */
  766. #define WM8993_IN2L_VOL_SHIFT 0 /* IN2L_VOL - [4:0] */
  767. #define WM8993_IN2L_VOL_WIDTH 5 /* IN2L_VOL - [4:0] */
  768. /*
  769. * R26 (0x1A) - Right Line Input 1&2 Volume
  770. */
  771. #define WM8993_IN1_VU 0x0100 /* IN1_VU */
  772. #define WM8993_IN1_VU_MASK 0x0100 /* IN1_VU */
  773. #define WM8993_IN1_VU_SHIFT 8 /* IN1_VU */
  774. #define WM8993_IN1_VU_WIDTH 1 /* IN1_VU */
  775. #define WM8993_IN1R_MUTE 0x0080 /* IN1R_MUTE */
  776. #define WM8993_IN1R_MUTE_MASK 0x0080 /* IN1R_MUTE */
  777. #define WM8993_IN1R_MUTE_SHIFT 7 /* IN1R_MUTE */
  778. #define WM8993_IN1R_MUTE_WIDTH 1 /* IN1R_MUTE */
  779. #define WM8993_IN1R_ZC 0x0040 /* IN1R_ZC */
  780. #define WM8993_IN1R_ZC_MASK 0x0040 /* IN1R_ZC */
  781. #define WM8993_IN1R_ZC_SHIFT 6 /* IN1R_ZC */
  782. #define WM8993_IN1R_ZC_WIDTH 1 /* IN1R_ZC */
  783. #define WM8993_IN1R_VOL_MASK