summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/es8326.h
blob: c3e52e7bdef57de0377cb7b467bf6fd8fd62b8c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * es8326.h -- es8326 ALSA SoC audio driver
 * Copyright Everest Semiconductor Co.,Ltd
 *
 * Authors: David Yang <yangxiaohua@everest-semi.com>
 */

#ifndef _ES8326_H
#define _ES8326_H

/* ES8326 register space */
#define ES8326_RESET		0x00
#define ES8326_CLK_CTL		0x01
#define ES8326_CLK_INV		0x02
#define ES8326_CLK_RESAMPLE	0x03
#define ES8326_CLK_DIV1		0x04
#define ES8326_CLK_DIV2		0x05
#define ES8326_CLK_DLL		0x06
#define ES8326_CLK_MUX		0x07
#define ES8326_CLK_ADC_SEL	0x08
#define ES8326_CLK_DAC_SEL	0x09
#define ES8326_CLK_ADC_OSR	0x0a
#define ES8326_CLK_DAC_OSR	0x0b
#define ES8326_CLK_DIV_CPC	0x0c
#define ES8326_CLK_DIV_BCLK	0x0d
#define ES8326_CLK_TRI		0x0e
#define ES8326_CLK_DIV_LRCK	0x0f
#define ES8326_CLK_VMIDS1	0x10
#define ES8326_CLK_VMIDS2	0x11
#define ES8326_CLK_CAL_TIME	0x12
#define ES8326_FMT		0x13

#define ES8326_DAC_MUTE		0x14
#define ES8326_ADC_MUTE		0x15
#define ES8326_ANA_PDN		0x16
#define ES8326_PGA_PDN		0x17
#define ES8326_VMIDSEL		0x18
#define ES8326_ANA_LP		0x19
#define ES8326_ANA_DMS		0x1a
#define ES8326_ANA_MICBIAS	0x1b
#define ES8326_ANA_VSEL		0x1c
#define ES8326_SYS_BIAS		0x1d
#define ES8326_BIAS_SW1		0x1e
#define ES8326_BIAS_SW2		0x1f
#define ES8326_BIAS_SW3		0x20
#define ES8326_BIAS_SW4		0x21
#define ES8326_VMIDLOW		0x22
#define ES8326_PGAGAIN		0x23
#define ES8326_HP_DRIVER	0x24
#define ES8326_DAC2HPMIX	0x25
#define ES8326_HP_VOL		0x26
#define ES8326_HP_CAL		0x27
#define ES8326_HP_DRIVER_REF	0x28
#define ES8326_ADC_SCALE	0x29
#define ES8326_ADC1_SRC		0x2a
#define ES8326_ADC2_SRC		0x2b
#define ES8326_ADC1_VOL		0x2c
#define ES8326_ADC2_VOL		0x2d
#define ES8326_ADC_RAMPRATE	0x2e
#define ES8326_ALC_RECOVERY	0x32
#define ES8326_ALC_LEVEL	0x33
#define ES8326_ADC_HPFS1	0x34
#define ES8326_ADC_HPFS2	0x35
#define ES8326_ADC_EQ		0x36
#define ES8326_HP_OFFSET_CAL	0x4A
#define ES8326_HPL_OFFSET_INI	0x4B
#define ES8326_HPR_OFFSET_INI	0x4C
#define ES8326_DAC_DSM		0x4D
#define ES8326_DAC_RAMPRATE	0x4E
#define ES8326_DAC_VPPSCALE	0x4F
#define ES8326_DACL_VOL	        0x50
#define ES8326_DRC_RECOVERY	0x53
#define ES8326_DRC_WINSIZE	0x54
#define ES8326_DAC_CROSSTALK	0x55
#define ES8326_HPJACK_TIMER	0x56
#define ES8326_HPDET_TYPE	0x57
#define ES8326_INT_SOURCE	0x58
#define ES8326_INTOUT_IO	0x59
#define ES8326_SDINOUT1_IO	0x5A
#define ES8326_SDINOUT23_IO	0x5B
#define ES8326_JACK_PULSE	0x5C

#define ES8326_DACR_VOL		0xF4
#define ES8326_SPKL_VOL		0xF5
#define ES8326_SPKR_VOL		0xF6
#define ES8326_HP_MISC		0xF7
#define ES8326_CTIA_OMTP_STA	0xF8
#define ES8326_PULLUP_CTL	0xF9
#define ES8326_CSM_I2C_STA	0xFA
#define ES8326_HPDET_STA	0xFB
#define ES8326_CSM_MUTE_STA	0xFC
#define ES8326_CHIP_ID1		0xFD
#define ES8326_CHIP_ID2		0xFE
#define ES8326_CHIP_VERSION	0xFF

/* ES8326_RESET */
#define ES8326_CSM_ON (1 << 7)
#define ES8326_MASTER_MODE_EN	(1 << 6)
#define	ES8326_PWRUP_SEQ_EN	(1 << 5)
#define ES8326_CODEC_RESET (0x0f << 0)
#define ES8326_CSM_OFF (0 << 7)
#define ES8326_MUTE_MASK (3 << 0)
#define ES8326_MUTE (3 << 0)

