blob: 357651ec074e6e2c5f0110c86f65822023b34d6b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
/*
* alc5632.h -- ALC5632 ALSA SoC Audio Codec
*
* Copyright (C) 2011 The AC100 Kernel Team <ac100@lists.lauchpad.net>
*
* Authors: Leon Romanovsky <leon@leon.nu>
* Andrey Danin <danindrey@mail.ru>
* Ilya Petrov <ilya.muromec@gmail.com>
* Marc Dietrich <marvin24@gmx.de>
*
* Based on alc5623.h by Arnaud Patard
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _ALC5632_H
#define _ALC5632_H
#define ALC5632_RESET 0x00
/* speaker output vol 2 2 */
/* line output vol 4 2 */
/* HP output vol 4 0 4 */
#define ALC5632_SPK_OUT_VOL 0x02 /* spe out vol */
#define ALC5632_SPK_OUT_VOL_STEP 1.5
#define ALC5632_HP_OUT_VOL 0x04 /* hp out vol */
#define ALC5632_AUX_OUT_VOL 0x06 /* aux out vol */
#define ALC5632_PHONE_IN_VOL 0x08 /* phone in vol */
#define ALC5632_LINE_IN_VOL 0x0A /* line in vol */
#define ALC5632_STEREO_DAC_IN_VOL 0x0C /* stereo dac in vol */
#define ALC5632_MIC_VOL 0x0E /* mic in vol */
/* stero dac/mic routing */
#define ALC5632_MIC_ROUTING_CTRL 0x10
#define ALC5632_MIC_ROUTE_MONOMIX (1 << 0)
#define ALC5632_MIC_ROUTE_SPK (1 << 1)
#define ALC5632_MIC_ROUTE_HP (1 << 2)
#define ALC5632_ADC_REC_GAIN 0x12 /* rec gain */
#define ALC5632_ADC_REC_GAIN_RANGE 0x1F1F
#define ALC5632_ADC_REC_GAIN_BASE (-16.5)
#define ALC5632_ADC_REC_GAIN_STEP 1.5
#define ALC5632_ADC_REC_MIXER 0x14 /* mixer control */
#define ALC5632_ADC_REC_MIC1 (1 << 6)
#define ALC5632_ADC_REC_MIC2 (1 << 5)
#define ALC5632_ADC_REC_LINE_IN (1 << 4)
#define ALC5632_ADC_REC_AUX (1 << 3)
#define ALC5632_ADC_REC_HP (1 << 2)
#define ALC5632_ADC_REC_SPK (1 << 1)
#define ALC5632_ADC_REC_MONOMIX (1 << 0)
#define ALC5632_VOICE_DAC_VOL 0x18 /* voice dac vol */
/* ALC5632_OUTPUT_MIXER_CTRL : */
/* same remark as for reg 2 line vs speaker */
#define ALC5632_OUTPUT_MIXER_CTRL 0x1C /* out mix ctrl */
#define ALC5632_OUTPUT_MIXER_RP (1 << 14)
#define ALC5632_OUTPUT_MIXER_WEEK (1 << 12)
#define ALC5632_OUTPUT_MIXER_HP (1 << 10)
#define ALC5632_OUTPUT_MIXER_AUX_SPK (2 << 6)
#define ALC5632_OUTPUT_MIXER_AUX_HP_LR (1 << 6)
#define ALC5632_OUTPUT_MIXER_HP_R (1 << 8)
#define ALC5632_OUTPUT_MIXER_HP_L (1 << 9)
#define ALC5632_MIC_CTRL 0x22 /* mic phone ctrl */
#define ALC5632_MIC_BOOST_BYPASS 0
#define ALC5632_MIC_BOOST_20DB 1
#define ALC5632_MIC_BOOST_30DB 2
#define ALC5632_MIC_BOOST_40DB 3
#define ALC5632_DIGI_BOOST_CTRL 0x24 /* digi mic / bost ctl */
#define ALC5632_MIC_BOOST_RANGE 7
#define ALC5632_MIC_BOOST_STEP 6
#define ALC5632_PWR_DOWN_CTRL_STATUS 0x26
#define ALC5632_PWR_DOWN_CTRL_STATUS_MASK 0xEF00
#define ALC5632_PWR_VREF_PR3 (1 << 11)
#define ALC5632_PWR_VREF_PR2 (1 << 10)
#define ALC5632_PWR_VREF_STATUS (1 << 3)
#define ALC5632_PWR_AMIX_STATUS (1 << 2)
#define ALC5632_PWR_DAC_STATUS (1 << 1)
#define ALC5632_PWR_ADC_STATUS (1 << 0)
/* stereo/voice DAC / stereo adc func ctrl */
#define ALC5632_DAC_FUNC_SELECT 0x2E
/* Main serial data port ctrl (i2s) */
#define ALC5632_DAI_CONTROL 0x34
#define ALC5632_DAI_SDP_MASTER_MODE (0 << 15)
#define ALC5632_DAI_SDP_SLAVE_MODE (1 << 15)
#define ALC5632_DAI_SADLRCK_MODE (1 << 14)
/* 0:voice, 1:main */
#define ALC5632_DAI_MAIN_I2S_SYSCLK_SEL (1 << 8)
#define ALC5632_DAI_MAIN_I2S_BCLK_POL_CTRL (1 << 7)
/* 0:normal, 1:invert */
#define ALC5632_DAI_MAIN_I2S_LRCK_INV (1 << 6)
#define ALC5632_DAI_I2S_DL_MASK (3 << 2)
#define ALC5632_DAI_I2S_DL_8 (3 << 2)
#define ALC5632_DAI_I2S_DL_24 (2 << 2)
#define ALC5632_DAI_I2S_DL_20 (1 << 2)
#define ALC5632_DAI_I2S_DL_16 (0 << 2)
#define ALC5632_DAI_I2S_DF_MASK (3 << 0)
#define ALC5632_DAI_I2S_DF_PCM_B (3 << 0)
#define ALC5632_DAI_I2S_DF_PCM_A (2 << 0)
#define ALC5632_DAI_I2S_DF_LEFT (1 << 0)
#define ALC5632_DAI_I2S_DF_I2S (0 << 0)
/* extend serial data port control (VoDAC_i2c/pcm) */
#define ALC5632_DAI_CONTROL2 0x36
/* 0:gpio func, 1:voice pcm */
#define ALC5632_DAI_VOICE_PCM_ENABLE (1 << 15)
/* 0:master, 1:slave */
#define ALC5632_DAI_VOICE_MODE_SEL (1 << 14)
/* 0:disable, 1:enable */
#define ALC5632_DAI_HPF_CLK_CTRL (1 << 13)
/* 0:main, 1:voice */
#define ALC5632_DAI_VOICE_I2S_SYSCLK_SEL (1 << 8)
/* 0:normal, 1:invert */
#define ALC5632_DAI_VOICE_VBCLK_SYSCLK_SEL (1 << 7)
/* 0:normal, 1:invert */
#define ALC5632_DAI_VOICE_I2S_LR_INV (1 << 6)
#define ALC5632_DAI_VOICE_DL_MASK (3 << 2)
#define ALC5632_DAI_VOICE_DL_16 (0 << 2)
#define ALC5632_DAI_VOICE_DL_20 (1 << 2)
#define ALC5632_DAI_VOICE_DL_24 (2 << 2)
#define ALC5632_DAI_VOICE_DL_8 (3 << 2)
#define ALC5632_DAI_VOICE_DF_MASK (3 << 0)
#define ALC5632_DAI_VOICE_DF_I2S (0 << 0)
#define ALC5632_DAI_VOICE_DF_LEFT (1 << 0)
#define ALC5632_DAI_VOICE_DF_PCM_A (2 << 0)
#define ALC5632_DAI_VOICE_DF_PCM_B (3 << 0)
#define ALC5632_PWR_MANAG_ADD1 0x3A
#define ALC5632_PWR_MANAG_ADD1_MASK 0xEFFF
#define ALC5632_PWR_ADD1_DAC_L_EN (1 << 15)
#define ALC5632_PWR_ADD1_DAC_R_EN (1 << 14)
#define ALC5632_PWR_ADD1_ZERO_CROSS (1 << 13)
#define ALC5632_PWR_ADD1_MAIN_I2S_EN (1 << 11)
#define ALC5632_PWR_ADD1_SPK_AMP_EN (1 << 10)
#define ALC5632_PWR_ADD1_HP_OUT_AMP (1 << 9)
#define ALC5632_PWR_ADD1_HP_OUT_ENH_AMP (1 << 8)
#define ALC5632_PWR_ADD1_VOICE_DAC_MIX (1 << 7)
#define ALC5632_PWR_ADD1_SOFTGEN_EN (1 << 6)
#define ALC5632_PWR_ADD1_MIC1_SHORT_CURR (1 << 5)
#define ALC5632_PWR_ADD1_MIC2_SHORT_CURR (1 << 4)
#define ALC5632_PWR_ADD1_MIC1_EN (1 << 3)
#define ALC5632_PWR_ADD1_MIC2_EN (1 << 2)
#define ALC5632_PWR_ADD1_MAIN_BIAS (1 << 1)
#define ALC5632_PWR_ADD1_DAC_REF (1 << 0)
#define ALC5632_PWR_MANAG_ADD2 0x3C
#define ALC5632_PWR_MANAG_ADD2_MASK 0x7FFF
#define ALC5632_PWR_ADD2_PLL1 (1 << 15)
#define ALC5632_PWR_ADD2_PLL2 (1 << 14)
#define ALC5632_PWR_ADD2_VREF (1 << 13)
#define ALC5632_PWR_ADD2_OVT_DET (1 << 12)
#define ALC5632_PWR_ADD2_VOICE_DAC (1 << 10)
#define ALC5632_PWR_ADD2_L_DAC_CLK (1 << 9)
#define ALC5632_PWR_ADD2_R_DAC_CLK (1 << 8)
#define ALC5632_PWR_ADD2_L_ADC_CLK_GAIN (1 << 7)
#define ALC5632_PWR_ADD2_R_ADC_CLK_GAIN (1 << 6)
#define ALC5632_PWR_ADD2_L_HP_MIXER (1 << 5)
#define ALC5632_PWR_ADD2_R_HP_MIXER (1 << 4)
#define ALC5632_PWR_ADD2_SPK_MIXER (1 << 3)
#define ALC5632_PWR_ADD2_MONO_MIXER (1 << 2)
#define ALC5632_PWR_ADD2_L_ADC_REC_MIXER (1 << 1)
#define ALC5632_PWR_ADD2_R_ADC_REC_MIXER (1 << 0)
#define ALC5632_PWR_MANAG_ADD3 0x3E
#define ALC5632_PWR_MANAG_ADD3_MASK 0x7CFF
#define ALC5632_PWR_ADD3_AUXOUT_VOL (1 << 14)
#define ALC5632_PWR_ADD3_SPK_L_OUT (1 << 13)
#define ALC5632_PWR_ADD3_SPK_R_OUT (1 << 12)
#define ALC5632_PWR_ADD3_HP_L_OUT_VOL (1 << 11)
#define ALC5632_PWR_ADD3_HP_R_OUT_VOL (1 << 10)
#define ALC5632_PWR_ADD3_LINEIN_L_VOL (1 << 7)
#define ALC5632_PWR_ADD3_LINEIN_R_VOL (1 << 6)
#define ALC5632_PWR_ADD3_AUXIN_VOL (1 << 5)
#define ALC5632_PWR_ADD3_AUXIN_MIX (1 << 4)
#define ALC5632_PWR_ADD3_MIC1_VOL (1 << 3)
#define ALC5632_PWR_ADD3_MIC2_VOL (1 << 2)
#define ALC5632_PWR_ADD3_MIC1_BOOST_AD (1 << 1)
#define ALC5632_PWR_ADD3_MIC2_BOOST_AD (1 << 0)
#define ALC5632_GPCR1 0x40
#define ALC5632_GPCR1_CLK_SYS_SRC_SEL_PLL1 (1 << 15)
#define ALC5632_GPCR1_CLK_SYS_SRC_SEL_MCLK (0 << 15)
#define ALC5632_GPCR1_DAC_HI_FLT_EN (1 << 10)
#define ALC5632_GPCR1_SPK_AMP_CTRL (7 << 1)
#define ALC5632_GPCR1_VDD_100 (5 << 1)
#define ALC5632_GPCR1_VDD_125 (4 << 1)
#define ALC5632_GPCR1_VDD_150 (3 << 1)
#define ALC5632_GPCR1_VDD_175 (2 << 1)
#define ALC5632_GPCR1_VDD_200 (1 << 1)
#define ALC5632_GPCR1_VDD_225 (0 << 1)
#define ALC5632_GPCR2 0x42
#define ALC5632_GPCR2_PLL1_SOUR_SEL (3 << 12)
#define ALC5632_PLL_FR_MCLK (0 << 12)
#define ALC5632_PLL_FR_BCLK (2 << 12)
#define ALC5632_PLL_FR_VBCLK (3 << 12)
#define ALC5632_GPCR2_CLK_PLL_PRE_DIV1 (0 << 0)
#define ALC5632_PLL1_CTRL 0x44
#define ALC5632_PLL1_CTRL_N_VAL(n) (((n) & 0x0f) << 8)
#define ALC5632_PLL1_M_BYPASS (1 << 7)
#define ALC5632_PLL1_CTRL_K_VAL(k) (((k) & 0x07) << 4)
#define ALC5632_PLL1_CTRL_M_VAL(m) (((m) & 0x0f) << 0)
#define ALC5632_PLL2_CTRL 0x46
#define ALC5632_PLL2_EN (1 << 15)
#define ALC5632_PLL2_RATIO (0 << 15)
#define ALC5632_GPIO_PIN_CONFIG 0x4C
#define ALC5632_GPIO_PIN_POLARITY 0x4E
#define ALC5632_GPIO_PIN_STICKY 0x50
#define ALC5632_GPIO_PIN_WAKEUP 0x52
#define ALC5632_GPIO_PIN_STATUS 0x54
#define ALC5632_GPIO_PIN_SHARING 0x56
#define ALC5632_OVER_CURR_STATUS 0x58
#define ALC5632_SOFTVOL_CTRL 0x5A
#define ALC5632_GPIO_OUPUT_PIN_CTRL 0x5C
#define ALC5632_MISC_CTRL 0x5E
#define ALC5632_MISC_DISABLE_FAST_VREG (1 << 15)
#define ALC5632_MISC_AVC_TRGT_SEL (3 << 12)
#define ALC5632_MISC_AVC_TRGT_RIGHT (1 << 12)
#define ALC5632_MISC_AVC_TRGT_LEFT (2 << 12)
#define ALC5632_MISC_AVC_TRGT_BOTH (3 << 12)
#define ALC5632_MISC_HP_DEPOP_MODE1_EN (1 << 9)
#define ALC5632_MISC_HP_DEPOP_MODE2_EN (1 << 8)
#define ALC5632_MISC_HP_DEPOP_MUTE_L (1 << 7)
#define ALC5632_MISC_HP_DEPOP_MUTE_R (1 << 6)
#define ALC5632_MISC_HP_DEPOP_MUTE (1 << 5)
#define ALC5632_MISC_GPIO_WAKEUP_CTRL (1 << 1)
#define ALC5632_MISC_IRQOUT_INV_CTRL (1 << 0)
#define ALC5632_DAC_CLK_CTRL1 0x60
#define ALC5632_DAC_CLK_CTRL2 0x62
#define ALC5632_DAC_CLK_CTRL2_DIV1_2 (1 << 0)
#define ALC5632_VOICE_DAC_PCM_CLK_CTRL1 0x64
#define ALC5632_PSEUDO_SPATIAL_CTRL 0x68
#define ALC5632_HID_CTRL_INDEX 0x6A
#define ALC5632_HID_CTRL_DATA 0x6C
#define ALC5632_EQ_CTRL 0x6E
/* undocumented */
#define ALC5632_VENDOR_ID1 0x7C
#define ALC5632_VENDOR_ID2 0x7E
#define ALC5632_MAX_REGISTER 0x7E
#endif
|