]> git.karo-electronics.de Git - karo-tx-linux.git/blob - sound/soc/codecs/msm8916-wcd.h
Merge remote-tracking branch 'todor/release/qcomlt-4.4-camss-demo2' into release...
[karo-tx-linux.git] / sound / soc / codecs / msm8916-wcd.h
1 /* Copyright (c) 2016, The Linux Foundation. All rights reserved.
2  *
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 and
5  * only version 2 as published by the Free Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  */
12 #ifndef MSM8916_WCD_H
13 #define MSM8916_WCD_H
14
15 #include "msm8916-wcd-registers.h"
16
17 #define MSM8916_WCD_NUM_REGISTERS       0x6FF
18 #define MSM8916_WCD_MAX_REGISTER        (MSM8916_WCD_NUM_REGISTERS-1)
19 #define MSM8916_WCD_REG_VAL(reg, val)           {reg, 0, val}
20 #define MSM8916_WCD_REG_VAL_MASK        0xFF
21 #define MSM8916_WCD_DIGITAL_REG(reg) ((reg ^ 0x0200) & 0x0FFF)
22 #define MSM8916_WCD_IS_DIGITAL_REG(reg) \
23         (((reg >= 0x200) && (reg <= 0x4FF)) ? 1 : 0)
24 #define MSM8916_WCD_IS_TOMBAK_REG(reg) \
25         (((reg >= 0x000) && (reg <= 0x1FF)) ? 1 : 0)
26 #define TOMBAK_VERSION_1_0      0
27 #define TOMBAK_IS_1_0(ver) ((ver == TOMBAK_VERSION_1_0) ? 1 : 0)
28
29 struct msm8916_wcd_reg_mask_val {
30         u16 reg;
31         u8 mask;
32         u8 val;
33 };
34
35 const u8 msm8916_wcd_reg_readonly[MSM8916_WCD_NUM_REGISTERS] = {
36         [CDC_D_REVISION1] = 1,
37         [CDC_D_REVISION2] = 1,
38         [CDC_D_PERPH_TYPE] = 1,
39         [CDC_D_PERPH_SUBTYPE] = 1,
40         [CDC_D_INT_RT_STS] = 1,
41         [CDC_D_INT_SET_TYPE] = 1,
42         [CDC_D_INT_POLARITY_HIGH] = 1,
43         [CDC_D_INT_POLARITY_LOW] = 1,
44         [CDC_D_INT_LATCHED_STS] = 1,
45         [CDC_D_INT_PENDING_STS] = 1,
46         [CDC_D_PIN_STATUS] = 1,
47         [CDC_A_REVISION1] = 1,
48         [CDC_A_REVISION2] = 1,
49         [CDC_A_REVISION3] = 1,
50         [CDC_A_REVISION4] = 1,
51         [CDC_A_PERPH_TYPE] = 1,
52         [CDC_A_PERPH_SUBTYPE] = 1,
53         [CDC_A_INT_RT_STS] = 1,
54         [CDC_A_INT_SET_TYPE] = 1,
55         [CDC_A_INT_POLARITY_HIGH] = 1,
56         [CDC_A_INT_POLARITY_LOW] = 1,
57         [CDC_A_INT_LATCHED_STS] = 1,
58         [CDC_A_INT_PENDING_STS] = 1,
59         [CDC_A_MBHC_BTN_RESULT] = 1,
60         [CDC_A_MBHC_ZDET_ELECT_RESULT] = 1,
61         [CDC_A_RX_HPH_STATUS] = 1,
62         [CDC_A_RX_EAR_STATUS] = 1,
63         [CDC_A_SPKR_SAR_STATUS] = 1,
64         [CDC_A_SPKR_DRV_STATUS] = 1,
65         [LPASS_CDC_RX1_B1_CTL] = 1,
66         [LPASS_CDC_RX2_B1_CTL] = 1,
67         [LPASS_CDC_RX3_B1_CTL] = 1,
68         [LPASS_CDC_RX1_B6_CTL] = 1,
69         [LPASS_CDC_RX2_B6_CTL] = 1,
70         [LPASS_CDC_RX3_B6_CTL] = 1,
71         [LPASS_CDC_TX1_VOL_CTL_CFG] = 1,
72         [LPASS_CDC_TX2_VOL_CTL_CFG] = 1,
73         [LPASS_CDC_IIR1_COEF_B1_CTL] = 1,
74         [LPASS_CDC_IIR2_COEF_B1_CTL] = 1,
75         [LPASS_CDC_CLK_MCLK_CTL] = 1,
76         [LPASS_CDC_CLK_PDM_CTL] = 1,
77 };
78
79 #define MSM8916_REG_POR(reg)    [reg] = reg##_POR
80
81 u8 msm8916_wcd_reset_reg_defaults[MSM8916_WCD_NUM_REGISTERS] = {
82         MSM8916_REG_POR(CDC_D_REVISION1),
83         MSM8916_REG_POR(CDC_D_REVISION2),
84         MSM8916_REG_POR(CDC_D_PERPH_TYPE),
85         MSM8916_REG_POR(CDC_D_PERPH_SUBTYPE),
86         MSM8916_REG_POR(CDC_D_INT_RT_STS),
87         MSM8916_REG_POR(CDC_D_INT_SET_TYPE),
88         MSM8916_REG_POR(CDC_D_INT_POLARITY_HIGH),
89         MSM8916_REG_POR(CDC_D_INT_POLARITY_LOW),
90         MSM8916_REG_POR(CDC_D_INT_LATCHED_CLR),
91         MSM8916_REG_POR(CDC_D_INT_EN_SET),
92         MSM8916_REG_POR(CDC_D_INT_EN_CLR),
93         MSM8916_REG_POR(CDC_D_INT_LATCHED_STS),
94         MSM8916_REG_POR(CDC_D_INT_PENDING_STS),
95         MSM8916_REG_POR(CDC_D_INT_MID_SEL),
96         MSM8916_REG_POR(CDC_D_INT_PRIORITY),
97         MSM8916_REG_POR(CDC_D_GPIO_MODE),
98         MSM8916_REG_POR(CDC_D_PIN_CTL_OE),
99         MSM8916_REG_POR(CDC_D_PIN_CTL_DATA),
100         MSM8916_REG_POR(CDC_D_PIN_STATUS),
101         MSM8916_REG_POR(CDC_D_HDRIVE_CTL),
102         MSM8916_REG_POR(CDC_D_CDC_RST_CTL),
103         MSM8916_REG_POR(CDC_D_CDC_TOP_CLK_CTL),
104         MSM8916_REG_POR(CDC_D_CDC_ANA_CLK_CTL),
105         MSM8916_REG_POR(CDC_D_CDC_DIG_CLK_CTL),
106         MSM8916_REG_POR(CDC_D_CDC_CONN_TX1_CTL),
107         MSM8916_REG_POR(CDC_D_CDC_CONN_TX2_CTL),
108         MSM8916_REG_POR(CDC_D_CDC_CONN_HPHR_DAC_CTL),
109         MSM8916_REG_POR(CDC_D_CDC_CONN_RX1_CTL),
110         MSM8916_REG_POR(CDC_D_CDC_CONN_RX2_CTL),
111         MSM8916_REG_POR(CDC_D_CDC_CONN_RX3_CTL),
112         MSM8916_REG_POR(CDC_D_CDC_CONN_RX_LB_CTL),
113         MSM8916_REG_POR(CDC_D_CDC_RX_CTL1),
114         MSM8916_REG_POR(CDC_D_CDC_RX_CTL2),
115         MSM8916_REG_POR(CDC_D_CDC_RX_CTL3),
116         MSM8916_REG_POR(CDC_D_DEM_BYPASS_DATA0),
117         MSM8916_REG_POR(CDC_D_DEM_BYPASS_DATA1),
118         MSM8916_REG_POR(CDC_D_DEM_BYPASS_DATA2),
119         MSM8916_REG_POR(CDC_D_DEM_BYPASS_DATA3),
120         MSM8916_REG_POR(CDC_D_SPARE_0),
121         MSM8916_REG_POR(CDC_D_SPARE_1),
122         MSM8916_REG_POR(CDC_D_SPARE_2),
123         MSM8916_REG_POR(CDC_A_REVISION1),
124         MSM8916_REG_POR(CDC_A_REVISION2),
125         MSM8916_REG_POR(CDC_A_REVISION3),
126         MSM8916_REG_POR(CDC_A_REVISION4),
127         MSM8916_REG_POR(CDC_A_PERPH_TYPE),
128         MSM8916_REG_POR(CDC_A_PERPH_SUBTYPE),
129         MSM8916_REG_POR(CDC_A_INT_RT_STS),
130         MSM8916_REG_POR(CDC_A_INT_SET_TYPE),
131         MSM8916_REG_POR(CDC_A_INT_POLARITY_HIGH),
132         MSM8916_REG_POR(CDC_A_INT_POLARITY_LOW),
133         MSM8916_REG_POR(CDC_A_INT_LATCHED_CLR),
134         MSM8916_REG_POR(CDC_A_INT_EN_SET),
135         MSM8916_REG_POR(CDC_A_INT_EN_CLR),
136         MSM8916_REG_POR(CDC_A_INT_LATCHED_STS),
137         MSM8916_REG_POR(CDC_A_INT_PENDING_STS),
138         MSM8916_REG_POR(CDC_A_INT_MID_SEL),
139         MSM8916_REG_POR(CDC_A_INT_PRIORITY),
140         MSM8916_REG_POR(CDC_A_MICB_1_EN),
141         MSM8916_REG_POR(CDC_A_MICB_1_VAL),
142         MSM8916_REG_POR(CDC_A_MICB_1_CTL),
143         MSM8916_REG_POR(CDC_A_MICB_1_INT_RBIAS),
144         MSM8916_REG_POR(CDC_A_MICB_2_EN),
145         MSM8916_REG_POR(CDC_A_MBHC_DET_CTL_1),
146         MSM8916_REG_POR(CDC_A_MBHC_DET_CTL_2),
147         MSM8916_REG_POR(CDC_A_MBHC_FSM_CTL),
148         MSM8916_REG_POR(CDC_A_MBHC_DBNC_TIMER),
149         MSM8916_REG_POR(CDC_A_MBHC_BTN0_ZDETL_CTL),
150         MSM8916_REG_POR(CDC_A_MBHC_BTN1_ZDETM_CTL),
151         MSM8916_REG_POR(CDC_A_MBHC_BTN2_ZDETH_CTL),
152         MSM8916_REG_POR(CDC_A_MBHC_BTN3_CTL),
153         MSM8916_REG_POR(CDC_A_MBHC_BTN4_CTL),
154         MSM8916_REG_POR(CDC_A_MBHC_BTN_RESULT),
155         MSM8916_REG_POR(CDC_A_MBHC_ZDET_ELECT_RESULT),
156         MSM8916_REG_POR(CDC_A_TX_1_EN),
157         MSM8916_REG_POR(CDC_A_TX_2_EN),
158         MSM8916_REG_POR(CDC_A_TX_1_2_TEST_CTL_1),
159         MSM8916_REG_POR(CDC_A_TX_1_2_TEST_CTL_2),
160         MSM8916_REG_POR(CDC_A_TX_1_2_ATEST_CTL),
161         MSM8916_REG_POR(CDC_A_TX_1_2_OPAMP_BIAS),
162         MSM8916_REG_POR(CDC_A_TX_1_2_TXFE_CLKDIV),
163         MSM8916_REG_POR(CDC_A_TX_3_EN),
164         MSM8916_REG_POR(CDC_A_NCP_EN),
165         MSM8916_REG_POR(CDC_A_NCP_CLK),
166         MSM8916_REG_POR(CDC_A_NCP_DEGLITCH),
167         MSM8916_REG_POR(CDC_A_NCP_FBCTRL),
168         MSM8916_REG_POR(CDC_A_NCP_BIAS),
169         MSM8916_REG_POR(CDC_A_NCP_VCTRL),
170         MSM8916_REG_POR(CDC_A_NCP_TEST),
171         MSM8916_REG_POR(CDC_A_RX_CLOCK_DIVIDER),
172         MSM8916_REG_POR(CDC_A_RX_COM_OCP_CTL),
173         MSM8916_REG_POR(CDC_A_RX_COM_OCP_COUNT),
174         MSM8916_REG_POR(CDC_A_RX_COM_BIAS_DAC),
175         MSM8916_REG_POR(CDC_A_RX_HPH_BIAS_PA),
176         MSM8916_REG_POR(CDC_A_RX_HPH_BIAS_LDO_OCP),
177         MSM8916_REG_POR(CDC_A_RX_HPH_BIAS_CNP),
178         MSM8916_REG_POR(CDC_A_RX_HPH_CNP_EN),
179         MSM8916_REG_POR(CDC_A_RX_HPH_CNP_WG_CTL),
180         MSM8916_REG_POR(CDC_A_RX_HPH_CNP_WG_TIME),
181         MSM8916_REG_POR(CDC_A_RX_HPH_L_TEST),
182         MSM8916_REG_POR(CDC_A_RX_HPH_L_PA_DAC_CTL),
183         MSM8916_REG_POR(CDC_A_RX_HPH_R_TEST),
184         MSM8916_REG_POR(CDC_A_RX_HPH_R_PA_DAC_CTL),
185         MSM8916_REG_POR(CDC_A_RX_EAR_CTL),
186         MSM8916_REG_POR(CDC_A_RX_ATEST),
187         MSM8916_REG_POR(CDC_A_RX_HPH_STATUS),
188         MSM8916_REG_POR(CDC_A_RX_EAR_STATUS),
189         MSM8916_REG_POR(CDC_A_SPKR_DAC_CTL),
190         MSM8916_REG_POR(CDC_A_SPKR_DRV_CLIP_DET),
191         MSM8916_REG_POR(CDC_A_SPKR_DRV_CTL),
192         MSM8916_REG_POR(CDC_A_SPKR_ANA_BIAS_SET),
193         MSM8916_REG_POR(CDC_A_SPKR_OCP_CTL),
194         MSM8916_REG_POR(CDC_A_SPKR_PWRSTG_CTL),
195         MSM8916_REG_POR(CDC_A_SPKR_DRV_MISC),
196         MSM8916_REG_POR(CDC_A_SPKR_DRV_DBG),
197         MSM8916_REG_POR(CDC_A_CURRENT_LIMIT),
198         MSM8916_REG_POR(CDC_A_OUTPUT_VOLTAGE),
199         MSM8916_REG_POR(CDC_A_BYPASS_MODE),
200         MSM8916_REG_POR(CDC_A_BOOST_EN_CTL),
201         MSM8916_REG_POR(CDC_A_SLOPE_COMP_IP_ZERO),
202         MSM8916_REG_POR(CDC_A_RDSON_MAX_DUTY_CYCLE),
203         MSM8916_REG_POR(CDC_A_BOOST_TEST1_1),
204         MSM8916_REG_POR(CDC_A_BOOST_TEST_2),
205         MSM8916_REG_POR(CDC_A_SPKR_SAR_STATUS),
206         MSM8916_REG_POR(CDC_A_SPKR_DRV_STATUS),
207         MSM8916_REG_POR(CDC_A_PBUS_ADD_CSR),
208         MSM8916_REG_POR(CDC_A_PBUS_ADD_SEL),
209         MSM8916_REG_POR(LPASS_CDC_CLK_RX_RESET_CTL),
210         MSM8916_REG_POR(LPASS_CDC_CLK_TX_RESET_B1_CTL),
211         MSM8916_REG_POR(LPASS_CDC_CLK_DMIC_B1_CTL),
212         MSM8916_REG_POR(LPASS_CDC_CLK_RX_I2S_CTL),
213         MSM8916_REG_POR(LPASS_CDC_CLK_TX_I2S_CTL),
214         MSM8916_REG_POR(LPASS_CDC_CLK_OTHR_RESET_B1_CTL),
215         MSM8916_REG_POR(LPASS_CDC_CLK_TX_CLK_EN_B1_CTL),
216         MSM8916_REG_POR(LPASS_CDC_CLK_OTHR_CTL),
217         MSM8916_REG_POR(LPASS_CDC_CLK_RX_B1_CTL),
218         MSM8916_REG_POR(LPASS_CDC_CLK_MCLK_CTL),
219         MSM8916_REG_POR(LPASS_CDC_CLK_PDM_CTL),
220         MSM8916_REG_POR(LPASS_CDC_CLK_SD_CTL),
221         MSM8916_REG_POR(LPASS_CDC_RX1_B1_CTL),
222         MSM8916_REG_POR(LPASS_CDC_RX2_B1_CTL),
223         MSM8916_REG_POR(LPASS_CDC_RX3_B1_CTL),
224         MSM8916_REG_POR(LPASS_CDC_RX1_B2_CTL),
225         MSM8916_REG_POR(LPASS_CDC_RX2_B2_CTL),
226         MSM8916_REG_POR(LPASS_CDC_RX3_B2_CTL),
227         MSM8916_REG_POR(LPASS_CDC_RX1_B3_CTL),
228         MSM8916_REG_POR(LPASS_CDC_RX2_B3_CTL),
229         MSM8916_REG_POR(LPASS_CDC_RX3_B3_CTL),
230         MSM8916_REG_POR(LPASS_CDC_RX1_B4_CTL),
231         MSM8916_REG_POR(LPASS_CDC_RX2_B4_CTL),
232         MSM8916_REG_POR(LPASS_CDC_RX3_B4_CTL),
233         MSM8916_REG_POR(LPASS_CDC_RX1_B5_CTL),
234         MSM8916_REG_POR(LPASS_CDC_RX2_B5_CTL),
235         MSM8916_REG_POR(LPASS_CDC_RX3_B5_CTL),
236         MSM8916_REG_POR(LPASS_CDC_RX1_B6_CTL),
237         MSM8916_REG_POR(LPASS_CDC_RX2_B6_CTL),
238         MSM8916_REG_POR(LPASS_CDC_RX3_B6_CTL),
239         MSM8916_REG_POR(LPASS_CDC_RX1_VOL_CTL_B1_CTL),
240         MSM8916_REG_POR(LPASS_CDC_RX2_VOL_CTL_B1_CTL),
241         MSM8916_REG_POR(LPASS_CDC_RX3_VOL_CTL_B1_CTL),
242         MSM8916_REG_POR(LPASS_CDC_RX1_VOL_CTL_B2_CTL),
243         MSM8916_REG_POR(LPASS_CDC_RX2_VOL_CTL_B2_CTL),
244         MSM8916_REG_POR(LPASS_CDC_RX3_VOL_CTL_B2_CTL),
245         MSM8916_REG_POR(LPASS_CDC_TOP_GAIN_UPDATE),
246         MSM8916_REG_POR(LPASS_CDC_TOP_CTL),
247         MSM8916_REG_POR(LPASS_CDC_DEBUG_DESER1_CTL),
248         MSM8916_REG_POR(LPASS_CDC_DEBUG_DESER2_CTL),
249         MSM8916_REG_POR(LPASS_CDC_DEBUG_B1_CTL_CFG),
250         MSM8916_REG_POR(LPASS_CDC_DEBUG_B2_CTL_CFG),
251         MSM8916_REG_POR(LPASS_CDC_DEBUG_B3_CTL_CFG),
252         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B1_CTL),
253         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B1_CTL),
254         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B2_CTL),
255         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B2_CTL),
256         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B3_CTL),
257         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B3_CTL),
258         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B4_CTL),
259         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B4_CTL),
260         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B5_CTL),
261         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B5_CTL),
262         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B6_CTL),
263         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B6_CTL),
264         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B7_CTL),
265         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B7_CTL),
266         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_B8_CTL),
267         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_B8_CTL),
268         MSM8916_REG_POR(LPASS_CDC_IIR1_CTL),
269         MSM8916_REG_POR(LPASS_CDC_IIR2_CTL),
270         MSM8916_REG_POR(LPASS_CDC_IIR1_GAIN_TIMER_CTL),
271         MSM8916_REG_POR(LPASS_CDC_IIR2_GAIN_TIMER_CTL),
272         MSM8916_REG_POR(LPASS_CDC_IIR1_COEF_B1_CTL),
273         MSM8916_REG_POR(LPASS_CDC_IIR2_COEF_B1_CTL),
274         MSM8916_REG_POR(LPASS_CDC_IIR1_COEF_B2_CTL),
275         MSM8916_REG_POR(LPASS_CDC_IIR2_COEF_B2_CTL),
276         MSM8916_REG_POR(LPASS_CDC_CONN_RX1_B1_CTL),
277         MSM8916_REG_POR(LPASS_CDC_CONN_RX1_B2_CTL),
278         MSM8916_REG_POR(LPASS_CDC_CONN_RX1_B3_CTL),
279         MSM8916_REG_POR(LPASS_CDC_CONN_RX2_B1_CTL),
280         MSM8916_REG_POR(LPASS_CDC_CONN_RX2_B2_CTL),
281         MSM8916_REG_POR(LPASS_CDC_CONN_RX2_B3_CTL),
282         MSM8916_REG_POR(LPASS_CDC_CONN_RX3_B1_CTL),
283         MSM8916_REG_POR(LPASS_CDC_CONN_RX3_B2_CTL),
284         MSM8916_REG_POR(LPASS_CDC_CONN_TX_B1_CTL),
285         MSM8916_REG_POR(LPASS_CDC_CONN_EQ1_B1_CTL),
286         MSM8916_REG_POR(LPASS_CDC_CONN_EQ1_B2_CTL),
287         MSM8916_REG_POR(LPASS_CDC_CONN_EQ1_B3_CTL),
288         MSM8916_REG_POR(LPASS_CDC_CONN_EQ1_B4_CTL),
289         MSM8916_REG_POR(LPASS_CDC_CONN_EQ2_B1_CTL),
290         MSM8916_REG_POR(LPASS_CDC_CONN_EQ2_B2_CTL),
291         MSM8916_REG_POR(LPASS_CDC_CONN_EQ2_B3_CTL),
292         MSM8916_REG_POR(LPASS_CDC_CONN_EQ2_B4_CTL),
293         MSM8916_REG_POR(LPASS_CDC_CONN_TX_I2S_SD1_CTL),
294         MSM8916_REG_POR(LPASS_CDC_TX1_VOL_CTL_TIMER),
295         MSM8916_REG_POR(LPASS_CDC_TX2_VOL_CTL_TIMER),
296         MSM8916_REG_POR(LPASS_CDC_TX1_VOL_CTL_GAIN),
297         MSM8916_REG_POR(LPASS_CDC_TX2_VOL_CTL_GAIN),
298         MSM8916_REG_POR(LPASS_CDC_TX1_VOL_CTL_CFG),
299         MSM8916_REG_POR(LPASS_CDC_TX2_VOL_CTL_CFG),
300         MSM8916_REG_POR(LPASS_CDC_TX1_MUX_CTL),
301         MSM8916_REG_POR(LPASS_CDC_TX2_MUX_CTL),
302         MSM8916_REG_POR(LPASS_CDC_TX1_CLK_FS_CTL),
303         MSM8916_REG_POR(LPASS_CDC_TX2_CLK_FS_CTL),
304         MSM8916_REG_POR(LPASS_CDC_TX1_DMIC_CTL),
305         MSM8916_REG_POR(LPASS_CDC_TX2_DMIC_CTL),
306 };
307
308 #endif /* MSM8916_WCD_H */