Home | History | Annotate | Download | only in sound
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2012 Samsung Electronics
      4  */
      5 
      6 #ifndef __WM8994_REGISTERS_H__
      7 #define __WM8994_REGISTERS_H__
      8 
      9 /*
     10  * Register values.
     11  */
     12 #define WM8994_SOFTWARE_RESET                   0x00
     13 #define WM8994_POWER_MANAGEMENT_1               0x01
     14 #define WM8994_POWER_MANAGEMENT_2               0x02
     15 #define WM8994_POWER_MANAGEMENT_4		0x04
     16 #define WM8994_POWER_MANAGEMENT_5               0x05
     17 #define WM8994_LEFT_OUTPUT_VOLUME               0x1C
     18 #define WM8994_RIGHT_OUTPUT_VOLUME              0x1D
     19 #define WM8994_OUTPUT_MIXER_1                   0x2D
     20 #define WM8994_OUTPUT_MIXER_2                   0x2E
     21 #define WM8994_CHARGE_PUMP_1                    0x4C
     22 #define WM8994_DC_SERVO_1                       0x54
     23 #define WM8994_ANALOGUE_HP_1                    0x60
     24 #define WM8994_CHIP_REVISION                    0x100
     25 #define WM8994_AIF1_CLOCKING_1                  0x200
     26 #define WM8994_AIF1_CLOCKING_2                  0x201
     27 #define WM8994_AIF2_CLOCKING_1                  0x204
     28 #define WM8994_CLOCKING_1                       0x208
     29 #define WM8994_CLOCKING_2                       0x209
     30 #define WM8994_AIF1_RATE                        0x210
     31 #define WM8994_AIF2_RATE                        0x211
     32 #define WM8994_RATE_STATUS                      0x212
     33 #define WM8994_AIF1_CONTROL_1                   0x300
     34 #define WM8994_AIF1_CONTROL_2                   0x301
     35 #define WM8994_AIF1_MASTER_SLAVE                0x302
     36 #define WM8994_AIF1_BCLK                        0x303
     37 #define WM8994_AIF2_CONTROL_1                   0x310
     38 #define WM8994_AIF2_CONTROL_2                   0x311
     39 #define WM8994_AIF2_MASTER_SLAVE                0x312
     40 #define WM8994_AIF2_BCLK                        0x313
     41 #define WM8994_AIF1_DAC_FILTERS_1		0x420
     42 #define WM8994_AIF2_DAC_LEFT_VOLUME             0x502
     43 #define WM8994_AIF2_DAC_RIGHT_VOLUME            0x503
     44 #define WM8994_AIF2_DAC_FILTERS_1               0x520
     45 #define WM8994_DAC1_LEFT_MIXER_ROUTING          0x601
     46 #define WM8994_DAC1_RIGHT_MIXER_ROUTING         0x602
     47 #define WM8994_DAC1_LEFT_VOLUME                 0x610
     48 #define WM8994_DAC1_RIGHT_VOLUME                0x611
     49 #define WM8994_GPIO_1				0x700
     50 #define WM8994_GPIO_3                           0x702
     51 #define WM8994_GPIO_4                           0x703
     52 #define WM8994_GPIO_5                           0x704
     53 
     54 /*
     55  * Field Definitions.
     56  */
     57 
     58 /*
     59  * R0 (0x00) - Software Reset
     60  */
     61 /* SW_RESET */
     62 #define WM8994_SW_RESET                              1
     63 /*
     64  * R1 (0x01) - Power Management (1)
     65  */
     66 /* HPOUT1L_ENA */
     67 #define WM8994_HPOUT1L_ENA                      0x0200
     68 /* HPOUT1L_ENA */
     69 #define WM8994_HPOUT1L_ENA_MASK                 0x0200
     70 /* HPOUT1R_ENA */
     71 #define WM8994_HPOUT1R_ENA                      0x0100
     72 /* HPOUT1R_ENA */
     73 #define WM8994_HPOUT1R_ENA_MASK                 0x0100
     74 /* VMID_SEL - [2:1] */
     75 #define WM8994_VMID_SEL_MASK                    0x0006
     76 /* BIAS_ENA */
     77 #define WM8994_BIAS_ENA                         0x0001
     78 /* BIAS_ENA */
     79 #define WM8994_BIAS_ENA_MASK                    0x0001
     80 
     81 /*
     82  * R2 (0x02) - Power Management (2)
     83  */
     84 /* OPCLK_ENA */
     85 #define WM8994_OPCLK_ENA                        0x0800
     86 
     87 #define WM8994_TSHUT_ENA			0x4000
     88 #define WM8994_MIXINL_ENA			0x0200
     89 #define WM8994_MIXINR_ENA			0x0100
     90 #define WM8994_IN2L_ENA				0x0080
     91 #define WM8994_IN2R_ENA				0x0020
     92 
     93 /*
     94  * R5 (0x04) - Power Management (4)
     95  */
     96 #define WM8994_ADCL_ENA				0x0001
     97 #define WM8994_ADCR_ENA				0x0002
     98 #define WM8994_AIF1ADC1R_ENA			0x0100
     99 #define WM8994_AIF1ADC1L_ENA			0x0200
    100 
    101 /*
    102  * R5 (0x05) - Power Management (5)
    103  */
    104 /* AIF2DACL_ENA */
    105 #define WM8994_AIF2DACL_ENA                     0x2000
    106 #define WM8994_AIF2DACL_ENA_MASK                0x2000
    107 /* AIF2DACR_ENA */
    108 #define WM8994_AIF2DACR_ENA                     0x1000
    109 #define WM8994_AIF2DACR_ENA_MASK                0x1000
    110 /* AIF1DACL_ENA */
    111 #define WM8994_AIF1DACL_ENA			0x0200
    112 #define WM8994_AIF1DACL_ENA_MASK		0x0200
    113 /* AIF1DACR_ENA */
    114 #define WM8994_AIF1DACR_ENA			0x0100
    115 #define WM8994_AIF1DACR_ENA_MASK		0x0100
    116 /* DAC1L_ENA */
    117 #define WM8994_DAC1L_ENA                        0x0002
    118 #define WM8994_DAC1L_ENA_MASK                   0x0002
    119 /* DAC1R_ENA */
    120 #define WM8994_DAC1R_ENA                        0x0001
    121 #define WM8994_DAC1R_ENA_MASK                   0x0001
    122 
    123 /*
    124  * R45 (0x2D) - Output Mixer (1)
    125  */
    126 /* DAC1L_TO_HPOUT1L */
    127 #define WM8994_DAC1L_TO_HPOUT1L                 0x0100
    128 #define WM8994_DAC1L_TO_HPOUT1L_MASK            0x0100
    129 
    130 /*
    131  * R46 (0x2E) - Output Mixer (2)
    132  */
    133 /* DAC1R_TO_HPOUT1R */
    134 #define WM8994_DAC1R_TO_HPOUT1R                 0x0100
    135 #define WM8994_DAC1R_TO_HPOUT1R_MASK            0x0100
    136 
    137 /*
    138  * R76 (0x4C) - Charge Pump (1)
    139  */
    140 /* CP_ENA */
    141 #define WM8994_CP_ENA                           0x8000
    142 #define WM8994_CP_ENA_MASK                      0x8000
    143 /*
    144  * R84 (0x54) - DC Servo (1)
    145  */
    146 /* DCS_ENA_CHAN_1 */
    147 #define WM8994_DCS_ENA_CHAN_1                   0x0002
    148 #define WM8994_DCS_ENA_CHAN_1_MASK              0x0002
    149 /* DCS_ENA_CHAN_0 */
    150 #define WM8994_DCS_ENA_CHAN_0                   0x0001
    151 #define WM8994_DCS_ENA_CHAN_0_MASK              0x0001
    152 
    153 /*
    154  * R96 (0x60) - Analogue HP (1)
    155  */
    156 /* HPOUT1L_RMV_SHORT */
    157 #define WM8994_HPOUT1L_RMV_SHORT                0x0080
    158 #define WM8994_HPOUT1L_RMV_SHORT_MASK           0x0080
    159 /* HPOUT1L_OUTP */
    160 #define WM8994_HPOUT1L_OUTP                     0x0040
    161 #define WM8994_HPOUT1L_OUTP_MASK                0x0040
    162 /* HPOUT1L_DLY */
    163 #define WM8994_HPOUT1L_DLY                      0x0020
    164 #define WM8994_HPOUT1L_DLY_MASK                 0x0020
    165 /* HPOUT1R_RMV_SHORT */
    166 #define WM8994_HPOUT1R_RMV_SHORT                0x0008
    167 #define WM8994_HPOUT1R_RMV_SHORT_MASK           0x0008
    168 /* HPOUT1R_OUTP */
    169 #define WM8994_HPOUT1R_OUTP                     0x0004
    170 #define WM8994_HPOUT1R_OUTP_MASK                0x0004
    171 /* HPOUT1R_DLY */
    172 #define WM8994_HPOUT1R_DLY                      0x0002
    173 #define WM8994_HPOUT1R_DLY_MASK                 0x0002
    174 
    175 /*
    176  * R512 (0x200) - AIF1 Clocking (1)
    177  */
    178 /* AIF1CLK_SRC - [4:3] */
    179 #define WM8994_AIF1CLK_SRC_MASK                 0x0018
    180 /* AIF1CLK_DIV */
    181 #define WM8994_AIF1CLK_DIV                      0x0002
    182 /* AIF1CLK_ENA */
    183 #define WM8994_AIF1CLK_ENA                      0x0001
    184 #define WM8994_AIF1CLK_ENA_MASK                 0x0001
    185 
    186 /*
    187  * R517 (0x205) - AIF2 Clocking (2)
    188  */
    189 /* AIF2DAC_DIV - [5:3] */
    190 #define WM8994_AIF2DAC_DIV_MASK                 0x0038
    191 
    192 /*
    193  * R520 (0x208) - Clocking (1)
    194  */
    195 /* AIF1DSPCLK_ENA */
    196 #define WM8994_AIF1DSPCLK_ENA			0x0008
    197 #define WM8994_AIF1DSPCLK_ENA_MASK		0x0008
    198 /* AIF2DSPCLK_ENA */
    199 #define WM8994_AIF2DSPCLK_ENA                   0x0004
    200 #define WM8994_AIF2DSPCLK_ENA_MASK              0x0004
    201 /* SYSDSPCLK_ENA */
    202 #define WM8994_SYSDSPCLK_ENA                    0x0002
    203 #define WM8994_SYSDSPCLK_ENA_MASK               0x0002
    204 /* SYSCLK_SRC */
    205 #define WM8994_SYSCLK_SRC                       0x0001
    206 
    207 /*
    208  * R521 (0x209) - Clocking (2)
    209  */
    210 /* OPCLK_DIV - [2:0] */
    211 #define WM8994_OPCLK_DIV_MASK                   0x0007
    212 
    213 /*
    214  * R528 (0x210) - AIF1 Rate
    215  */
    216 /* AIF1_SR - [7:4] */
    217 #define WM8994_AIF1_SR_MASK                     0x00F0
    218 #define WM8994_AIF1_SR_SHIFT                         4
    219 /* AIF1CLK_RATE - [3:0] */
    220 #define WM8994_AIF1CLK_RATE_MASK                0x000F
    221 
    222 /*
    223  * R768 (0x300) - AIF1 Control (1)
    224  */
    225 /* AIF1_BCLK_INV */
    226 #define WM8994_AIF1_BCLK_INV                    0x0100
    227 /* AIF1_LRCLK_INV */
    228 #define WM8994_AIF1_LRCLK_INV                   0x0080
    229 #define WM8994_AIF1_LRCLK_INV_MASK              0x0080
    230 /* AIF1_WL - [6:5] */
    231 #define WM8994_AIF1_WL_MASK                     0x0060
    232 /* AIF1_FMT - [4:3] */
    233 #define WM8994_AIF1_FMT_MASK                    0x0018
    234 
    235 /*
    236  * R769 (0x301) - AIF1 Control (2)
    237  */
    238 /* AIF1_MONO */
    239 #define WM8994_AIF1_MONO                        0x0100
    240 
    241 /*
    242  * R770 (0x302) - AIF1 Master/Slave
    243  */
    244 /* AIF1_MSTR */
    245 #define WM8994_AIF1_MSTR                        0x4000
    246 #define WM8994_AIF1_MSTR_MASK                   0x4000
    247 
    248 /*
    249  * R771 (0x303) - AIF1 BCLK
    250  */
    251 /* AIF1_BCLK_DIV - [8:4] */
    252 #define WM8994_AIF1_BCLK_DIV_MASK               0x01F0
    253 #define WM8994_AIF1_BCLK_DIV_SHIFT                   4
    254 
    255 /*
    256  * R1282 (0x502) - AIF2 DAC Left Volume
    257  */
    258 /* AIF2DAC_VU */
    259 #define WM8994_AIF2DAC_VU                       0x0100
    260 #define WM8994_AIF2DAC_VU_MASK                  0x0100
    261 /* AIF2DACL_VOL - [7:0] */
    262 #define WM8994_AIF2DACL_VOL_MASK                0x00FF
    263 
    264 /*
    265  * R1283 (0x503) - AIF2 DAC Right Volume
    266  */
    267 /* AIF2DACR_VOL - [7:0] */
    268 #define WM8994_AIF2DACR_VOL_MASK                0x00FF
    269 
    270 /*
    271  * R1312 (0x520) - AIF2 DAC Filters (1)
    272  */
    273 /* AIF2DAC_MUTE */
    274 #define WM8994_AIF2DAC_MUTE_MASK                0x0200
    275 
    276 /*
    277  * R1537 (0x601) - DAC1 Left Mixer Routing
    278  */
    279 /* AIF2DACL_TO_DAC1L */
    280 #define WM8994_AIF2DACL_TO_DAC1L                0x0004
    281 #define WM8994_AIF2DACL_TO_DAC1L_MASK           0x0004
    282 /* AIF1DAC1L_TO_DAC1L */
    283 #define WM8994_AIF1DAC1L_TO_DAC1L		0x0001
    284 
    285 /*
    286  * R1538 (0x602) - DAC1 Right Mixer Routing
    287  */
    288 /* AIF2DACR_TO_DAC1R */
    289 #define WM8994_AIF2DACR_TO_DAC1R                0x0004
    290 #define WM8994_AIF2DACR_TO_DAC1R_MASK           0x0004
    291 /* AIF1DAC1R_TO_DAC1R */
    292 #define WM8994_AIF1DAC1R_TO_DAC1R		0x0001
    293 
    294 /*
    295  * R1552 (0x610) - DAC1 Left Volume
    296  */
    297 /* DAC1L_MUTE */
    298 #define WM8994_DAC1L_MUTE_MASK                  0x0200
    299 /* DAC1_VU */
    300 #define WM8994_DAC1_VU                          0x0100
    301 #define WM8994_DAC1_VU_MASK                     0x0100
    302 /* DAC1L_VOL - [7:0] */
    303 #define WM8994_DAC1L_VOL_MASK                   0x00FF
    304 
    305 /*
    306  * R1553 (0x611) - DAC1 Right Volume
    307  */
    308 /* DAC1R_MUTE */
    309 #define WM8994_DAC1R_MUTE_MASK                  0x0200
    310 /* DAC1R_VOL - [7:0] */
    311 #define WM8994_DAC1R_VOL_MASK                   0x00FF
    312 
    313 /*
    314  *  GPIO
    315  */
    316 /* OUTPUT PIN */
    317 #define WM8994_GPIO_DIR_OUTPUT			0x8000
    318 /* GPIO PIN MASK */
    319 #define WM8994_GPIO_DIR_MASK			0xFFE0
    320 /* I2S CLK */
    321 #define WM8994_GPIO_FUNCTION_I2S_CLK		0x0001
    322 #define WM8994_GPIO_INPUT_DEBOUNCE		0x0100
    323 /* GPn FN */
    324 #define WM8994_GPIO_FUNCTION_MASK		0x001F
    325 #endif
    326