/* ES8326_CLK_CTL */
#define ES8326_CLK_ON (0x7f << 0)
#define ES8326_CLK_OFF (0 << 0)

/* ES8326_CLK_INV */
#define ES8326_BCLK_AS_MCLK (1 << 3)

/* ES8326_FMT */
#define ES8326_S24_LE	(0 << 2)
#define ES8326_S20_3_LE	(1 << 2)
#define ES8326_S18_LE	(2 << 2)
#define ES8326_S16_LE	(3 << 2)
#define ES8326_S32_LE	(4 << 2)
#define ES8326_DATA_LEN_MASK	(7 << 2)

#define ES8326_DAIFMT_MASK	((1 << 5) | (3 << 0))
#define ES8326_DAIFMT_I2S	0
#define ES8326_DAIFMT_LEFT_J	(1 << 0)
#define ES8326_DAIFMT_DSP_A	(3 << 0)
#define ES8326_DAIFMT_DSP_B	((1 << 5) | (3 << 0))

/* ES8326_PGAGAIN */
#define ES8326_MIC_SEL_MASK (3 << 4)
#define ES8326_MIC1_SEL	(1 << 4)
#define ES8326_MIC2_SEL (1 << 5)

/* ES8326_HP_CAL */
#define ES8326_HP_OFF 0
#define ES8326_HP_FORCE_CAL ((1 << 7) | (1 << 3))
#define ES8326_HP_ON ((7 << 4) | (7 << 0))

/* ES8326_ADC1_SRC */
#define ES8326_ADC1_SHIFT 0
#define ES8326_ADC2_SHIFT 4
#define ES8326_ADC_SRC_ANA 0
#define ES8326_ADC_SRC_ANA_INV_SW0 1
#define ES8326_ADC_SRC_ANA_INV_SW1 2
#define ES8326_ADC_SRC_DMIC_MCLK 3
#define ES8326_ADC_SRC_DMIC_SDIN2 4
#define ES8326_ADC_SRC_DMIC_SDIN2_INV 5
#define ES8326_ADC_SRC_DMIC_SDIN3 6
#define ES8326_ADC_SRC_DMIC_SDIN3_INV 7

#define ES8326_ADC_AMIC	((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \
		| (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT))
#define ES8326_ADC_DMIC	((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \
		| (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT))
/* ES8326_ADC2_SRC */
#define ES8326_ADC3_SHIFT 0
#define ES8326_ADC4_SHIFT 3

/* ES8326_HPDET_TYPE */
#define ES8326_HP_DET_SRC_PIN27 (1 << 5)
#define ES8326_HP_DET_SRC_PIN9 (1 << 4)
#define ES8326_HP_DET_JACK_POL (1 << 3)
#define ES8326_HP_DET_BUTTON_POL (1 << 2)
#define ES8326_HP_TYPE_OMTP	(3 << 0)
#define ES8326_HP_TYPE_CTIA	(2 << 0)
#define ES8326_HP_TYPE_AUTO	(1 << 0)
#define ES8326_HP_TYPE_AUTO_INV	(0 << 0)

/* ES8326_INT_SOURCE */
#define ES8326_INT_SRC_DAC_MOZ (1 << 0)
#define ES8326_INT_SRC_ADC_MOZ (1 << 1)
#define ES8326_INT_SRC_BUTTON (1 << 2)
#define ES8326_INT_SRC_PIN9 (1 << 3)
#define ES8326_INT_SRC_PIN27 (1 << 4)

/* ES8326_SDINOUT1_IO */
#define ES8326_IO_INPUT	(0 << 0)
#define ES8326_IO_SDIN_SLOT0 (1 << 0)
#define ES8326_IO_SDIN_SLOT1 (2 << 0)
#define ES8326_IO_SDIN_SLOT2 (3 << 0)
#define ES8326_IO_SDIN_SLOT7 (8 << 0)
#define ES8326_IO_DMIC_CLK (9 << 0)
#define ES8326_IO_DMIC_CLK_INV (0x0a << 0)
#define ES8326_IO_SDOUT2 (0x0b << 0)
#define ES8326_IO_LOW (0x0e << 0)
#define ES8326_IO_HIGH (0x0f << 0)
#define ES8326_ADC2DAC (1 << 3)
#define ES8326_SDINOUT1_SHIFT 4

/* ES8326_SDINOUT23_IO */
#define ES8326_SDINOUT2_SHIFT 4
#define ES8326_SDINOUT3_SHIFT 0

/* ES8326_HPDET_STA */
#define ES8326_HPINSERT_FLAG (1 << 1)
#define ES8326_HPBUTTON_FLAG (1 << 0)

/* ES8326_CHIP_VERSION 0xFF */
#define ES8326_VERSION (1 << 0)
#define ES8326_VERSION_B (3 << 0)

#endif