xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/da732x.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * da732x.h -- Dialog DA732X ALSA SoC Audio Driver Header File
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2012 Dialog Semiconductor GmbH
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Author: Michal Hajduk <Michal.Hajduk@diasemi.com>
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef __DA732X_H_
11*4882a593Smuzhiyun #define __DA732X_H_
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <sound/soc.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* General */
16*4882a593Smuzhiyun #define	DA732X_U8_MASK			0xFF
17*4882a593Smuzhiyun #define	DA732X_4BYTES			4
18*4882a593Smuzhiyun #define	DA732X_3BYTES			3
19*4882a593Smuzhiyun #define	DA732X_2BYTES			2
20*4882a593Smuzhiyun #define	DA732X_1BYTE			1
21*4882a593Smuzhiyun #define	DA732X_1BYTE_SHIFT		8
22*4882a593Smuzhiyun #define	DA732X_2BYTES_SHIFT		16
23*4882a593Smuzhiyun #define	DA732X_3BYTES_SHIFT		24
24*4882a593Smuzhiyun #define	DA732X_4BYTES_SHIFT		32
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #define	DA732X_DACS_DIS			0x0
27*4882a593Smuzhiyun #define	DA732X_HP_DIS			0x0
28*4882a593Smuzhiyun #define	DA732X_CLEAR_REG		0x0
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /* Calibration */
31*4882a593Smuzhiyun #define	DA732X_DAC_OFFSET_STEP		0x20
32*4882a593Smuzhiyun #define	DA732X_OUTPUT_OFFSET_STEP	0x80
33*4882a593Smuzhiyun #define	DA732X_HP_OUT_TRIM_VAL		0x0
34*4882a593Smuzhiyun #define	DA732X_WAIT_FOR_STABILIZATION	1
35*4882a593Smuzhiyun #define	DA732X_HPL_DAC			0
36*4882a593Smuzhiyun #define	DA732X_HPR_DAC			1
37*4882a593Smuzhiyun #define	DA732X_HP_DACS			2
38*4882a593Smuzhiyun #define	DA732X_HPL_AMP			0
39*4882a593Smuzhiyun #define	DA732X_HPR_AMP			1
40*4882a593Smuzhiyun #define	DA732X_HP_AMPS			2
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* Clock settings */
43*4882a593Smuzhiyun #define DA732X_STARTUP_DELAY		100
44*4882a593Smuzhiyun #define	DA732X_PLL_OUT_196608		196608000
45*4882a593Smuzhiyun #define	DA732X_PLL_OUT_180634		180633600
46*4882a593Smuzhiyun #define	DA732X_PLL_OUT_SRM		188620800
47*4882a593Smuzhiyun #define	DA732X_MCLK_10MHZ		10000000
48*4882a593Smuzhiyun #define	DA732X_MCLK_20MHZ		20000000
49*4882a593Smuzhiyun #define	DA732X_MCLK_40MHZ		40000000
50*4882a593Smuzhiyun #define	DA732X_MCLK_54MHZ		54000000
51*4882a593Smuzhiyun #define	DA732X_MCLK_RET_0_10MHZ		0
52*4882a593Smuzhiyun #define	DA732X_MCLK_VAL_0_10MHZ		1
53*4882a593Smuzhiyun #define	DA732X_MCLK_RET_10_20MHZ	1
54*4882a593Smuzhiyun #define	DA732X_MCLK_VAL_10_20MHZ	2
55*4882a593Smuzhiyun #define	DA732X_MCLK_RET_20_40MHZ	2
56*4882a593Smuzhiyun #define	DA732X_MCLK_VAL_20_40MHZ	4
57*4882a593Smuzhiyun #define	DA732X_MCLK_RET_40_54MHZ	3
58*4882a593Smuzhiyun #define	DA732X_MCLK_VAL_40_54MHZ	8
59*4882a593Smuzhiyun #define	DA732X_DAI_ID1			0
60*4882a593Smuzhiyun #define	DA732X_DAI_ID2			1
61*4882a593Smuzhiyun #define	DA732X_SRCCLK_PLL		0
62*4882a593Smuzhiyun #define	DA732X_SRCCLK_MCLK		1
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun #define	DA732X_LIN_LP_VOL		0x4F
65*4882a593Smuzhiyun #define	DA732X_LP_VOL			0x40
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun /* Kcontrols */
68*4882a593Smuzhiyun #define	DA732X_DAC_EN_MAX		2
69*4882a593Smuzhiyun #define	DA732X_ADCL_MUX_MAX		2
70*4882a593Smuzhiyun #define	DA732X_ADCR_MUX_MAX		3
71*4882a593Smuzhiyun #define	DA732X_HPF_MODE_MAX		3
72*4882a593Smuzhiyun #define	DA732X_HPF_MODE_SHIFT		4
73*4882a593Smuzhiyun #define	DA732X_HPF_MUSIC_SHIFT		0
74*4882a593Smuzhiyun #define	DA732X_HPF_MUSIC_MAX		4
75*4882a593Smuzhiyun #define	DA732X_HPF_VOICE_SHIFT		4
76*4882a593Smuzhiyun #define	DA732X_HPF_VOICE_MAX		8
77*4882a593Smuzhiyun #define	DA732X_EQ_EN_MAX		1
78*4882a593Smuzhiyun #define	DA732X_HPF_VOICE		1
79*4882a593Smuzhiyun #define	DA732X_HPF_MUSIC		2
80*4882a593Smuzhiyun #define	DA732X_HPF_DISABLED		0
81*4882a593Smuzhiyun #define	DA732X_NO_INVERT		0
82*4882a593Smuzhiyun #define	DA732X_INVERT			1
83*4882a593Smuzhiyun #define	DA732X_SWITCH_MAX		1
84*4882a593Smuzhiyun #define	DA732X_ENABLE_CP		1
85*4882a593Smuzhiyun #define	DA732X_DISABLE_CP		0
86*4882a593Smuzhiyun #define	DA732X_DISABLE_ALL_CLKS		0
87*4882a593Smuzhiyun #define	DA732X_RESET_ADCS		0
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /* dB values */
90*4882a593Smuzhiyun #define DA732X_MIC_VOL_DB_MIN		0
91*4882a593Smuzhiyun #define DA732X_MIC_VOL_DB_INC		50
92*4882a593Smuzhiyun #define DA732X_MIC_PRE_VOL_DB_MIN	0
93*4882a593Smuzhiyun #define DA732X_MIC_PRE_VOL_DB_INC	600
94*4882a593Smuzhiyun #define DA732X_AUX_VOL_DB_MIN		-6000
95*4882a593Smuzhiyun #define DA732X_AUX_VOL_DB_INC		150
96*4882a593Smuzhiyun #define DA732X_HP_VOL_DB_MIN		-2250
97*4882a593Smuzhiyun #define DA732X_HP_VOL_DB_INC		150
98*4882a593Smuzhiyun #define	DA732X_LIN2_VOL_DB_MIN		-1650
99*4882a593Smuzhiyun #define	DA732X_LIN2_VOL_DB_INC		150
100*4882a593Smuzhiyun #define	DA732X_LIN3_VOL_DB_MIN		-1650
101*4882a593Smuzhiyun #define DA732X_LIN3_VOL_DB_INC		150
102*4882a593Smuzhiyun #define	DA732X_LIN4_VOL_DB_MIN		-2250
103*4882a593Smuzhiyun #define DA732X_LIN4_VOL_DB_INC		150
104*4882a593Smuzhiyun #define	DA732X_EQ_BAND_VOL_DB_MIN	-1050
105*4882a593Smuzhiyun #define	DA732X_EQ_BAND_VOL_DB_INC	150
106*4882a593Smuzhiyun #define DA732X_DAC_VOL_DB_MIN		-7725
107*4882a593Smuzhiyun #define DA732X_DAC_VOL_DB_INC		75
108*4882a593Smuzhiyun #define DA732X_ADC_VOL_DB_MIN		0
109*4882a593Smuzhiyun #define DA732X_ADC_VOL_DB_INC		-1
110*4882a593Smuzhiyun #define	DA732X_EQ_OVERALL_VOL_DB_MIN	-1800
111*4882a593Smuzhiyun #define	DA732X_EQ_OVERALL_VOL_DB_INC	600
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun enum da732x_sysctl {
114*4882a593Smuzhiyun 	DA732X_SR_8KHZ		= 0x1,
115*4882a593Smuzhiyun 	DA732X_SR_11_025KHZ	= 0x2,
116*4882a593Smuzhiyun 	DA732X_SR_12KHZ		= 0x3,
117*4882a593Smuzhiyun 	DA732X_SR_16KHZ		= 0x5,
118*4882a593Smuzhiyun 	DA732X_SR_22_05KHZ	= 0x6,
119*4882a593Smuzhiyun 	DA732X_SR_24KHZ		= 0x7,
120*4882a593Smuzhiyun 	DA732X_SR_32KHZ		= 0x9,
121*4882a593Smuzhiyun 	DA732X_SR_44_1KHZ	= 0xA,
122*4882a593Smuzhiyun 	DA732X_SR_48KHZ		= 0xB,
123*4882a593Smuzhiyun 	DA732X_SR_88_1KHZ	= 0xE,
124*4882a593Smuzhiyun 	DA732X_SR_96KHZ		= 0xF,
125*4882a593Smuzhiyun };
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun #endif /* __DA732X_H_ */
128