1/*
2 * lm49453.h  -  LM49453 ALSA Soc Audio drive
3 *
4 * Copyright (c) 2012  Texas Instruments, Inc
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 */
11
12#ifndef _LM49453_H
13#define _LM49453_H
14
15#include <linux/bitops.h>
16
17/* LM49453_P0 register space for page0 */
18#define LM49453_P0_PMC_SETUP_REG			0x00
19#define LM49453_P0_PLL_CLK_SEL1_REG			0x01
20#define LM49453_P0_PLL_CLK_SEL2_REG			0x02
21#define LM49453_P0_PMC_CLK_DIV_REG			0x03
22#define LM49453_P0_HSDET_CLK_DIV_REG			0x04
23#define LM49453_P0_DMIC_CLK_DIV_REG			0x05
24#define LM49453_P0_ADC_CLK_DIV_REG			0x06
25#define LM49453_P0_DAC_OT_CLK_DIV_REG			0x07
26#define LM49453_P0_PLL_HF_M_REG				0x08
27#define LM49453_P0_PLL_LF_M_REG				0x09
28#define LM49453_P0_PLL_NL_REG				0x0A
29#define LM49453_P0_PLL_N_MODL_REG			0x0B
30#define LM49453_P0_PLL_N_MODH_REG			0x0C
31#define LM49453_P0_PLL_P1_REG				0x0D
32#define LM49453_P0_PLL_P2_REG				0x0E
33#define LM49453_P0_FLL_REF_FREQL_REG			0x0F
34#define LM49453_P0_FLL_REF_FREQH_REG			0x10
35#define LM49453_P0_VCO_TARGETLL_REG			0x11
36#define LM49453_P0_VCO_TARGETLH_REG			0x12
37#define LM49453_P0_VCO_TARGETHL_REG			0x13
38#define LM49453_P0_VCO_TARGETHH_REG			0x14
39#define LM49453_P0_PLL_CONFIG_REG			0x15
40#define LM49453_P0_DAC_CLK_SEL_REG			0x16
41#define LM49453_P0_DAC_HP_CLK_DIV_REG			0x17
42
43/* Analog Mixer Input Stages */
44#define LM49453_P0_MICL_REG				0x20
45#define LM49453_P0_MICR_REG				0x21
46#define LM49453_P0_EP_REG				0x24
47#define LM49453_P0_DIS_PKVL_FB_REG			0x25
48
49/* Analog Mixer Output Stages */
50#define LM49453_P0_ANALOG_MIXER_ADC_REG			0x2E
51
52/*ADC or DAC */
53#define LM49453_P0_ADC_DSP_REG				0x30
54#define LM49453_P0_DAC_DSP_REG				0x31
55
56/* EFFECTS ENABLES */
57#define LM49453_P0_ADC_FX_ENABLES_REG			0x33
58
59/* GPIO */
60#define LM49453_P0_GPIO1_REG				0x38
61#define LM49453_P0_GPIO2_REG				0x39
62#define LM49453_P0_GPIO3_REG				0x3A
63#define LM49453_P0_HAP_CTL_REG				0x3B
64#define LM49453_P0_HAP_FREQ_PROG_LEFTL_REG		0x3C
65#define LM49453_P0_HAP_FREQ_PROG_LEFTH_REG		0x3D
66#define LM49453_P0_HAP_FREQ_PROG_RIGHTL_REG		0x3E
67#define LM49453_P0_HAP_FREQ_PROG_RIGHTH_REG		0x3F
68
69/* DIGITAL MIXER */
70#define LM49453_P0_DMIX_CLK_SEL_REG			0x40
71#define LM49453_P0_PORT1_RX_LVL1_REG			0x41
72#define LM49453_P0_PORT1_RX_LVL2_REG			0x42
73#define LM49453_P0_PORT2_RX_LVL_REG			0x43
74#define LM49453_P0_PORT1_TX1_REG			0x44
75#define LM49453_P0_PORT1_TX2_REG			0x45
76#define LM49453_P0_PORT1_TX3_REG			0x46
77#define LM49453_P0_PORT1_TX4_REG			0x47
78#define LM49453_P0_PORT1_TX5_REG			0x48
79#define LM49453_P0_PORT1_TX6_REG			0x49
80#define LM49453_P0_PORT1_TX7_REG			0x4A
81#define LM49453_P0_PORT1_TX8_REG			0x4B
82#define LM49453_P0_PORT2_TX1_REG			0x4C
83#define LM49453_P0_PORT2_TX2_REG			0x4D
84#define LM49453_P0_STN_SEL_REG				0x4F
85#define LM49453_P0_DACHPL1_REG				0x50
86#define LM49453_P0_DACHPL2_REG				0x51
87#define LM49453_P0_DACHPR1_REG				0x52
88#define LM49453_P0_DACHPR2_REG				0x53
89#define LM49453_P0_DACLOL1_REG				0x54
90#define LM49453_P0_DACLOL2_REG				0x55
91#define LM49453_P0_DACLOR1_REG				0x56
92#define LM49453_P0_DACLOR2_REG				0x57
93#define LM49453_P0_DACLSL1_REG				0x58
94#define LM49453_P0_DACLSL2_REG				0x59
95#define LM49453_P0_DACLSR1_REG				0x5A
96#define LM49453_P0_DACLSR2_REG				0x5B
97#define LM49453_P0_DACHAL1_REG				0x5C
98#define LM49453_P0_DACHAL2_REG				0x5D
99#define LM49453_P0_DACHAR1_REG				0x5E
100#define LM49453_P0_DACHAR2_REG				0x5F
101
102/* AUDIO PORT 1 (TDM) */
103#define LM49453_P0_AUDIO_PORT1_BASIC_REG		0x60
104#define LM49453_P0_AUDIO_PORT1_CLK_GEN1_REG		0x61
105#define LM49453_P0_AUDIO_PORT1_CLK_GEN2_REG		0x62
106#define LM49453_P0_AUDIO_PORT1_CLK_GEN3_REG		0x63
107#define LM49453_P0_AUDIO_PORT1_SYNC_RATE_REG		0x64
108#define LM49453_P0_AUDIO_PORT1_SYNC_SDO_SETUP_REG	0x65
109#define LM49453_P0_AUDIO_PORT1_DATA_WIDTH_REG		0x66
110#define LM49453_P0_AUDIO_PORT1_RX_MSB_REG		0x67
111#define LM49453_P0_AUDIO_PORT1_TX_MSB_REG		0x68
112#define LM49453_P0_AUDIO_PORT1_TDM_CHANNELS_REG		0x69
113
114/* AUDIO PORT 2 */
115#define LM49453_P0_AUDIO_PORT2_BASIC_REG		0x6A
116#define LM49453_P0_AUDIO_PORT2_CLK_GEN1_REG		0x6B
117#define LM49453_P0_AUDIO_PORT2_CLK_GEN2_REG		0x6C
118#define LM49453_P0_AUDIO_PORT2_SYNC_GEN_REG		0x6D
119#define LM49453_P0_AUDIO_PORT2_DATA_WIDTH_REG		0x6E
120#define LM49453_P0_AUDIO_PORT2_RX_MODE_REG		0x6F
121#define LM49453_P0_AUDIO_PORT2_TX_MODE_REG		0x70
122
123/* SAMPLE RATE */
124#define LM49453_P0_PORT1_SR_LSB_REG			0x79
125#define LM49453_P0_PORT1_SR_MSB_REG			0x7A
126#define LM49453_P0_PORT2_SR_LSB_REG			0x7B
127#define LM49453_P0_PORT2_SR_MSB_REG			0x7C
128
129/* EFFECTS - HPFs */
130#define LM49453_P0_HPF_REG				0x80
131
132/* EFFECTS ADC ALC */
133#define LM49453_P0_ADC_ALC1_REG				0x82
134#define LM49453_P0_ADC_ALC2_REG				0x83
135#define LM49453_P0_ADC_ALC3_REG				0x84
136#define LM49453_P0_ADC_ALC4_REG				0x85
137#define LM49453_P0_ADC_ALC5_REG				0x86
138#define LM49453_P0_ADC_ALC6_REG				0x87
139#define LM49453_P0_ADC_ALC7_REG				0x88
140#define LM49453_P0_ADC_ALC8_REG				0x89
141#define LM49453_P0_DMIC1_LEVELL_REG			0x8A
142#define LM49453_P0_DMIC1_LEVELR_REG			0x8B
143#define LM49453_P0_DMIC2_LEVELL_REG			0x8C
144#define LM49453_P0_DMIC2_LEVELR_REG			0x8D
145#define LM49453_P0_ADC_LEVELL_REG			0x8E
146#define LM49453_P0_ADC_LEVELR_REG			0x8F
147#define LM49453_P0_DAC_HP_LEVELL_REG			0x90
148#define LM49453_P0_DAC_HP_LEVELR_REG			0x91
149#define LM49453_P0_DAC_LO_LEVELL_REG			0x92
150#define LM49453_P0_DAC_LO_LEVELR_REG			0x93
151#define LM49453_P0_DAC_LS_LEVELL_REG			0x94
152#define LM49453_P0_DAC_LS_LEVELR_REG			0x95
153#define LM49453_P0_DAC_HA_LEVELL_REG			0x96
154#define LM49453_P0_DAC_HA_LEVELR_REG			0x97
155#define LM49453_P0_SOFT_MUTE_REG			0x98
156#define LM49453_P0_DMIC_MUTE_CFG_REG			0x99
157#define LM49453_P0_ADC_MUTE_CFG_REG			0x9A
158#define LM49453_P0_DAC_MUTE_CFG_REG			0x9B
159
160/*DIGITAL MIC1 */
161#define LM49453_P0_DIGITAL_MIC1_CONFIG_REG		0xB0
162#define LM49453_P0_DIGITAL_MIC1_DATA_DELAYL_REG		0xB1
163#define LM49453_P0_DIGITAL_MIC1_DATA_DELAYR_REG		0xB2
164
165/*DIGITAL MIC2 */
166#define LM49453_P0_DIGITAL_MIC2_CONFIG_REG		0xB3
167#define LM49453_P0_DIGITAL_MIC2_DATA_DELAYL_REG		0xB4
168#define LM49453_P0_DIGITAL_MIC2_DATA_DELAYR_REG		0xB5
169
170/* ADC DECIMATOR */
171#define LM49453_P0_ADC_DECIMATOR_REG			0xB6
172
173/* DAC CONFIGURE */
174#define LM49453_P0_DAC_CONFIG_REG			0xB7
175
176/* SIDETONE */
177#define LM49453_P0_STN_VOL_ADCL_REG			0xB8
178#define LM49453_P0_STN_VOL_ADCR_REG			0xB9
179#define LM49453_P0_STN_VOL_DMIC1L_REG			0xBA
180#define LM49453_P0_STN_VOL_DMIC1R_REG			0xBB
181#define LM49453_P0_STN_VOL_DMIC2L_REG			0xBC
182#define LM49453_P0_STN_VOL_DMIC2R_REG			0xBD
183
184/* ADC/DAC CLIPPING MONITORS (Read Only/Write to Clear) */
185#define LM49453_P0_ADC_DEC_CLIP_REG			0xC2
186#define LM49453_P0_ADC_HPF_CLIP_REG			0xC3
187#define LM49453_P0_ADC_LVL_CLIP_REG			0xC4
188#define LM49453_P0_DAC_LVL_CLIP_REG			0xC5
189
190/* ADC ALC EFFECT MONITORS (Read Only) */
191#define LM49453_P0_ADC_LVLMONL_REG			0xC8
192#define LM49453_P0_ADC_LVLMONR_REG			0xC9
193#define LM49453_P0_ADC_ALCMONL_REG			0xCA
194#define LM49453_P0_ADC_ALCMONR_REG			0xCB
195#define LM49453_P0_ADC_MUTED_REG			0xCC
196#define LM49453_P0_DAC_MUTED_REG			0xCD
197
198/* HEADSET DETECT */
199#define LM49453_P0_HSD_PPB_LONG_CNT_LIMITL_REG		0xD0
200#define LM49453_P0_HSD_PPB_LONG_CNT_LIMITR_REG		0xD1
201#define LM49453_P0_HSD_PIN3_4_EX_LOOP_CNT_LIMITL_REG	0xD2
202#define LM49453_P0_HSD_PIN3_4_EX_LOOP_CNT_LIMITH_REG	0xD3
203#define LM49453_P0_HSD_TIMEOUT1_REG			0xD4
204#define LM49453_P0_HSD_TIMEOUT2_REG			0xD5
205#define LM49453_P0_HSD_TIMEOUT3_REG			0xD6
206#define LM49453_P0_HSD_PIN3_4_CFG_REG			0xD7
207#define LM49453_P0_HSD_IRQ1_REG				0xD8
208#define LM49453_P0_HSD_IRQ2_REG				0xD9
209#define LM49453_P0_HSD_IRQ3_REG				0xDA
210#define LM49453_P0_HSD_IRQ4_REG				0xDB
211#define LM49453_P0_HSD_IRQ_MASK1_REG			0xDC
212#define LM49453_P0_HSD_IRQ_MASK2_REG			0xDD
213#define LM49453_P0_HSD_IRQ_MASK3_REG			0xDE
214#define LM49453_P0_HSD_R_HPLL_REG			0xE0
215#define LM49453_P0_HSD_R_HPLH_REG			0xE1
216#define LM49453_P0_HSD_R_HPLU_REG			0xE2
217#define LM49453_P0_HSD_R_HPRL_REG			0xE3
218#define LM49453_P0_HSD_R_HPRH_REG			0xE4
219#define LM49453_P0_HSD_R_HPRU_REG			0xE5
220#define LM49453_P0_HSD_VEL_L_FINALL_REG			0xE6
221#define LM49453_P0_HSD_VEL_L_FINALH_REG			0xE7
222#define LM49453_P0_HSD_VEL_L_FINALU_REG			0xE8
223#define LM49453_P0_HSD_RO_FINALL_REG			0xE9
224#define LM49453_P0_HSD_RO_FINALH_REG			0xEA
225#define LM49453_P0_HSD_RO_FINALU_REG			0xEB
226#define LM49453_P0_HSD_VMIC_BIAS_FINALL_REG		0xEC
227#define LM49453_P0_HSD_VMIC_BIAS_FINALH_REG		0xED
228#define LM49453_P0_HSD_VMIC_BIAS_FINALU_REG		0xEE
229#define LM49453_P0_HSD_PIN_CONFIG_REG			0xEF
230#define LM49453_P0_HSD_PLUG_DETECT_BB_IRQ_STATUS1_REG	0xF1
231#define LM49453_P0_HSD_PLUG_DETECT_BB_IRQ_STATUS2_REG	0xF2
232#define LM49453_P0_HSD_PLUG_DETECT_BB_IRQ_STATUS3_REG	0xF3
233#define LM49453_P0_HSD_PLUG_DETECT_BB_IRQ_STATEL_REG	0xF4
234#define LM49453_P0_HSD_PLUG_DETECT_BB_IRQ_STATEH_REG	0xF5
235
236/* I/O PULLDOWN CONFIG */
237#define LM49453_P0_PULL_CONFIG1_REG			0xF8
238#define LM49453_P0_PULL_CONFIG2_REG			0xF9
239#define LM49453_P0_PULL_CONFIG3_REG			0xFA
240
241/* RESET */
242#define LM49453_P0_RESET_REG				0xFE
243
244/* PAGE */
245#define LM49453_PAGE_REG				0xFF
246
247#define LM49453_MAX_REGISTER				(0xFF+1)
248
249/* LM49453_P0_PMC_SETUP_REG (0x00h) */
250#define LM49453_PMC_SETUP_CHIP_EN			(BIT(1)|BIT(0))
251#define LM49453_PMC_SETUP_PLL_EN			BIT(2)
252#define LM49453_PMC_SETUP_PLL_P2_EN			BIT(3)
253#define LM49453_PMC_SETUP_PLL_FLL			BIT(4)
254#define LM49453_PMC_SETUP_MCLK_OVER			BIT(5)
255#define LM49453_PMC_SETUP_RTC_CLK_OVER			BIT(6)
256#define LM49453_PMC_SETUP_CHIP_ACTIVE			BIT(7)
257
258/* Chip Enable bits */
259#define LM49453_CHIP_EN_SHUTDOWN			0x00
260#define LM49453_CHIP_EN					0x01
261#define LM49453_CHIP_EN_HSD_DETECT			0x02
262#define LM49453_CHIP_EN_INVALID_HSD			0x03
263
264/* LM49453_P0_PLL_CLK_SEL1_REG (0x01h) */
265#define LM49453_CLK_SEL1_MCLK_SEL			0x11
266#define LM49453_CLK_SEL1_RTC_SEL			0x11
267#define LM49453_CLK_SEL1_PORT1_SEL			0x10
268#define LM49453_CLK_SEL1_PORT2_SEL			0x11
269
270/* LM49453_P0_PLL_CLK_SEL2_REG (0x02h) */
271#define LM49453_CLK_SEL2_ADC_CLK_SEL			0x38
272
273/* LM49453_P0_FLL_REF_FREQL_REG (0x0F) */
274#define LM49453_FLL_REF_FREQ_VAL			0x8ca0001
275
276/* LM49453_P0_VCO_TARGETLL_REG (0x11) */
277#define LM49453_VCO_TARGET_VAL				0x8ca0001
278
279/* LM49453_P0_ADC_DSP_REG (0x30h) */
280#define LM49453_ADC_DSP_ADC_MUTEL			BIT(0)
281#define LM49453_ADC_DSP_ADC_MUTER			BIT(1)
282#define LM49453_ADC_DSP_DMIC1_MUTEL			BIT(2)
283#define LM49453_ADC_DSP_DMIC1_MUTER			BIT(3)
284#define LM49453_ADC_DSP_DMIC2_MUTEL			BIT(4)
285#define LM49453_ADC_DSP_DMIC2_MUTER			BIT(5)
286#define LM49453_ADC_DSP_MUTE_ALL			0x3F
287
288/* LM49453_P0_DAC_DSP_REG (0x31h) */
289#define LM49453_DAC_DSP_MUTE_ALL			0xFF
290
291/* LM49453_P0_AUDIO_PORT1_BASIC_REG (0x60h) */
292#define LM49453_AUDIO_PORT1_BASIC_FMT_MASK		(BIT(4)|BIT(3))
293#define LM49453_AUDIO_PORT1_BASIC_CLK_MS		BIT(3)
294#define LM49453_AUDIO_PORT1_BASIC_SYNC_MS		BIT(4)
295
296/* LM49453_P0_RESET_REG (0xFEh) */
297#define LM49453_RESET_REG_RST				BIT(0)
298
299/* Page select register bits (0xFF) */
300#define LM49453_PAGE0_SELECT				0x0
301#define LM49453_PAGE1_SELECT				0x1
302
303/* LM49453_P0_HSD_PIN3_4_CFG_REG (Jack Pin config - 0xD7) */
304#define LM49453_JACK_DISABLE				0x00
305#define LM49453_JACK_CONFIG1				0x01
306#define LM49453_JACK_CONFIG2				0x02
307#define LM49453_JACK_CONFIG3				0x03
308#define LM49453_JACK_CONFIG4				0x04
309#define LM49453_JACK_CONFIG5				0x05
310
311/* Page 1 REGISTERS */
312
313/* SIDETONE */
314#define LM49453_P1_SIDETONE_SA0L_REG			0x80
315#define LM49453_P1_SIDETONE_SA0H_REG			0x81
316#define LM49453_P1_SIDETONE_SAB0U_REG			0x82
317#define LM49453_P1_SIDETONE_SB0L_REG			0x83
318#define LM49453_P1_SIDETONE_SB0H_REG			0x84
319#define LM49453_P1_SIDETONE_SH0L_REG			0x85
320#define LM49453_P1_SIDETONE_SH0H_REG			0x86
321#define LM49453_P1_SIDETONE_SH0U_REG			0x87
322#define LM49453_P1_SIDETONE_SA1L_REG			0x88
323#define LM49453_P1_SIDETONE_SA1H_REG			0x89
324#define LM49453_P1_SIDETONE_SAB1U_REG			0x8A
325#define LM49453_P1_SIDETONE_SB1L_REG			0x8B
326#define LM49453_P1_SIDETONE_SB1H_REG			0x8C
327#define LM49453_P1_SIDETONE_SH1L_REG			0x8D
328#define LM49453_P1_SIDETONE_SH1H_REG			0x8E
329#define LM49453_P1_SIDETONE_SH1U_REG			0x8F
330#define LM49453_P1_SIDETONE_SA2L_REG			0x90
331#define LM49453_P1_SIDETONE_SA2H_REG			0x91
332#define LM49453_P1_SIDETONE_SAB2U_REG			0x92
333#define LM49453_P1_SIDETONE_SB2L_REG			0x93
334#define LM49453_P1_SIDETONE_SB2H_REG			0x94
335#define LM49453_P1_SIDETONE_SH2L_REG			0x95
336#define LM49453_P1_SIDETONE_SH2H_REG			0x96
337#define LM49453_P1_SIDETONE_SH2U_REG			0x97
338#define LM49453_P1_SIDETONE_SA3L_REG			0x98
339#define LM49453_P1_SIDETONE_SA3H_REG			0x99
340#define LM49453_P1_SIDETONE_SAB3U_REG			0x9A
341#define LM49453_P1_SIDETONE_SB3L_REG			0x9B
342#define LM49453_P1_SIDETONE_SB3H_REG			0x9C
343#define LM49453_P1_SIDETONE_SH3L_REG			0x9D
344#define LM49453_P1_SIDETONE_SH3H_REG			0x9E
345#define LM49453_P1_SIDETONE_SH3U_REG			0x9F
346#define LM49453_P1_SIDETONE_SA4L_REG			0xA0
347#define LM49453_P1_SIDETONE_SA4H_REG			0xA1
348#define LM49453_P1_SIDETONE_SAB4U_REG			0xA2
349#define LM49453_P1_SIDETONE_SB4L_REG			0xA3
350#define LM49453_P1_SIDETONE_SB4H_REG			0xA4
351#define LM49453_P1_SIDETONE_SH4L_REG			0xA5
352#define LM49453_P1_SIDETONE_SH4H_REG			0xA6
353#define LM49453_P1_SIDETONE_SH4U_REG			0xA7
354#define LM49453_P1_SIDETONE_SA5L_REG			0xA8
355#define LM49453_P1_SIDETONE_SA5H_REG			0xA9
356#define LM49453_P1_SIDETONE_SAB5U_REG			0xAA
357#define LM49453_P1_SIDETONE_SB5L_REG			0xAB
358#define LM49453_P1_SIDETONE_SB5H_REG			0xAC
359#define LM49453_P1_SIDETONE_SH5L_REG			0xAD
360#define LM49453_P1_SIDETONE_SH5H_REG			0xAE
361#define LM49453_P1_SIDETONE_SH5U_REG			0xAF
362
363/* CHARGE PUMP CONFIG */
364#define LM49453_P1_CP_CONFIG1_REG			0xB0
365#define LM49453_P1_CP_CONFIG2_REG			0xB1
366#define LM49453_P1_CP_CONFIG3_REG			0xB2
367#define LM49453_P1_CP_CONFIG4_REG			0xB3
368#define LM49453_P1_CP_LA_VTH1L_REG			0xB4
369#define LM49453_P1_CP_LA_VTH1M_REG			0xB5
370#define LM49453_P1_CP_LA_VTH2L_REG			0xB6
371#define LM49453_P1_CP_LA_VTH2M_REG			0xB7
372#define LM49453_P1_CP_LA_VTH3L_REG			0xB8
373#define LM49453_P1_CP_LA_VTH3H_REG			0xB9
374#define LM49453_P1_CP_CLK_DIV_REG			0xBA
375
376/* DAC */
377#define LM49453_P1_DAC_CHOP_REG				0xC0
378
379#define	LM49453_CLK_SRC_MCLK				1
380#endif
381