ASoC: wm8904: fix DSP mode B configuration
[pandora-kernel.git] / sound / soc / codecs / sn95031.h
1 /*
2  *  sn95031.h - TI sn95031 Codec driver
3  *
4  *  Copyright (C) 2010 Intel Corp
5  *  Author: Vinod Koul <vinod.koul@intel.com>
6  *  Author: Harsha Priya <priya.harsha@intel.com>
7  *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License as published by
11  *  the Free Software Foundation; version 2 of the License.
12  *
13  *  This program is distributed in the hope that it will be useful, but
14  *  WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  *  General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License along
19  *  with this program; if not, write to the Free Software Foundation, Inc.,
20  *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21  *
22  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23  *
24  *
25  */
26 #ifndef _SN95031_H
27 #define _SN95031_H
28
29 /*register map*/
30 #define SN95031_VAUD                    0xDB
31 #define SN95031_VHSP                    0xDC
32 #define SN95031_VHSN                    0xDD
33 #define SN95031_VIHF                    0xC9
34
35 #define SN95031_AUDPLLCTRL              0x240
36 #define SN95031_DMICBUF0123             0x241
37 #define SN95031_DMICBUF45               0x242
38 #define SN95031_DMICGPO                 0x244
39 #define SN95031_DMICMUX                 0x245
40 #define SN95031_DMICLK                  0x246
41 #define SN95031_MICBIAS                 0x247
42 #define SN95031_ADCCONFIG               0x248
43 #define SN95031_MICAMP1                 0x249
44 #define SN95031_MICAMP2                 0x24A
45 #define SN95031_NOISEMUX                0x24B
46 #define SN95031_AUDIOMUX12              0x24C
47 #define SN95031_AUDIOMUX34              0x24D
48 #define SN95031_AUDIOSINC               0x24E
49 #define SN95031_AUDIOTXEN               0x24F
50 #define SN95031_HSEPRXCTRL              0x250
51 #define SN95031_IHFRXCTRL               0x251
52 #define SN95031_HSMIXER                 0x256
53 #define SN95031_DACCONFIG               0x257
54 #define SN95031_SOFTMUTE                0x258
55 #define SN95031_HSLVOLCTRL              0x259
56 #define SN95031_HSRVOLCTRL              0x25A
57 #define SN95031_IHFLVOLCTRL             0x25B
58 #define SN95031_IHFRVOLCTRL             0x25C
59 #define SN95031_DRIVEREN                0x25D
60 #define SN95031_LOCTL                   0x25E
61 #define SN95031_VIB1C1                  0x25F
62 #define SN95031_VIB1C2                  0x260
63 #define SN95031_VIB1C3                  0x261
64 #define SN95031_VIB1SPIPCM1             0x262
65 #define SN95031_VIB1SPIPCM2             0x263
66 #define SN95031_VIB1C5                  0x264
67 #define SN95031_VIB2C1                  0x265
68 #define SN95031_VIB2C2                  0x266
69 #define SN95031_VIB2C3                  0x267
70 #define SN95031_VIB2SPIPCM1             0x268
71 #define SN95031_VIB2SPIPCM2             0x269
72 #define SN95031_VIB2C5                  0x26A
73 #define SN95031_BTNCTRL1                0x26B
74 #define SN95031_BTNCTRL2                0x26C
75 #define SN95031_PCM1TXSLOT01            0x26D
76 #define SN95031_PCM1TXSLOT23            0x26E
77 #define SN95031_PCM1TXSLOT45            0x26F
78 #define SN95031_PCM1RXSLOT0_3           0x270
79 #define SN95031_PCM1RXSLOT45            0x271
80 #define SN95031_PCM2TXSLOT01            0x272
81 #define SN95031_PCM2TXSLOT23            0x273
82 #define SN95031_PCM2TXSLOT45            0x274
83 #define SN95031_PCM2RXSLOT01            0x275
84 #define SN95031_PCM2RXSLOT23            0x276
85 #define SN95031_PCM2RXSLOT45            0x277
86 #define SN95031_PCM1C1                  0x278
87 #define SN95031_PCM1C2                  0x279
88 #define SN95031_PCM1C3                  0x27A
89 #define SN95031_PCM2C1                  0x27B
90 #define SN95031_PCM2C2                  0x27C
91 /*end codec register defn*/
92
93 /*vendor defn these are not part of avp*/
94 #define SN95031_SSR2                    0x381
95 #define SN95031_SSR3                    0x382
96 #define SN95031_SSR5                    0x384
97 #define SN95031_SSR6                    0x385
98
99 /* ADC registers */
100
101 #define SN95031_ADC1CNTL1 0x1C0
102 #define SN95031_ADC_ENBL 0x10
103 #define SN95031_ADC_START 0x08
104 #define SN95031_ADC1CNTL3 0x1C2
105 #define SN95031_ADCTHERM_ENBL 0x04
106 #define SN95031_ADCRRDATA_ENBL 0x05
107 #define SN95031_STOPBIT_MASK 16
108 #define SN95031_ADCTHERM_MASK 4
109 #define SN95031_ADC_CHANLS_MAX 15 /* Number of ADC channels */
110 #define SN95031_ADC_LOOP_MAX (SN95031_ADC_CHANLS_MAX - 1)
111 #define SN95031_ADC_NO_LOOP 0x07
112 #define SN95031_AUDIO_GPIO_CTRL 0x070
113
114 /* ADC channel code values */
115 #define SN95031_AUDIO_DETECT_CODE 0x06
116
117 /* ADC base addresses */
118 #define SN95031_ADC_CHNL_START_ADDR 0x1C5 /* increments by 1 */
119 #define SN95031_ADC_DATA_START_ADDR 0x1D4  /* increments by 2 */
120 /* multipier to convert to mV */
121 #define SN95031_ADC_ONE_LSB_MULTIPLIER 2346
122
123
124 struct mfld_jack_data {
125         int intr_id;
126         int micbias_vol;
127         struct snd_soc_jack *mfld_jack;
128 };
129
130 extern void sn95031_jack_detection(struct mfld_jack_data *jack_data);
131
132 #endif