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