xref: /linux/sound/soc/codecs/es8326.h (revision e91c37f1)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * es8326.h -- es8326 ALSA SoC audio driver
4  * Copyright Everest Semiconductor Co.,Ltd
5  *
6  * Authors: David Yang <yangxiaohua@everest-semi.com>
7  */
8 
9 #ifndef _ES8326_H
10 #define _ES8326_H
11 
12 /* ES8326 register space */
13 #define ES8326_RESET		0x00
14 #define ES8326_CLK_CTL		0x01
15 #define ES8326_CLK_INV		0x02
16 #define ES8326_CLK_RESAMPLE	0x03
17 #define ES8326_CLK_DIV1		0x04
18 #define ES8326_CLK_DIV2		0x05
19 #define ES8326_CLK_DLL		0x06
20 #define ES8326_CLK_MUX		0x07
21 #define ES8326_CLK_ADC_SEL	0x08
22 #define ES8326_CLK_DAC_SEL	0x09
23 #define ES8326_CLK_ADC_OSR	0x0a
24 #define ES8326_CLK_DAC_OSR	0x0b
25 #define ES8326_CLK_DIV_CPC	0x0c
26 #define ES8326_CLK_DIV_BCLK	0x0d
27 #define ES8326_CLK_TRI		0x0e
28 #define ES8326_CLK_DIV_LRCK	0x0f
29 #define ES8326_CLK_VMIDS1	0x10
30 #define ES8326_CLK_VMIDS2	0x11
31 #define ES8326_CLK_CAL_TIME	0x12
32 #define ES8326_FMT		0x13
33 
34 #define ES8326_DAC_MUTE		0x14
35 #define ES8326_ADC_MUTE		0x15
36 #define ES8326_ANA_PDN		0x16
37 #define ES8326_PGA_PDN		0x17
38 #define ES8326_VMIDSEL		0x18
39 #define ES8326_ANA_LP		0x19
40 #define ES8326_ANA_DMS		0x1a
41 #define ES8326_ANA_MICBIAS	0x1b
42 #define ES8326_ANA_VSEL		0x1c
43 #define ES8326_SYS_BIAS		0x1d
44 #define ES8326_BIAS_SW1		0x1e
45 #define ES8326_BIAS_SW2		0x1f
46 #define ES8326_BIAS_SW3		0x20
47 #define ES8326_BIAS_SW4		0x21
48 #define ES8326_VMIDLOW		0x22
49 #define ES8326_PGAGAIN		0x23
50 #define ES8326_HP_DRIVER	0x24
51 #define ES8326_DAC2HPMIX	0x25
52 #define ES8326_HP_VOL		0x26
53 #define ES8326_HP_CAL		0x27
54 #define ES8326_HP_DRIVER_REF	0x28
55 #define ES8326_ADC_SCALE	0x29
56 #define ES8326_ADC1_SRC		0x2a
57 #define ES8326_ADC2_SRC		0x2b
58 #define ES8326_ADC1_VOL		0x2c
59 #define ES8326_ADC2_VOL		0x2d
60 #define ES8326_ADC_RAMPRATE	0x2e
61 #define ES8326_ALC_RECOVERY	0x32
62 #define ES8326_ALC_LEVEL	0x33
63 #define ES8326_ADC_HPFS1	0x34
64 #define ES8326_ADC_HPFS2	0x35
65 #define ES8326_ADC_EQ		0x36
66 #define ES8326_HP_OFFSET_CAL	0x4A
67 #define ES8326_HPL_OFFSET_INI	0x4B
68 #define ES8326_HPR_OFFSET_INI	0x4C
69 #define ES8326_DAC_DSM		0x4D
70 #define ES8326_DAC_RAMPRATE	0x4E
71 #define ES8326_DAC_VPPSCALE	0x4F
72 #define ES8326_DAC_VOL		0x50
73 #define ES8326_DRC_RECOVERY	0x53
74 #define ES8326_DRC_WINSIZE	0x54
75 #define ES8326_DAC_CROSSTALK	0x55
76 #define ES8326_HPJACK_TIMER	0x56
77 #define ES8326_HPDET_TYPE	0x57
78 #define ES8326_INT_SOURCE	0x58
79 #define ES8326_INTOUT_IO	0x59
80 #define ES8326_SDINOUT1_IO	0x5A
81 #define ES8326_SDINOUT23_IO	0x5B
82 #define ES8326_JACK_PULSE	0x5C
83 
84 #define ES8326_HP_MISC		0xF7
85 #define ES8326_CTIA_OMTP_STA	0xF8
86 #define ES8326_PULLUP_CTL	0xF9
87 #define ES8326_CSM_I2C_STA	0xFA
88 #define ES8326_HPDET_STA	0xFB
89 #define ES8326_CSM_MUTE_STA	0xFC
90 #define ES8326_CHIP_ID1		0xFD
91 #define ES8326_CHIP_ID2		0xFE
92 #define ES8326_CHIP_VERSION	0xFF
93 
94 /* ES8326_RESET */
95 #define ES8326_CSM_ON (1 << 7)
96 #define ES8326_MASTER_MODE_EN	(1 << 6)
97 #define	ES8326_PWRUP_SEQ_EN	(1 << 5)
98 #define ES8326_CODEC_RESET (0x0f << 0)
99 #define ES8326_CSM_OFF (0 << 7)
100 #define ES8326_MUTE_MASK (3 << 0)
101 #define ES8326_MUTE (3 << 0)
102 
103 /* ES8326_CLK_CTL */
104 #define ES8326_CLK_ON (0x7e << 0)
105 #define ES8326_CLK_OFF (0 << 0)
106 
107 /* ES8326_CLK_INV */
108 #define ES8326_BCLK_AS_MCLK (1 << 3)
109 
110 /* ES8326_FMT */
111 #define ES8326_S24_LE	(0 << 2)
112 #define ES8326_S20_3_LE	(1 << 2)
113 #define ES8326_S18_LE	(2 << 2)
114 #define ES8326_S16_LE	(3 << 2)
115 #define ES8326_S32_LE	(4 << 2)
116 #define ES8326_DATA_LEN_MASK	(7 << 2)
117 
118 #define ES8326_DAIFMT_MASK	((1 << 5) | (3 << 0))
119 #define ES8326_DAIFMT_I2S	0
120 #define ES8326_DAIFMT_LEFT_J	(1 << 0)
121 #define ES8326_DAIFMT_DSP_A	(3 << 0)
122 #define ES8326_DAIFMT_DSP_B	((1 << 5) | (3 << 0))
123 
124 /* ES8326_PGAGAIN */
125 #define ES8326_MIC_SEL_MASK (3 << 4)
126 #define ES8326_MIC1_SEL	(1 << 4)
127 #define ES8326_MIC2_SEL (1 << 5)
128 
129 /* ES8326_HP_CAL */
130 #define ES8326_HP_OFF 0
131 #define ES8326_HP_FORCE_CAL ((1 << 7) | (1 << 3))
132 #define ES8326_HP_ON ((7 << 4) | (7 << 0))
133 
134 /* ES8326_ADC1_SRC */
135 #define ES8326_ADC1_SHIFT 0
136 #define ES8326_ADC2_SHIFT 4
137 #define ES8326_ADC_SRC_ANA 0
138 #define ES8326_ADC_SRC_ANA_INV_SW0 1
139 #define ES8326_ADC_SRC_ANA_INV_SW1 2
140 #define ES8326_ADC_SRC_DMIC_MCLK 3
141 #define ES8326_ADC_SRC_DMIC_SDIN2 4
142 #define ES8326_ADC_SRC_DMIC_SDIN2_INV 5
143 #define ES8326_ADC_SRC_DMIC_SDIN3 6
144 #define ES8326_ADC_SRC_DMIC_SDIN3_INV 7
145 
146 #define ES8326_ADC_AMIC	((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \
147 		| (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT))
148 #define ES8326_ADC_DMIC	((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \
149 		| (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT))
150 /* ES8326_ADC2_SRC */
151 #define ES8326_ADC3_SHIFT 0
152 #define ES8326_ADC4_SHIFT 3
153 
154 /* ES8326_HPDET_TYPE */
155 #define ES8326_HP_DET_SRC_PIN27 (1 << 5)
156 #define ES8326_HP_DET_SRC_PIN9 (1 << 4)
157 #define ES8326_HP_DET_JACK_POL (1 << 3)
158 #define ES8326_HP_DET_BUTTON_POL (1 << 2)
159 #define ES8326_HP_TYPE_OMTP	(3 << 0)
160 #define ES8326_HP_TYPE_CTIA	(2 << 0)
161 #define ES8326_HP_TYPE_AUTO	(1 << 0)
162 #define ES8326_HP_TYPE_AUTO_INV	(0 << 0)
163 
164 /* ES8326_INT_SOURCE */
165 #define ES8326_INT_SRC_DAC_MOZ (1 << 0)
166 #define ES8326_INT_SRC_ADC_MOZ (1 << 1)
167 #define ES8326_INT_SRC_BUTTON (1 << 2)
168 #define ES8326_INT_SRC_PIN9 (1 << 3)
169 #define ES8326_INT_SRC_PIN27 (1 << 4)
170 
171 /* ES8326_SDINOUT1_IO */
172 #define ES8326_IO_INPUT	(0 << 0)
173 #define ES8326_IO_SDIN_SLOT0 (1 << 0)
174 #define ES8326_IO_SDIN_SLOT1 (2 << 0)
175 #define ES8326_IO_SDIN_SLOT2 (3 << 0)
176 #define ES8326_IO_SDIN_SLOT7 (8 << 0)
177 #define ES8326_IO_DMIC_CLK (9 << 0)
178 #define ES8326_IO_DMIC_CLK_INV (0x0a << 0)
179 #define ES8326_IO_SDOUT2 (0x0b << 0)
180 #define ES8326_IO_LOW (0x0e << 0)
181 #define ES8326_IO_HIGH (0x0f << 0)
182 #define ES8326_ADC2DAC (1 << 3)
183 #define ES8326_SDINOUT1_SHIFT 4
184 
185 /* ES8326_SDINOUT23_IO */
186 #define ES8326_SDINOUT2_SHIFT 4
187 #define ES8326_SDINOUT3_SHIFT 0
188 
189 /* ES8326_HPDET_STA */
190 #define ES8326_HPINSERT_FLAG (1 << 1)
191 #define ES8326_HPBUTTON_FLAG (1 << 0)
192 
193 /* ES8326_CHIP_VERSION 0xFF */
194 #define ES8326_VERSION (1 << 0)
195 #define ES8326_VERSION_B (3 << 0)
196 
197 #endif
198