xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/es7202.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * ALSA SoC ES7202 pdm adc driver
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Author:      David Yang, <yangxiaohua@everest-semi.com>
5*4882a593Smuzhiyun  * Copyright:   (C) 2020 Everest Semiconductor Co Ltd.,
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify
8*4882a593Smuzhiyun  * it under the terms of the GNU General Public License version 2 as
9*4882a593Smuzhiyun  * published by the Free Software Foundation.
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #ifndef _ES7202_H
14*4882a593Smuzhiyun #define _ES7202_H
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* ES7202 register space */
17*4882a593Smuzhiyun #define ES7202_RESET_REG00        	0x00
18*4882a593Smuzhiyun #define ES7202_SOFT_MODE_REG01			0x01
19*4882a593Smuzhiyun #define ES7202_CLK_DIV_REG02   			0x02
20*4882a593Smuzhiyun #define ES7202_CLK_EN_REG03     		0x03
21*4882a593Smuzhiyun #define ES7202_T1_VMID_REG04    		0x04
22*4882a593Smuzhiyun #define ES7202_T2_VMID_REG05    		0x05
23*4882a593Smuzhiyun #define ES7202_CHIP_STA_REG06    		0x06
24*4882a593Smuzhiyun #define ES7202_PDM_INF_CTL_REG07  	0x07
25*4882a593Smuzhiyun #define ES7202_MISC_CTL_REG08     	0x08
26*4882a593Smuzhiyun #define ES7202_ANALOG_EN_REG10    	0x10
27*4882a593Smuzhiyun #define ES7202_BIAS_VMID_REG11    	0x11
28*4882a593Smuzhiyun #define ES7202_PGA1_BIAS_REG12    	0x12
29*4882a593Smuzhiyun #define ES7202_PGA2_BIAS_REG13    	0x13
30*4882a593Smuzhiyun #define ES7202_MOD1_BIAS_REG14    	0x14
31*4882a593Smuzhiyun #define ES7202_MOD2_BIAS_REG15    	0x15
32*4882a593Smuzhiyun #define ES7202_VREFP_BIAS_REG16     0x16
33*4882a593Smuzhiyun #define ES7202_VMMOD_BIAS_REG17     0x17
34*4882a593Smuzhiyun #define ES7202_MODS_BIAS_REG18      0x18
35*4882a593Smuzhiyun #define ES7202_ANALOG_LP1_REG19     0x19
36*4882a593Smuzhiyun #define ES7202_ANALOG_LP2_REG1A     0x1A
37*4882a593Smuzhiyun #define ES7202_ANALOG_MISC1_REG1B   0x1B
38*4882a593Smuzhiyun #define ES7202_ANALOG_MISC2_REG1C   0x1C
39*4882a593Smuzhiyun #define ES7202_PGA1_REG1D     			0x1D
40*4882a593Smuzhiyun #define ES7202_PGA2_REG1E     			0x1E
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* ES7202 User Marco define */
43*4882a593Smuzhiyun #define VDD_1V8   0
44*4882a593Smuzhiyun #define VDD_3V3   1
45*4882a593Smuzhiyun #define MAX_VOLTAGE_1_8		1980000
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /*
48*4882a593Smuzhiyun * Select Microphone channels for mic array
49*4882a593Smuzhiyun */
50*4882a593Smuzhiyun #define MIC_CHN_16      16
51*4882a593Smuzhiyun #define MIC_CHN_14      14
52*4882a593Smuzhiyun #define MIC_CHN_12      12
53*4882a593Smuzhiyun #define MIC_CHN_10      10
54*4882a593Smuzhiyun #define MIC_CHN_8       8
55*4882a593Smuzhiyun #define MIC_CHN_6       6
56*4882a593Smuzhiyun #define MIC_CHN_4       4
57*4882a593Smuzhiyun #define MIC_CHN_2       2
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define ES7202_CHANNELS_MAX     CONFIG_SND_SOC_ES7202_MIC_MAX_CHANNELS
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_2
62*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  1
63*4882a593Smuzhiyun #endif
64*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_4
65*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  2
66*4882a593Smuzhiyun #endif
67*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_6
68*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  3
69*4882a593Smuzhiyun #endif
70*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_8
71*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  4
72*4882a593Smuzhiyun #endif
73*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_10
74*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  5
75*4882a593Smuzhiyun #endif
76*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_12
77*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  6
78*4882a593Smuzhiyun #endif
79*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_14
80*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  7
81*4882a593Smuzhiyun #endif
82*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_16
83*4882a593Smuzhiyun #define ADC_DEV_MAXNUM  8
84*4882a593Smuzhiyun #endif
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun /* select I2C bus number for es7202 */
87*4882a593Smuzhiyun #define ES7202_I2C_BUS_NUM	CONFIG_SND_SOC_ES7202_I2C_BUS
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /*
90*4882a593Smuzhiyun * select DTS or I2C Detect method for es7202
91*4882a593Smuzhiyun * 0: i2c_detect, 1:of_device_id
92*4882a593Smuzhiyun */
93*4882a593Smuzhiyun #define ES7202_MATCH_DTS_EN		1
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #endif
96