Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * ALSA SoC WM9090 driver
0004  *
0005  * Copyright 2009 Wolfson Microelectronics
0006  *
0007  * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
0008  */
0009 
0010 #ifndef __WM9090_H
0011 #define __WM9090_H
0012 
0013 /*
0014  * Register values.
0015  */
0016 #define WM9090_SOFTWARE_RESET                   0x00
0017 #define WM9090_POWER_MANAGEMENT_1               0x01
0018 #define WM9090_POWER_MANAGEMENT_2               0x02
0019 #define WM9090_POWER_MANAGEMENT_3               0x03
0020 #define WM9090_CLOCKING_1                       0x06
0021 #define WM9090_IN1_LINE_CONTROL                 0x16
0022 #define WM9090_IN2_LINE_CONTROL                 0x17
0023 #define WM9090_IN1_LINE_INPUT_A_VOLUME          0x18
0024 #define WM9090_IN1_LINE_INPUT_B_VOLUME          0x19
0025 #define WM9090_IN2_LINE_INPUT_A_VOLUME          0x1A
0026 #define WM9090_IN2_LINE_INPUT_B_VOLUME          0x1B
0027 #define WM9090_LEFT_OUTPUT_VOLUME               0x1C
0028 #define WM9090_RIGHT_OUTPUT_VOLUME              0x1D
0029 #define WM9090_SPKMIXL_ATTENUATION              0x22
0030 #define WM9090_SPKOUT_MIXERS                    0x24
0031 #define WM9090_CLASSD3                          0x25
0032 #define WM9090_SPEAKER_VOLUME_LEFT              0x26
0033 #define WM9090_OUTPUT_MIXER1                    0x2D
0034 #define WM9090_OUTPUT_MIXER2                    0x2E
0035 #define WM9090_OUTPUT_MIXER3                    0x2F
0036 #define WM9090_OUTPUT_MIXER4                    0x30
0037 #define WM9090_SPEAKER_MIXER                    0x36
0038 #define WM9090_ANTIPOP2                         0x39
0039 #define WM9090_WRITE_SEQUENCER_0                0x46
0040 #define WM9090_WRITE_SEQUENCER_1                0x47
0041 #define WM9090_WRITE_SEQUENCER_2                0x48
0042 #define WM9090_WRITE_SEQUENCER_3                0x49
0043 #define WM9090_WRITE_SEQUENCER_4                0x4A
0044 #define WM9090_WRITE_SEQUENCER_5                0x4B
0045 #define WM9090_CHARGE_PUMP_1                    0x4C
0046 #define WM9090_DC_SERVO_0                       0x54
0047 #define WM9090_DC_SERVO_1                       0x55
0048 #define WM9090_DC_SERVO_3                       0x57
0049 #define WM9090_DC_SERVO_READBACK_0              0x58
0050 #define WM9090_DC_SERVO_READBACK_1              0x59
0051 #define WM9090_DC_SERVO_READBACK_2              0x5A
0052 #define WM9090_ANALOGUE_HP_0                    0x60
0053 #define WM9090_AGC_CONTROL_0                    0x62
0054 #define WM9090_AGC_CONTROL_1                    0x63
0055 #define WM9090_AGC_CONTROL_2                    0x64
0056 
0057 #define WM9090_REGISTER_COUNT                   40
0058 #define WM9090_MAX_REGISTER                     0x64
0059 
0060 /*
0061  * Field Definitions.
0062  */
0063 
0064 /*
0065  * R0 (0x00) - Software Reset
0066  */
0067 #define WM9090_SW_RESET_MASK                    0xFFFF  /* SW_RESET - [15:0] */
0068 #define WM9090_SW_RESET_SHIFT                        0  /* SW_RESET - [15:0] */
0069 #define WM9090_SW_RESET_WIDTH                       16  /* SW_RESET - [15:0] */
0070 
0071 /*
0072  * R1 (0x01) - Power Management (1)
0073  */
0074 #define WM9090_SPKOUTL_ENA                      0x1000  /* SPKOUTL_ENA */
0075 #define WM9090_SPKOUTL_ENA_MASK                 0x1000  /* SPKOUTL_ENA */
0076 #define WM9090_SPKOUTL_ENA_SHIFT                    12  /* SPKOUTL_ENA */
0077 #define WM9090_SPKOUTL_ENA_WIDTH                     1  /* SPKOUTL_ENA */
0078 #define WM9090_HPOUT1L_ENA                      0x0200  /* HPOUT1L_ENA */
0079 #define WM9090_HPOUT1L_ENA_MASK                 0x0200  /* HPOUT1L_ENA */
0080 #define WM9090_HPOUT1L_ENA_SHIFT                     9  /* HPOUT1L_ENA */
0081 #define WM9090_HPOUT1L_ENA_WIDTH                     1  /* HPOUT1L_ENA */
0082 #define WM9090_HPOUT1R_ENA                      0x0100  /* HPOUT1R_ENA */
0083 #define WM9090_HPOUT1R_ENA_MASK                 0x0100  /* HPOUT1R_ENA */
0084 #define WM9090_HPOUT1R_ENA_SHIFT                     8  /* HPOUT1R_ENA */
0085 #define WM9090_HPOUT1R_ENA_WIDTH                     1  /* HPOUT1R_ENA */
0086 #define WM9090_OSC_ENA                          0x0008  /* OSC_ENA */
0087 #define WM9090_OSC_ENA_MASK                     0x0008  /* OSC_ENA */
0088 #define WM9090_OSC_ENA_SHIFT                         3  /* OSC_ENA */
0089 #define WM9090_OSC_ENA_WIDTH                         1  /* OSC_ENA */
0090 #define WM9090_VMID_RES_MASK                    0x0006  /* VMID_RES - [2:1] */
0091 #define WM9090_VMID_RES_SHIFT                        1  /* VMID_RES - [2:1] */
0092 #define WM9090_VMID_RES_WIDTH                        2  /* VMID_RES - [2:1] */
0093 #define WM9090_BIAS_ENA                         0x0001  /* BIAS_ENA */
0094 #define WM9090_BIAS_ENA_MASK                    0x0001  /* BIAS_ENA */
0095 #define WM9090_BIAS_ENA_SHIFT                        0  /* BIAS_ENA */
0096 #define WM9090_BIAS_ENA_WIDTH                        1  /* BIAS_ENA */
0097 
0098 /*
0099  * R2 (0x02) - Power Management (2)
0100  */
0101 #define WM9090_TSHUT                            0x8000  /* TSHUT */
0102 #define WM9090_TSHUT_MASK                       0x8000  /* TSHUT */
0103 #define WM9090_TSHUT_SHIFT                          15  /* TSHUT */
0104 #define WM9090_TSHUT_WIDTH                           1  /* TSHUT */
0105 #define WM9090_TSHUT_ENA                        0x4000  /* TSHUT_ENA */
0106 #define WM9090_TSHUT_ENA_MASK                   0x4000  /* TSHUT_ENA */
0107 #define WM9090_TSHUT_ENA_SHIFT                      14  /* TSHUT_ENA */
0108 #define WM9090_TSHUT_ENA_WIDTH                       1  /* TSHUT_ENA */
0109 #define WM9090_TSHUT_OPDIS                      0x2000  /* TSHUT_OPDIS */
0110 #define WM9090_TSHUT_OPDIS_MASK                 0x2000  /* TSHUT_OPDIS */
0111 #define WM9090_TSHUT_OPDIS_SHIFT                    13  /* TSHUT_OPDIS */
0112 #define WM9090_TSHUT_OPDIS_WIDTH                     1  /* TSHUT_OPDIS */
0113 #define WM9090_IN1A_ENA                         0x0080  /* IN1A_ENA */
0114 #define WM9090_IN1A_ENA_MASK                    0x0080  /* IN1A_ENA */
0115 #define WM9090_IN1A_ENA_SHIFT                        7  /* IN1A_ENA */
0116 #define WM9090_IN1A_ENA_WIDTH                        1  /* IN1A_ENA */
0117 #define WM9090_IN1B_ENA                         0x0040  /* IN1B_ENA */
0118 #define WM9090_IN1B_ENA_MASK                    0x0040  /* IN1B_ENA */
0119 #define WM9090_IN1B_ENA_SHIFT                        6  /* IN1B_ENA */
0120 #define WM9090_IN1B_ENA_WIDTH                        1  /* IN1B_ENA */
0121 #define WM9090_IN2A_ENA                         0x0020  /* IN2A_ENA */
0122 #define WM9090_IN2A_ENA_MASK                    0x0020  /* IN2A_ENA */
0123 #define WM9090_IN2A_ENA_SHIFT                        5  /* IN2A_ENA */
0124 #define WM9090_IN2A_ENA_WIDTH                        1  /* IN2A_ENA */
0125 #define WM9090_IN2B_ENA                         0x0010  /* IN2B_ENA */
0126 #define WM9090_IN2B_ENA_MASK                    0x0010  /* IN2B_ENA */
0127 #define WM9090_IN2B_ENA_SHIFT                        4  /* IN2B_ENA */
0128 #define WM9090_IN2B_ENA_WIDTH                        1  /* IN2B_ENA */
0129 
0130 /*
0131  * R3 (0x03) - Power Management (3)
0132  */
0133 #define WM9090_AGC_ENA                          0x4000  /* AGC_ENA */
0134 #define WM9090_AGC_ENA_MASK                     0x4000  /* AGC_ENA */
0135 #define WM9090_AGC_ENA_SHIFT                        14  /* AGC_ENA */
0136 #define WM9090_AGC_ENA_WIDTH                         1  /* AGC_ENA */
0137 #define WM9090_SPKLVOL_ENA                      0x0100  /* SPKLVOL_ENA */
0138 #define WM9090_SPKLVOL_ENA_MASK                 0x0100  /* SPKLVOL_ENA */
0139 #define WM9090_SPKLVOL_ENA_SHIFT                     8  /* SPKLVOL_ENA */
0140 #define WM9090_SPKLVOL_ENA_WIDTH                     1  /* SPKLVOL_ENA */
0141 #define WM9090_MIXOUTL_ENA                      0x0020  /* MIXOUTL_ENA */
0142 #define WM9090_MIXOUTL_ENA_MASK                 0x0020  /* MIXOUTL_ENA */
0143 #define WM9090_MIXOUTL_ENA_SHIFT                     5  /* MIXOUTL_ENA */
0144 #define WM9090_MIXOUTL_ENA_WIDTH                     1  /* MIXOUTL_ENA */
0145 #define WM9090_MIXOUTR_ENA                      0x0010  /* MIXOUTR_ENA */
0146 #define WM9090_MIXOUTR_ENA_MASK                 0x0010  /* MIXOUTR_ENA */
0147 #define WM9090_MIXOUTR_ENA_SHIFT                     4  /* MIXOUTR_ENA */
0148 #define WM9090_MIXOUTR_ENA_WIDTH                     1  /* MIXOUTR_ENA */
0149 #define WM9090_SPKMIX_ENA                       0x0008  /* SPKMIX_ENA */
0150 #define WM9090_SPKMIX_ENA_MASK                  0x0008  /* SPKMIX_ENA */
0151 #define WM9090_SPKMIX_ENA_SHIFT                      3  /* SPKMIX_ENA */
0152 #define WM9090_SPKMIX_ENA_WIDTH                      1  /* SPKMIX_ENA */
0153 
0154 /*
0155  * R6 (0x06) - Clocking 1
0156  */
0157 #define WM9090_TOCLK_RATE                       0x8000  /* TOCLK_RATE */
0158 #define WM9090_TOCLK_RATE_MASK                  0x8000  /* TOCLK_RATE */
0159 #define WM9090_TOCLK_RATE_SHIFT                     15  /* TOCLK_RATE */
0160 #define WM9090_TOCLK_RATE_WIDTH                      1  /* TOCLK_RATE */
0161 #define WM9090_TOCLK_ENA                        0x4000  /* TOCLK_ENA */
0162 #define WM9090_TOCLK_ENA_MASK                   0x4000  /* TOCLK_ENA */
0163 #define WM9090_TOCLK_ENA_SHIFT                      14  /* TOCLK_ENA */
0164 #define WM9090_TOCLK_ENA_WIDTH                       1  /* TOCLK_ENA */
0165 
0166 /*
0167  * R22 (0x16) - IN1 Line Control
0168  */
0169 #define WM9090_IN1_DIFF                         0x0002  /* IN1_DIFF */
0170 #define WM9090_IN1_DIFF_MASK                    0x0002  /* IN1_DIFF */
0171 #define WM9090_IN1_DIFF_SHIFT                        1  /* IN1_DIFF */
0172 #define WM9090_IN1_DIFF_WIDTH                        1  /* IN1_DIFF */
0173 #define WM9090_IN1_CLAMP                        0x0001  /* IN1_CLAMP */
0174 #define WM9090_IN1_CLAMP_MASK                   0x0001  /* IN1_CLAMP */
0175 #define WM9090_IN1_CLAMP_SHIFT                       0  /* IN1_CLAMP */
0176 #define WM9090_IN1_CLAMP_WIDTH                       1  /* IN1_CLAMP */
0177 
0178 /*
0179  * R23 (0x17) - IN2 Line Control
0180  */
0181 #define WM9090_IN2_DIFF                         0x0002  /* IN2_DIFF */
0182 #define WM9090_IN2_DIFF_MASK                    0x0002  /* IN2_DIFF */
0183 #define WM9090_IN2_DIFF_SHIFT                        1  /* IN2_DIFF */
0184 #define WM9090_IN2_DIFF_WIDTH                        1  /* IN2_DIFF */
0185 #define WM9090_IN2_CLAMP                        0x0001  /* IN2_CLAMP */
0186 #define WM9090_IN2_CLAMP_MASK                   0x0001  /* IN2_CLAMP */
0187 #define WM9090_IN2_CLAMP_SHIFT                       0  /* IN2_CLAMP */
0188 #define WM9090_IN2_CLAMP_WIDTH                       1  /* IN2_CLAMP */
0189 
0190 /*
0191  * R24 (0x18) - IN1 Line Input A Volume
0192  */
0193 #define WM9090_IN1_VU                           0x0100  /* IN1_VU */
0194 #define WM9090_IN1_VU_MASK                      0x0100  /* IN1_VU */
0195 #define WM9090_IN1_VU_SHIFT                          8  /* IN1_VU */
0196 #define WM9090_IN1_VU_WIDTH                          1  /* IN1_VU */
0197 #define WM9090_IN1A_MUTE                        0x0080  /* IN1A_MUTE */
0198 #define WM9090_IN1A_MUTE_MASK                   0x0080  /* IN1A_MUTE */
0199 #define WM9090_IN1A_MUTE_SHIFT                       7  /* IN1A_MUTE */
0200 #define WM9090_IN1A_MUTE_WIDTH                       1  /* IN1A_MUTE */
0201 #define WM9090_IN1A_ZC                          0x0040  /* IN1A_ZC */
0202 #define WM9090_IN1A_ZC_MASK                     0x0040  /* IN1A_ZC */
0203 #define WM9090_IN1A_ZC_SHIFT                         6  /* IN1A_ZC */
0204 #define WM9090_IN1A_ZC_WIDTH                         1  /* IN1A_ZC */
0205 #define WM9090_IN1A_VOL_MASK                    0x0007  /* IN1A_VOL - [2:0] */
0206 #define WM9090_IN1A_VOL_SHIFT                        0  /* IN1A_VOL - [2:0] */
0207 #define WM9090_IN1A_VOL_WIDTH                        3  /* IN1A_VOL - [2:0] */
0208 
0209 /*
0210  * R25 (0x19) - IN1  Line Input B Volume
0211  */
0212 #define WM9090_IN1_VU                           0x0100  /* IN1_VU */
0213 #define WM9090_IN1_VU_MASK                      0x0100  /* IN1_VU */
0214 #define WM9090_IN1_VU_SHIFT                          8  /* IN1_VU */
0215 #define WM9090_IN1_VU_WIDTH                          1  /* IN1_VU */
0216 #define WM9090_IN1B_MUTE                        0x0080  /* IN1B_MUTE */
0217 #define WM9090_IN1B_MUTE_MASK                   0x0080  /* IN1B_MUTE */
0218 #define WM9090_IN1B_MUTE_SHIFT                       7  /* IN1B_MUTE */
0219 #define WM9090_IN1B_MUTE_WIDTH                       1  /* IN1B_MUTE */
0220 #define WM9090_IN1B_ZC                          0x0040  /* IN1B_ZC */
0221 #define WM9090_IN1B_ZC_MASK                     0x0040  /* IN1B_ZC */
0222 #define WM9090_IN1B_ZC_SHIFT                         6  /* IN1B_ZC */
0223 #define WM9090_IN1B_ZC_WIDTH                         1  /* IN1B_ZC */
0224 #define WM9090_IN1B_VOL_MASK                    0x0007  /* IN1B_VOL - [2:0] */
0225 #define WM9090_IN1B_VOL_SHIFT                        0  /* IN1B_VOL - [2:0] */
0226 #define WM9090_IN1B_VOL_WIDTH                        3  /* IN1B_VOL - [2:0] */
0227 
0228 /*
0229  * R26 (0x1A) - IN2 Line Input A Volume
0230  */
0231 #define WM9090_IN2_VU                           0x0100  /* IN2_VU */
0232 #define WM9090_IN2_VU_MASK                      0x0100  /* IN2_VU */
0233 #define WM9090_IN2_VU_SHIFT                          8  /* IN2_VU */
0234 #define WM9090_IN2_VU_WIDTH                          1  /* IN2_VU */
0235 #define WM9090_IN2A_MUTE                        0x0080  /* IN2A_MUTE */
0236 #define WM9090_IN2A_MUTE_MASK                   0x0080  /* IN2A_MUTE */
0237 #define WM9090_IN2A_MUTE_SHIFT                       7  /* IN2A_MUTE */
0238 #define WM9090_IN2A_MUTE_WIDTH                       1  /* IN2A_MUTE */
0239 #define WM9090_IN2A_ZC                          0x0040  /* IN2A_ZC */
0240 #define WM9090_IN2A_ZC_MASK                     0x0040  /* IN2A_ZC */
0241 #define WM9090_IN2A_ZC_SHIFT                         6  /* IN2A_ZC */
0242 #define WM9090_IN2A_ZC_WIDTH                         1  /* IN2A_ZC */
0243 #define WM9090_IN2A_VOL_MASK                    0x0007  /* IN2A_VOL - [2:0] */
0244 #define WM9090_IN2A_VOL_SHIFT                        0  /* IN2A_VOL - [2:0] */
0245 #define WM9090_IN2A_VOL_WIDTH                        3  /* IN2A_VOL - [2:0] */
0246 
0247 /*
0248  * R27 (0x1B) - IN2 Line Input B Volume
0249  */
0250 #define WM9090_IN2_VU                           0x0100  /* IN2_VU */
0251 #define WM9090_IN2_VU_MASK                      0x0100  /* IN2_VU */
0252 #define WM9090_IN2_VU_SHIFT                          8  /* IN2_VU */
0253 #define WM9090_IN2_VU_WIDTH                          1  /* IN2_VU */
0254 #define WM9090_IN2B_MUTE                        0x0080  /* IN2B_MUTE */
0255 #define WM9090_IN2B_MUTE_MASK                   0x0080  /* IN2B_MUTE */
0256 #define WM9090_IN2B_MUTE_SHIFT                       7  /* IN2B_MUTE */
0257 #define WM9090_IN2B_MUTE_WIDTH                       1  /* IN2B_MUTE */
0258 #define WM9090_IN2B_ZC                          0x0040  /* IN2B_ZC */
0259 #define WM9090_IN2B_ZC_MASK                     0x0040  /* IN2B_ZC */
0260 #define WM9090_IN2B_ZC_SHIFT                         6  /* IN2B_ZC */
0261 #define WM9090_IN2B_ZC_WIDTH                         1  /* IN2B_ZC */
0262 #define WM9090_IN2B_VOL_MASK                    0x0007  /* IN2B_VOL - [2:0] */
0263 #define WM9090_IN2B_VOL_SHIFT                        0  /* IN2B_VOL - [2:0] */
0264 #define WM9090_IN2B_VOL_WIDTH                        3  /* IN2B_VOL - [2:0] */
0265 
0266 /*
0267  * R28 (0x1C) - Left Output Volume
0268  */
0269 #define WM9090_HPOUT1_VU                        0x0100  /* HPOUT1_VU */
0270 #define WM9090_HPOUT1_VU_MASK                   0x0100  /* HPOUT1_VU */
0271 #define WM9090_HPOUT1_VU_SHIFT                       8  /* HPOUT1_VU */
0272 #define WM9090_HPOUT1_VU_WIDTH                       1  /* HPOUT1_VU */
0273 #define WM9090_HPOUT1L_ZC                       0x0080  /* HPOUT1L_ZC */
0274 #define WM9090_HPOUT1L_ZC_MASK                  0x0080  /* HPOUT1L_ZC */
0275 #define WM9090_HPOUT1L_ZC_SHIFT                      7  /* HPOUT1L_ZC */
0276 #define WM9090_HPOUT1L_ZC_WIDTH                      1  /* HPOUT1L_ZC */
0277 #define WM9090_HPOUT1L_MUTE                     0x0040  /* HPOUT1L_MUTE */
0278 #define WM9090_HPOUT1L_MUTE_MASK                0x0040  /* HPOUT1L_MUTE */
0279 #define WM9090_HPOUT1L_MUTE_SHIFT                    6  /* HPOUT1L_MUTE */
0280 #define WM9090_HPOUT1L_MUTE_WIDTH                    1  /* HPOUT1L_MUTE */
0281 #define WM9090_HPOUT1L_VOL_MASK                 0x003F  /* HPOUT1L_VOL - [5:0] */
0282 #define WM9090_HPOUT1L_VOL_SHIFT                     0  /* HPOUT1L_VOL - [5:0] */
0283 #define WM9090_HPOUT1L_VOL_WIDTH                     6  /* HPOUT1L_VOL - [5:0] */
0284 
0285 /*
0286  * R29 (0x1D) - Right Output Volume
0287  */
0288 #define WM9090_HPOUT1_VU                        0x0100  /* HPOUT1_VU */
0289 #define WM9090_HPOUT1_VU_MASK                   0x0100  /* HPOUT1_VU */
0290 #define WM9090_HPOUT1_VU_SHIFT                       8  /* HPOUT1_VU */
0291 #define WM9090_HPOUT1_VU_WIDTH                       1  /* HPOUT1_VU */
0292 #define WM9090_HPOUT1R_ZC                       0x0080  /* HPOUT1R_ZC */
0293 #define WM9090_HPOUT1R_ZC_MASK                  0x0080  /* HPOUT1R_ZC */
0294 #define WM9090_HPOUT1R_ZC_SHIFT                      7  /* HPOUT1R_ZC */
0295 #define WM9090_HPOUT1R_ZC_WIDTH                      1  /* HPOUT1R_ZC */
0296 #define WM9090_HPOUT1R_MUTE                     0x0040  /* HPOUT1R_MUTE */
0297 #define WM9090_HPOUT1R_MUTE_MASK                0x0040  /* HPOUT1R_MUTE */
0298 #define WM9090_HPOUT1R_MUTE_SHIFT                    6  /* HPOUT1R_MUTE */
0299 #define WM9090_HPOUT1R_MUTE_WIDTH                    1  /* HPOUT1R_MUTE */
0300 #define WM9090_HPOUT1R_VOL_MASK                 0x003F  /* HPOUT1R_VOL - [5:0] */
0301 #define WM9090_HPOUT1R_VOL_SHIFT                     0  /* HPOUT1R_VOL - [5:0] */
0302 #define WM9090_HPOUT1R_VOL_WIDTH                     6  /* HPOUT1R_VOL - [5:0] */
0303 
0304 /*
0305  * R34 (0x22) - SPKMIXL Attenuation
0306  */
0307 #define WM9090_SPKMIX_MUTE                      0x0100  /* SPKMIX_MUTE */
0308 #define WM9090_SPKMIX_MUTE_MASK                 0x0100  /* SPKMIX_MUTE */
0309 #define WM9090_SPKMIX_MUTE_SHIFT                     8  /* SPKMIX_MUTE */
0310 #define WM9090_SPKMIX_MUTE_WIDTH                     1  /* SPKMIX_MUTE */
0311 #define WM9090_IN1A_SPKMIX_VOL_MASK             0x00C0  /* IN1A_SPKMIX_VOL - [7:6] */
0312 #define WM9090_IN1A_SPKMIX_VOL_SHIFT                 6  /* IN1A_SPKMIX_VOL - [7:6] */
0313 #define WM9090_IN1A_SPKMIX_VOL_WIDTH                 2  /* IN1A_SPKMIX_VOL - [7:6] */
0314 #define WM9090_IN1B_SPKMIX_VOL_MASK             0x0030  /* IN1B_SPKMIX_VOL - [5:4] */
0315 #define WM9090_IN1B_SPKMIX_VOL_SHIFT                 4  /* IN1B_SPKMIX_VOL - [5:4] */
0316 #define WM9090_IN1B_SPKMIX_VOL_WIDTH                 2  /* IN1B_SPKMIX_VOL - [5:4] */
0317 #define WM9090_IN2A_SPKMIX_VOL_MASK             0x000C  /* IN2A_SPKMIX_VOL - [3:2] */
0318 #define WM9090_IN2A_SPKMIX_VOL_SHIFT                 2  /* IN2A_SPKMIX_VOL - [3:2] */
0319 #define WM9090_IN2A_SPKMIX_VOL_WIDTH                 2  /* IN2A_SPKMIX_VOL - [3:2] */
0320 #define WM9090_IN2B_SPKMIX_VOL_MASK             0x0003  /* IN2B_SPKMIX_VOL - [1:0] */
0321 #define WM9090_IN2B_SPKMIX_VOL_SHIFT                 0  /* IN2B_SPKMIX_VOL - [1:0] */
0322 #define WM9090_IN2B_SPKMIX_VOL_WIDTH                 2  /* IN2B_SPKMIX_VOL - [1:0] */
0323 
0324 /*
0325  * R36 (0x24) - SPKOUT Mixers
0326  */
0327 #define WM9090_SPKMIXL_TO_SPKOUTL               0x0010  /* SPKMIXL_TO_SPKOUTL */
0328 #define WM9090_SPKMIXL_TO_SPKOUTL_MASK          0x0010  /* SPKMIXL_TO_SPKOUTL */
0329 #define WM9090_SPKMIXL_TO_SPKOUTL_SHIFT              4  /* SPKMIXL_TO_SPKOUTL */
0330 #define WM9090_SPKMIXL_TO_SPKOUTL_WIDTH              1  /* SPKMIXL_TO_SPKOUTL */
0331 
0332 /*
0333  * R37 (0x25) - ClassD3
0334  */
0335 #define WM9090_SPKOUTL_BOOST_MASK               0x0038  /* SPKOUTL_BOOST - [5:3] */
0336 #define WM9090_SPKOUTL_BOOST_SHIFT                   3  /* SPKOUTL_BOOST - [5:3] */
0337 #define WM9090_SPKOUTL_BOOST_WIDTH                   3  /* SPKOUTL_BOOST - [5:3] */
0338 
0339 /*
0340  * R38 (0x26) - Speaker Volume Left
0341  */
0342 #define WM9090_SPKOUT_VU                        0x0100  /* SPKOUT_VU */
0343 #define WM9090_SPKOUT_VU_MASK                   0x0100  /* SPKOUT_VU */
0344 #define WM9090_SPKOUT_VU_SHIFT                       8  /* SPKOUT_VU */
0345 #define WM9090_SPKOUT_VU_WIDTH                       1  /* SPKOUT_VU */
0346 #define WM9090_SPKOUTL_ZC                       0x0080  /* SPKOUTL_ZC */
0347 #define WM9090_SPKOUTL_ZC_MASK                  0x0080  /* SPKOUTL_ZC */
0348 #define WM9090_SPKOUTL_ZC_SHIFT                      7  /* SPKOUTL_ZC */
0349 #define WM9090_SPKOUTL_ZC_WIDTH                      1  /* SPKOUTL_ZC */
0350 #define WM9090_SPKOUTL_MUTE                     0x0040  /* SPKOUTL_MUTE */
0351 #define WM9090_SPKOUTL_MUTE_MASK                0x0040  /* SPKOUTL_MUTE */
0352 #define WM9090_SPKOUTL_MUTE_SHIFT                    6  /* SPKOUTL_MUTE */
0353 #define WM9090_SPKOUTL_MUTE_WIDTH                    1  /* SPKOUTL_MUTE */
0354 #define WM9090_SPKOUTL_VOL_MASK                 0x003F  /* SPKOUTL_VOL - [5:0] */
0355 #define WM9090_SPKOUTL_VOL_SHIFT                     0  /* SPKOUTL_VOL - [5:0] */
0356 #define WM9090_SPKOUTL_VOL_WIDTH                     6  /* SPKOUTL_VOL - [5:0] */
0357 
0358 /*
0359  * R45 (0x2D) - Output Mixer1
0360  */
0361 #define WM9090_IN1A_TO_MIXOUTL                  0x0040  /* IN1A_TO_MIXOUTL */
0362 #define WM9090_IN1A_TO_MIXOUTL_MASK             0x0040  /* IN1A_TO_MIXOUTL */
0363 #define WM9090_IN1A_TO_MIXOUTL_SHIFT                 6  /* IN1A_TO_MIXOUTL */
0364 #define WM9090_IN1A_TO_MIXOUTL_WIDTH                 1  /* IN1A_TO_MIXOUTL */
0365 #define WM9090_IN2A_TO_MIXOUTL                  0x0004  /* IN2A_TO_MIXOUTL */
0366 #define WM9090_IN2A_TO_MIXOUTL_MASK             0x0004  /* IN2A_TO_MIXOUTL */
0367 #define WM9090_IN2A_TO_MIXOUTL_SHIFT                 2  /* IN2A_TO_MIXOUTL */
0368 #define WM9090_IN2A_TO_MIXOUTL_WIDTH                 1  /* IN2A_TO_MIXOUTL */
0369 
0370 /*
0371  * R46 (0x2E) - Output Mixer2
0372  */
0373 #define WM9090_IN1A_TO_MIXOUTR                  0x0040  /* IN1A_TO_MIXOUTR */
0374 #define WM9090_IN1A_TO_MIXOUTR_MASK             0x0040  /* IN1A_TO_MIXOUTR */
0375 #define WM9090_IN1A_TO_MIXOUTR_SHIFT                 6  /* IN1A_TO_MIXOUTR */
0376 #define WM9090_IN1A_TO_MIXOUTR_WIDTH                 1  /* IN1A_TO_MIXOUTR */
0377 #define WM9090_IN1B_TO_MIXOUTR                  0x0010  /* IN1B_TO_MIXOUTR */
0378 #define WM9090_IN1B_TO_MIXOUTR_MASK             0x0010  /* IN1B_TO_MIXOUTR */
0379 #define WM9090_IN1B_TO_MIXOUTR_SHIFT                 4  /* IN1B_TO_MIXOUTR */
0380 #define WM9090_IN1B_TO_MIXOUTR_WIDTH                 1  /* IN1B_TO_MIXOUTR */
0381 #define WM9090_IN2A_TO_MIXOUTR                  0x0004  /* IN2A_TO_MIXOUTR */
0382 #define WM9090_IN2A_TO_MIXOUTR_MASK             0x0004  /* IN2A_TO_MIXOUTR */
0383 #define WM9090_IN2A_TO_MIXOUTR_SHIFT                 2  /* IN2A_TO_MIXOUTR */
0384 #define WM9090_IN2A_TO_MIXOUTR_WIDTH                 1  /* IN2A_TO_MIXOUTR */
0385 #define WM9090_IN2B_TO_MIXOUTR                  0x0001  /* IN2B_TO_MIXOUTR */
0386 #define WM9090_IN2B_TO_MIXOUTR_MASK             0x0001  /* IN2B_TO_MIXOUTR */
0387 #define WM9090_IN2B_TO_MIXOUTR_SHIFT                 0  /* IN2B_TO_MIXOUTR */
0388 #define WM9090_IN2B_TO_MIXOUTR_WIDTH                 1  /* IN2B_TO_MIXOUTR */
0389 
0390 /*
0391  * R47 (0x2F) - Output Mixer3
0392  */
0393 #define WM9090_MIXOUTL_MUTE                     0x0100  /* MIXOUTL_MUTE */
0394 #define WM9090_MIXOUTL_MUTE_MASK                0x0100  /* MIXOUTL_MUTE */
0395 #define WM9090_MIXOUTL_MUTE_SHIFT                    8  /* MIXOUTL_MUTE */
0396 #define WM9090_MIXOUTL_MUTE_WIDTH                    1  /* MIXOUTL_MUTE */
0397 #define WM9090_IN1A_MIXOUTL_VOL_MASK            0x00C0  /* IN1A_MIXOUTL_VOL - [7:6] */
0398 #define WM9090_IN1A_MIXOUTL_VOL_SHIFT                6  /* IN1A_MIXOUTL_VOL - [7:6] */
0399 #define WM9090_IN1A_MIXOUTL_VOL_WIDTH                2  /* IN1A_MIXOUTL_VOL - [7:6] */
0400 #define WM9090_IN2A_MIXOUTL_VOL_MASK            0x000C  /* IN2A_MIXOUTL_VOL - [3:2] */
0401 #define WM9090_IN2A_MIXOUTL_VOL_SHIFT                2  /* IN2A_MIXOUTL_VOL - [3:2] */
0402 #define WM9090_IN2A_MIXOUTL_VOL_WIDTH                2  /* IN2A_MIXOUTL_VOL - [3:2] */
0403 
0404 /*
0405  * R48 (0x30) - Output Mixer4
0406  */
0407 #define WM9090_MIXOUTR_MUTE                     0x0100  /* MIXOUTR_MUTE */
0408 #define WM9090_MIXOUTR_MUTE_MASK                0x0100  /* MIXOUTR_MUTE */
0409 #define WM9090_MIXOUTR_MUTE_SHIFT                    8  /* MIXOUTR_MUTE */
0410 #define WM9090_MIXOUTR_MUTE_WIDTH                    1  /* MIXOUTR_MUTE */
0411 #define WM9090_IN1A_MIXOUTR_VOL_MASK            0x00C0  /* IN1A_MIXOUTR_VOL - [7:6] */
0412 #define WM9090_IN1A_MIXOUTR_VOL_SHIFT                6  /* IN1A_MIXOUTR_VOL - [7:6] */
0413 #define WM9090_IN1A_MIXOUTR_VOL_WIDTH                2  /* IN1A_MIXOUTR_VOL - [7:6] */
0414 #define WM9090_IN1B_MIXOUTR_VOL_MASK            0x0030  /* IN1B_MIXOUTR_VOL - [5:4] */
0415 #define WM9090_IN1B_MIXOUTR_VOL_SHIFT                4  /* IN1B_MIXOUTR_VOL - [5:4] */
0416 #define WM9090_IN1B_MIXOUTR_VOL_WIDTH                2  /* IN1B_MIXOUTR_VOL - [5:4] */
0417 #define WM9090_IN2A_MIXOUTR_VOL_MASK            0x000C  /* IN2A_MIXOUTR_VOL - [3:2] */
0418 #define WM9090_IN2A_MIXOUTR_VOL_SHIFT                2  /* IN2A_MIXOUTR_VOL - [3:2] */
0419 #define WM9090_IN2A_MIXOUTR_VOL_WIDTH                2  /* IN2A_MIXOUTR_VOL - [3:2] */
0420 #define WM9090_IN2B_MIXOUTR_VOL_MASK            0x0003  /* IN2B_MIXOUTR_VOL - [1:0] */
0421 #define WM9090_IN2B_MIXOUTR_VOL_SHIFT                0  /* IN2B_MIXOUTR_VOL - [1:0] */
0422 #define WM9090_IN2B_MIXOUTR_VOL_WIDTH                2  /* IN2B_MIXOUTR_VOL - [1:0] */
0423 
0424 /*
0425  * R54 (0x36) - Speaker Mixer
0426  */
0427 #define WM9090_IN1A_TO_SPKMIX                   0x0040  /* IN1A_TO_SPKMIX */
0428 #define WM9090_IN1A_TO_SPKMIX_MASK              0x0040  /* IN1A_TO_SPKMIX */
0429 #define WM9090_IN1A_TO_SPKMIX_SHIFT                  6  /* IN1A_TO_SPKMIX */
0430 #define WM9090_IN1A_TO_SPKMIX_WIDTH                  1  /* IN1A_TO_SPKMIX */
0431 #define WM9090_IN1B_TO_SPKMIX                   0x0010  /* IN1B_TO_SPKMIX */
0432 #define WM9090_IN1B_TO_SPKMIX_MASK              0x0010  /* IN1B_TO_SPKMIX */
0433 #define WM9090_IN1B_TO_SPKMIX_SHIFT                  4  /* IN1B_TO_SPKMIX */
0434 #define WM9090_IN1B_TO_SPKMIX_WIDTH                  1  /* IN1B_TO_SPKMIX */
0435 #define WM9090_IN2A_TO_SPKMIX                   0x0004  /* IN2A_TO_SPKMIX */
0436 #define WM9090_IN2A_TO_SPKMIX_MASK              0x0004  /* IN2A_TO_SPKMIX */
0437 #define WM9090_IN2A_TO_SPKMIX_SHIFT                  2  /* IN2A_TO_SPKMIX */
0438 #define WM9090_IN2A_TO_SPKMIX_WIDTH                  1  /* IN2A_TO_SPKMIX */
0439 #define WM9090_IN2B_TO_SPKMIX                   0x0001  /* IN2B_TO_SPKMIX */
0440 #define WM9090_IN2B_TO_SPKMIX_MASK              0x0001  /* IN2B_TO_SPKMIX */
0441 #define WM9090_IN2B_TO_SPKMIX_SHIFT                  0  /* IN2B_TO_SPKMIX */
0442 #define WM9090_IN2B_TO_SPKMIX_WIDTH                  1  /* IN2B_TO_SPKMIX */
0443 
0444 /*
0445  * R57 (0x39) - AntiPOP2
0446  */
0447 #define WM9090_VMID_BUF_ENA                     0x0008  /* VMID_BUF_ENA */
0448 #define WM9090_VMID_BUF_ENA_MASK                0x0008  /* VMID_BUF_ENA */
0449 #define WM9090_VMID_BUF_ENA_SHIFT                    3  /* VMID_BUF_ENA */
0450 #define WM9090_VMID_BUF_ENA_WIDTH                    1  /* VMID_BUF_ENA */
0451 #define WM9090_VMID_ENA                         0x0001  /* VMID_ENA */
0452 #define WM9090_VMID_ENA_MASK                    0x0001  /* VMID_ENA */
0453 #define WM9090_VMID_ENA_SHIFT                        0  /* VMID_ENA */
0454 #define WM9090_VMID_ENA_WIDTH                        1  /* VMID_ENA */
0455 
0456 /*
0457  * R70 (0x46) - Write Sequencer 0
0458  */
0459 #define WM9090_WSEQ_ENA                         0x0100  /* WSEQ_ENA */
0460 #define WM9090_WSEQ_ENA_MASK                    0x0100  /* WSEQ_ENA */
0461 #define WM9090_WSEQ_ENA_SHIFT                        8  /* WSEQ_ENA */
0462 #define WM9090_WSEQ_ENA_WIDTH                        1  /* WSEQ_ENA */
0463 #define WM9090_WSEQ_WRITE_INDEX_MASK            0x000F  /* WSEQ_WRITE_INDEX - [3:0] */
0464 #define WM9090_WSEQ_WRITE_INDEX_SHIFT                0  /* WSEQ_WRITE_INDEX - [3:0] */
0465 #define WM9090_WSEQ_WRITE_INDEX_WIDTH                4  /* WSEQ_WRITE_INDEX - [3:0] */
0466 
0467 /*
0468  * R71 (0x47) - Write Sequencer 1
0469  */
0470 #define WM9090_WSEQ_DATA_WIDTH_MASK             0x7000  /* WSEQ_DATA_WIDTH - [14:12] */
0471 #define WM9090_WSEQ_DATA_WIDTH_SHIFT                12  /* WSEQ_DATA_WIDTH - [14:12] */
0472 #define WM9090_WSEQ_DATA_WIDTH_WIDTH                 3  /* WSEQ_DATA_WIDTH - [14:12] */
0473 #define WM9090_WSEQ_DATA_START_MASK             0x0F00  /* WSEQ_DATA_START - [11:8] */
0474 #define WM9090_WSEQ_DATA_START_SHIFT                 8  /* WSEQ_DATA_START - [11:8] */
0475 #define WM9090_WSEQ_DATA_START_WIDTH                 4  /* WSEQ_DATA_START - [11:8] */
0476 #define WM9090_WSEQ_ADDR_MASK                   0x00FF  /* WSEQ_ADDR - [7:0] */
0477 #define WM9090_WSEQ_ADDR_SHIFT                       0  /* WSEQ_ADDR - [7:0] */
0478 #define WM9090_WSEQ_ADDR_WIDTH                       8  /* WSEQ_ADDR - [7:0] */
0479 
0480 /*
0481  * R72 (0x48) - Write Sequencer 2
0482  */
0483 #define WM9090_WSEQ_EOS                         0x4000  /* WSEQ_EOS */
0484 #define WM9090_WSEQ_EOS_MASK                    0x4000  /* WSEQ_EOS */
0485 #define WM9090_WSEQ_EOS_SHIFT                       14  /* WSEQ_EOS */
0486 #define WM9090_WSEQ_EOS_WIDTH                        1  /* WSEQ_EOS */
0487 #define WM9090_WSEQ_DELAY_MASK                  0x0F00  /* WSEQ_DELAY - [11:8] */
0488 #define WM9090_WSEQ_DELAY_SHIFT                      8  /* WSEQ_DELAY - [11:8] */
0489 #define WM9090_WSEQ_DELAY_WIDTH                      4  /* WSEQ_DELAY - [11:8] */
0490 #define WM9090_WSEQ_DATA_MASK                   0x00FF  /* WSEQ_DATA - [7:0] */
0491 #define WM9090_WSEQ_DATA_SHIFT                       0  /* WSEQ_DATA - [7:0] */
0492 #define WM9090_WSEQ_DATA_WIDTH                       8  /* WSEQ_DATA - [7:0] */
0493 
0494 /*
0495  * R73 (0x49) - Write Sequencer 3
0496  */
0497 #define WM9090_WSEQ_ABORT                       0x0200  /* WSEQ_ABORT */
0498 #define WM9090_WSEQ_ABORT_MASK                  0x0200  /* WSEQ_ABORT */
0499 #define WM9090_WSEQ_ABORT_SHIFT                      9  /* WSEQ_ABORT */
0500 #define WM9090_WSEQ_ABORT_WIDTH                      1  /* WSEQ_ABORT */
0501 #define WM9090_WSEQ_START                       0x0100  /* WSEQ_START */
0502 #define WM9090_WSEQ_START_MASK                  0x0100  /* WSEQ_START */
0503 #define WM9090_WSEQ_START_SHIFT                      8  /* WSEQ_START */
0504 #define WM9090_WSEQ_START_WIDTH                      1  /* WSEQ_START */
0505 #define WM9090_WSEQ_START_INDEX_MASK            0x003F  /* WSEQ_START_INDEX - [5:0] */
0506 #define WM9090_WSEQ_START_INDEX_SHIFT                0  /* WSEQ_START_INDEX - [5:0] */
0507 #define WM9090_WSEQ_START_INDEX_WIDTH                6  /* WSEQ_START_INDEX - [5:0] */
0508 
0509 /*
0510  * R74 (0x4A) - Write Sequencer 4
0511  */
0512 #define WM9090_WSEQ_BUSY                        0x0001  /* WSEQ_BUSY */
0513 #define WM9090_WSEQ_BUSY_MASK                   0x0001  /* WSEQ_BUSY */
0514 #define WM9090_WSEQ_BUSY_SHIFT                       0  /* WSEQ_BUSY */
0515 #define WM9090_WSEQ_BUSY_WIDTH                       1  /* WSEQ_BUSY */
0516 
0517 /*
0518  * R75 (0x4B) - Write Sequencer 5
0519  */
0520 #define WM9090_WSEQ_CURRENT_INDEX_MASK          0x003F  /* WSEQ_CURRENT_INDEX - [5:0] */
0521 #define WM9090_WSEQ_CURRENT_INDEX_SHIFT              0  /* WSEQ_CURRENT_INDEX - [5:0] */
0522 #define WM9090_WSEQ_CURRENT_INDEX_WIDTH              6  /* WSEQ_CURRENT_INDEX - [5:0] */
0523 
0524 /*
0525  * R76 (0x4C) - Charge Pump 1
0526  */
0527 #define WM9090_CP_ENA                           0x8000  /* CP_ENA */
0528 #define WM9090_CP_ENA_MASK                      0x8000  /* CP_ENA */
0529 #define WM9090_CP_ENA_SHIFT                         15  /* CP_ENA */
0530 #define WM9090_CP_ENA_WIDTH                          1  /* CP_ENA */
0531 
0532 /*
0533  * R84 (0x54) - DC Servo 0
0534  */
0535 #define WM9090_DCS_TRIG_SINGLE_1                0x2000  /* DCS_TRIG_SINGLE_1 */
0536 #define WM9090_DCS_TRIG_SINGLE_1_MASK           0x2000  /* DCS_TRIG_SINGLE_1 */
0537 #define WM9090_DCS_TRIG_SINGLE_1_SHIFT              13  /* DCS_TRIG_SINGLE_1 */
0538 #define WM9090_DCS_TRIG_SINGLE_1_WIDTH               1  /* DCS_TRIG_SINGLE_1 */
0539 #define WM9090_DCS_TRIG_SINGLE_0                0x1000  /* DCS_TRIG_SINGLE_0 */
0540 #define WM9090_DCS_TRIG_SINGLE_0_MASK           0x1000  /* DCS_TRIG_SINGLE_0 */
0541 #define WM9090_DCS_TRIG_SINGLE_0_SHIFT              12  /* DCS_TRIG_SINGLE_0 */
0542 #define WM9090_DCS_TRIG_SINGLE_0_WIDTH               1  /* DCS_TRIG_SINGLE_0 */
0543 #define WM9090_DCS_TRIG_SERIES_1                0x0200  /* DCS_TRIG_SERIES_1 */
0544 #define WM9090_DCS_TRIG_SERIES_1_MASK           0x0200  /* DCS_TRIG_SERIES_1 */
0545 #define WM9090_DCS_TRIG_SERIES_1_SHIFT               9  /* DCS_TRIG_SERIES_1 */
0546 #define WM9090_DCS_TRIG_SERIES_1_WIDTH               1  /* DCS_TRIG_SERIES_1 */
0547 #define WM9090_DCS_TRIG_SERIES_0                0x0100  /* DCS_TRIG_SERIES_0 */
0548 #define WM9090_DCS_TRIG_SERIES_0_MASK           0x0100  /* DCS_TRIG_SERIES_0 */
0549 #define WM9090_DCS_TRIG_SERIES_0_SHIFT               8  /* DCS_TRIG_SERIES_0 */
0550 #define WM9090_DCS_TRIG_SERIES_0_WIDTH               1  /* DCS_TRIG_SERIES_0 */
0551 #define WM9090_DCS_TRIG_STARTUP_1               0x0020  /* DCS_TRIG_STARTUP_1 */
0552 #define WM9090_DCS_TRIG_STARTUP_1_MASK          0x0020  /* DCS_TRIG_STARTUP_1 */
0553 #define WM9090_DCS_TRIG_STARTUP_1_SHIFT              5  /* DCS_TRIG_STARTUP_1 */
0554 #define WM9090_DCS_TRIG_STARTUP_1_WIDTH              1  /* DCS_TRIG_STARTUP_1 */
0555 #define WM9090_DCS_TRIG_STARTUP_0               0x0010  /* DCS_TRIG_STARTUP_0 */
0556 #define WM9090_DCS_TRIG_STARTUP_0_MASK          0x0010  /* DCS_TRIG_STARTUP_0 */
0557 #define WM9090_DCS_TRIG_STARTUP_0_SHIFT              4  /* DCS_TRIG_STARTUP_0 */
0558 #define WM9090_DCS_TRIG_STARTUP_0_WIDTH              1  /* DCS_TRIG_STARTUP_0 */
0559 #define WM9090_DCS_TRIG_DAC_WR_1                0x0008  /* DCS_TRIG_DAC_WR_1 */
0560 #define WM9090_DCS_TRIG_DAC_WR_1_MASK           0x0008  /* DCS_TRIG_DAC_WR_1 */
0561 #define WM9090_DCS_TRIG_DAC_WR_1_SHIFT               3  /* DCS_TRIG_DAC_WR_1 */
0562 #define WM9090_DCS_TRIG_DAC_WR_1_WIDTH               1  /* DCS_TRIG_DAC_WR_1 */
0563 #define WM9090_DCS_TRIG_DAC_WR_0                0x0004  /* DCS_TRIG_DAC_WR_0 */
0564 #define WM9090_DCS_TRIG_DAC_WR_0_MASK           0x0004  /* DCS_TRIG_DAC_WR_0 */
0565 #define WM9090_DCS_TRIG_DAC_WR_0_SHIFT               2  /* DCS_TRIG_DAC_WR_0 */
0566 #define WM9090_DCS_TRIG_DAC_WR_0_WIDTH               1  /* DCS_TRIG_DAC_WR_0 */
0567 #define WM9090_DCS_ENA_CHAN_1                   0x0002  /* DCS_ENA_CHAN_1 */
0568 #define WM9090_DCS_ENA_CHAN_1_MASK              0x0002  /* DCS_ENA_CHAN_1 */
0569 #define WM9090_DCS_ENA_CHAN_1_SHIFT                  1  /* DCS_ENA_CHAN_1 */
0570 #define WM9090_DCS_ENA_CHAN_1_WIDTH                  1  /* DCS_ENA_CHAN_1 */
0571 #define WM9090_DCS_ENA_CHAN_0                   0x0001  /* DCS_ENA_CHAN_0 */
0572 #define WM9090_DCS_ENA_CHAN_0_MASK              0x0001  /* DCS_ENA_CHAN_0 */
0573 #define WM9090_DCS_ENA_CHAN_0_SHIFT                  0  /* DCS_ENA_CHAN_0 */
0574 #define WM9090_DCS_ENA_CHAN_0_WIDTH                  1  /* DCS_ENA_CHAN_0 */
0575 
0576 /*
0577  * R85 (0x55) - DC Servo 1
0578  */
0579 #define WM9090_DCS_SERIES_NO_01_MASK            0x0FE0  /* DCS_SERIES_NO_01 - [11:5] */
0580 #define WM9090_DCS_SERIES_NO_01_SHIFT                5  /* DCS_SERIES_NO_01 - [11:5] */
0581 #define WM9090_DCS_SERIES_NO_01_WIDTH                7  /* DCS_SERIES_NO_01 - [11:5] */
0582 #define WM9090_DCS_TIMER_PERIOD_01_MASK         0x000F  /* DCS_TIMER_PERIOD_01 - [3:0] */
0583 #define WM9090_DCS_TIMER_PERIOD_01_SHIFT             0  /* DCS_TIMER_PERIOD_01 - [3:0] */
0584 #define WM9090_DCS_TIMER_PERIOD_01_WIDTH             4  /* DCS_TIMER_PERIOD_01 - [3:0] */
0585 
0586 /*
0587  * R87 (0x57) - DC Servo 3
0588  */
0589 #define WM9090_DCS_DAC_WR_VAL_1_MASK            0xFF00  /* DCS_DAC_WR_VAL_1 - [15:8] */
0590 #define WM9090_DCS_DAC_WR_VAL_1_SHIFT                8  /* DCS_DAC_WR_VAL_1 - [15:8] */
0591 #define WM9090_DCS_DAC_WR_VAL_1_WIDTH                8  /* DCS_DAC_WR_VAL_1 - [15:8] */
0592 #define WM9090_DCS_DAC_WR_VAL_0_MASK            0x00FF  /* DCS_DAC_WR_VAL_0 - [7:0] */
0593 #define WM9090_DCS_DAC_WR_VAL_0_SHIFT                0  /* DCS_DAC_WR_VAL_0 - [7:0] */
0594 #define WM9090_DCS_DAC_WR_VAL_0_WIDTH                8  /* DCS_DAC_WR_VAL_0 - [7:0] */
0595 
0596 /*
0597  * R88 (0x58) - DC Servo Readback 0
0598  */
0599 #define WM9090_DCS_CAL_COMPLETE_MASK            0x0300  /* DCS_CAL_COMPLETE - [9:8] */
0600 #define WM9090_DCS_CAL_COMPLETE_SHIFT                8  /* DCS_CAL_COMPLETE - [9:8] */
0601 #define WM9090_DCS_CAL_COMPLETE_WIDTH                2  /* DCS_CAL_COMPLETE - [9:8] */
0602 #define WM9090_DCS_DAC_WR_COMPLETE_MASK         0x0030  /* DCS_DAC_WR_COMPLETE - [5:4] */
0603 #define WM9090_DCS_DAC_WR_COMPLETE_SHIFT             4  /* DCS_DAC_WR_COMPLETE - [5:4] */
0604 #define WM9090_DCS_DAC_WR_COMPLETE_WIDTH             2  /* DCS_DAC_WR_COMPLETE - [5:4] */
0605 #define WM9090_DCS_STARTUP_COMPLETE_MASK        0x0003  /* DCS_STARTUP_COMPLETE - [1:0] */
0606 #define WM9090_DCS_STARTUP_COMPLETE_SHIFT            0  /* DCS_STARTUP_COMPLETE - [1:0] */
0607 #define WM9090_DCS_STARTUP_COMPLETE_WIDTH            2  /* DCS_STARTUP_COMPLETE - [1:0] */
0608 
0609 /*
0610  * R89 (0x59) - DC Servo Readback 1
0611  */
0612 #define WM9090_DCS_DAC_WR_VAL_1_RD_MASK         0x00FF  /* DCS_DAC_WR_VAL_1_RD - [7:0] */
0613 #define WM9090_DCS_DAC_WR_VAL_1_RD_SHIFT             0  /* DCS_DAC_WR_VAL_1_RD - [7:0] */
0614 #define WM9090_DCS_DAC_WR_VAL_1_RD_WIDTH             8  /* DCS_DAC_WR_VAL_1_RD - [7:0] */
0615 
0616 /*
0617  * R90 (0x5A) - DC Servo Readback 2
0618  */
0619 #define WM9090_DCS_DAC_WR_VAL_0_RD_MASK         0x00FF  /* DCS_DAC_WR_VAL_0_RD - [7:0] */
0620 #define WM9090_DCS_DAC_WR_VAL_0_RD_SHIFT             0  /* DCS_DAC_WR_VAL_0_RD - [7:0] */
0621 #define WM9090_DCS_DAC_WR_VAL_0_RD_WIDTH             8  /* DCS_DAC_WR_VAL_0_RD - [7:0] */
0622 
0623 /*
0624  * R96 (0x60) - Analogue HP 0
0625  */
0626 #define WM9090_HPOUT1L_RMV_SHORT                0x0080  /* HPOUT1L_RMV_SHORT */
0627 #define WM9090_HPOUT1L_RMV_SHORT_MASK           0x0080  /* HPOUT1L_RMV_SHORT */
0628 #define WM9090_HPOUT1L_RMV_SHORT_SHIFT               7  /* HPOUT1L_RMV_SHORT */
0629 #define WM9090_HPOUT1L_RMV_SHORT_WIDTH               1  /* HPOUT1L_RMV_SHORT */
0630 #define WM9090_HPOUT1L_OUTP                     0x0040  /* HPOUT1L_OUTP */
0631 #define WM9090_HPOUT1L_OUTP_MASK                0x0040  /* HPOUT1L_OUTP */
0632 #define WM9090_HPOUT1L_OUTP_SHIFT                    6  /* HPOUT1L_OUTP */
0633 #define WM9090_HPOUT1L_OUTP_WIDTH                    1  /* HPOUT1L_OUTP */
0634 #define WM9090_HPOUT1L_DLY                      0x0020  /* HPOUT1L_DLY */
0635 #define WM9090_HPOUT1L_DLY_MASK                 0x0020  /* HPOUT1L_DLY */
0636 #define WM9090_HPOUT1L_DLY_SHIFT                     5  /* HPOUT1L_DLY */
0637 #define WM9090_HPOUT1L_DLY_WIDTH                     1  /* HPOUT1L_DLY */
0638 #define WM9090_HPOUT1R_RMV_SHORT                0x0008  /* HPOUT1R_RMV_SHORT */
0639 #define WM9090_HPOUT1R_RMV_SHORT_MASK           0x0008  /* HPOUT1R_RMV_SHORT */
0640 #define WM9090_HPOUT1R_RMV_SHORT_SHIFT               3  /* HPOUT1R_RMV_SHORT */
0641 #define WM9090_HPOUT1R_RMV_SHORT_WIDTH               1  /* HPOUT1R_RMV_SHORT */
0642 #define WM9090_HPOUT1R_OUTP                     0x0004  /* HPOUT1R_OUTP */
0643 #define WM9090_HPOUT1R_OUTP_MASK                0x0004  /* HPOUT1R_OUTP */
0644 #define WM9090_HPOUT1R_OUTP_SHIFT                    2  /* HPOUT1R_OUTP */
0645 #define WM9090_HPOUT1R_OUTP_WIDTH                    1  /* HPOUT1R_OUTP */
0646 #define WM9090_HPOUT1R_DLY                      0x0002  /* HPOUT1R_DLY */
0647 #define WM9090_HPOUT1R_DLY_MASK                 0x0002  /* HPOUT1R_DLY */
0648 #define WM9090_HPOUT1R_DLY_SHIFT                     1  /* HPOUT1R_DLY */
0649 #define WM9090_HPOUT1R_DLY_WIDTH                     1  /* HPOUT1R_DLY */
0650 
0651 /*
0652  * R98 (0x62) - AGC Control 0
0653  */
0654 #define WM9090_AGC_CLIP_ENA                     0x8000  /* AGC_CLIP_ENA */
0655 #define WM9090_AGC_CLIP_ENA_MASK                0x8000  /* AGC_CLIP_ENA */
0656 #define WM9090_AGC_CLIP_ENA_SHIFT                   15  /* AGC_CLIP_ENA */
0657 #define WM9090_AGC_CLIP_ENA_WIDTH                    1  /* AGC_CLIP_ENA */
0658 #define WM9090_AGC_CLIP_THR_MASK                0x0F00  /* AGC_CLIP_THR - [11:8] */
0659 #define WM9090_AGC_CLIP_THR_SHIFT                    8  /* AGC_CLIP_THR - [11:8] */
0660 #define WM9090_AGC_CLIP_THR_WIDTH                    4  /* AGC_CLIP_THR - [11:8] */
0661 #define WM9090_AGC_CLIP_ATK_MASK                0x0070  /* AGC_CLIP_ATK - [6:4] */
0662 #define WM9090_AGC_CLIP_ATK_SHIFT                    4  /* AGC_CLIP_ATK - [6:4] */
0663 #define WM9090_AGC_CLIP_ATK_WIDTH                    3  /* AGC_CLIP_ATK - [6:4] */
0664 #define WM9090_AGC_CLIP_DCY_MASK                0x0007  /* AGC_CLIP_DCY - [2:0] */
0665 #define WM9090_AGC_CLIP_DCY_SHIFT                    0  /* AGC_CLIP_DCY - [2:0] */
0666 #define WM9090_AGC_CLIP_DCY_WIDTH                    3  /* AGC_CLIP_DCY - [2:0] */
0667 
0668 /*
0669  * R99 (0x63) - AGC Control 1
0670  */
0671 #define WM9090_AGC_PWR_ENA                      0x8000  /* AGC_PWR_ENA */
0672 #define WM9090_AGC_PWR_ENA_MASK                 0x8000  /* AGC_PWR_ENA */
0673 #define WM9090_AGC_PWR_ENA_SHIFT                    15  /* AGC_PWR_ENA */
0674 #define WM9090_AGC_PWR_ENA_WIDTH                     1  /* AGC_PWR_ENA */
0675 #define WM9090_AGC_PWR_AVG                      0x1000  /* AGC_PWR_AVG */
0676 #define WM9090_AGC_PWR_AVG_MASK                 0x1000  /* AGC_PWR_AVG */
0677 #define WM9090_AGC_PWR_AVG_SHIFT                    12  /* AGC_PWR_AVG */
0678 #define WM9090_AGC_PWR_AVG_WIDTH                     1  /* AGC_PWR_AVG */
0679 #define WM9090_AGC_PWR_THR_MASK                 0x0F00  /* AGC_PWR_THR - [11:8] */
0680 #define WM9090_AGC_PWR_THR_SHIFT                     8  /* AGC_PWR_THR - [11:8] */
0681 #define WM9090_AGC_PWR_THR_WIDTH                     4  /* AGC_PWR_THR - [11:8] */
0682 #define WM9090_AGC_PWR_ATK_MASK                 0x0070  /* AGC_PWR_ATK - [6:4] */
0683 #define WM9090_AGC_PWR_ATK_SHIFT                     4  /* AGC_PWR_ATK - [6:4] */
0684 #define WM9090_AGC_PWR_ATK_WIDTH                     3  /* AGC_PWR_ATK - [6:4] */
0685 #define WM9090_AGC_PWR_DCY_MASK                 0x0007  /* AGC_PWR_DCY - [2:0] */
0686 #define WM9090_AGC_PWR_DCY_SHIFT                     0  /* AGC_PWR_DCY - [2:0] */
0687 #define WM9090_AGC_PWR_DCY_WIDTH                     3  /* AGC_PWR_DCY - [2:0] */
0688 
0689 /*
0690  * R100 (0x64) - AGC Control 2
0691  */
0692 #define WM9090_AGC_RAMP                         0x0100  /* AGC_RAMP */
0693 #define WM9090_AGC_RAMP_MASK                    0x0100  /* AGC_RAMP */
0694 #define WM9090_AGC_RAMP_SHIFT                        8  /* AGC_RAMP */
0695 #define WM9090_AGC_RAMP_WIDTH                        1  /* AGC_RAMP */
0696 #define WM9090_AGC_MINGAIN_MASK                 0x003F  /* AGC_MINGAIN - [5:0] */
0697 #define WM9090_AGC_MINGAIN_SHIFT                     0  /* AGC_MINGAIN - [5:0] */
0698 #define WM9090_AGC_MINGAIN_WIDTH                     6  /* AGC_MINGAIN - [5:0] */
0699 
0700 #endif