Linux 3.8-rc7
[cris-mirror.git] / sound / soc / codecs / sn95031.h
blob20376d234fb83eb26c3bb5eac6c31bc21d5ab24d
1 /*
2 * sn95031.h - TI sn95031 Codec driver
4 * Copyright (C) 2010 Intel Corp
5 * Author: Vinod Koul <vinod.koul@intel.com>
6 * Author: Harsha Priya <priya.harsha@intel.com>
7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
22 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 #ifndef _SN95031_H
27 #define _SN95031_H
29 /*register map*/
30 #define SN95031_VAUD 0xDB
31 #define SN95031_VHSP 0xDC
32 #define SN95031_VHSN 0xDD
33 #define SN95031_VIHF 0xC9
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*/
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
99 /* ADC registers */
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
114 /* ADC channel code values */
115 #define SN95031_AUDIO_DETECT_CODE 0x06
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
124 struct mfld_jack_data {
125 int intr_id;
126 int micbias_vol;
127 struct snd_soc_jack *mfld_jack;
130 extern void sn95031_jack_detection(struct mfld_jack_data *jack_data);
132 #endif