ASoC: codecs: ES8326: Fix power-up sequence
[linux-block.git] / sound / soc / codecs / es8326.h
CommitLineData
5c439937
ZN
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
5c439937
ZN
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_HPJACK_TIMER 0x56
4ddad00c 76#define ES8326_HPDET_TYPE 0x57
5c439937
ZN
77#define ES8326_INT_SOURCE 0x58
78#define ES8326_INTOUT_IO 0x59
79#define ES8326_SDINOUT1_IO 0x5A
80#define ES8326_SDINOUT23_IO 0x5B
81#define ES8326_JACK_PULSE 0x5C
82
4ddad00c
ZN
83#define ES8326_HP_MISC 0xF7
84#define ES8326_CTIA_OMTP_STA 0xF8
5c439937 85#define ES8326_PULLUP_CTL 0xF9
4ddad00c
ZN
86#define ES8326_CSM_I2C_STA 0xFA
87#define ES8326_HPDET_STA 0xFB
88#define ES8326_CSM_MUTE_STA 0xFC
5c439937
ZN
89#define ES8326_CHIP_ID1 0xFD
90#define ES8326_CHIP_ID2 0xFE
91#define ES8326_CHIP_VERSION 0xFF
92
93/* ES8326_RESET */
94#define ES8326_CSM_ON (1 << 7)
95#define ES8326_MASTER_MODE_EN (1 << 6)
96#define ES8326_PWRUP_SEQ_EN (1 << 5)
97#define ES8326_CODEC_RESET (0x0f << 0)
98#define ES8326_CSM_OFF (0 << 7)
083912c2
ZN
99#define ES8326_MUTE_MASK (3 << 0)
100#define ES8326_MUTE (3 << 0)
5c439937
ZN
101
102/* ES8326_CLK_CTL */
103#define ES8326_CLK_ON (0x7f << 0)
104#define ES8326_CLK_OFF (0 << 0)
105
106/* ES8326_CLK_INV */
107#define ES8326_BCLK_AS_MCLK (1 << 3)
108
109/* ES8326_FMT */
110#define ES8326_S24_LE (0 << 2)
111#define ES8326_S20_3_LE (1 << 2)
112#define ES8326_S18_LE (2 << 2)
113#define ES8326_S16_LE (3 << 2)
114#define ES8326_S32_LE (4 << 2)
115#define ES8326_DATA_LEN_MASK (7 << 2)
116
117#define ES8326_DAIFMT_MASK ((1 << 5) | (3 << 0))
118#define ES8326_DAIFMT_I2S 0
119#define ES8326_DAIFMT_LEFT_J (1 << 0)
120#define ES8326_DAIFMT_DSP_A (3 << 0)
121#define ES8326_DAIFMT_DSP_B ((1 << 5) | (3 << 0))
122
123/* ES8326_PGAGAIN */
124#define ES8326_MIC_SEL_MASK (3 << 4)
125#define ES8326_MIC1_SEL (1 << 4)
126#define ES8326_MIC2_SEL (1 << 5)
127
128/* ES8326_HP_CAL */
083912c2
ZN
129#define ES8326_HP_OFF 0
130#define ES8326_HP_FORCE_CAL ((1 << 7) | (1 << 3))
131#define ES8326_HP_ON ((7 << 4) | (7 << 0))
5c439937
ZN
132
133/* ES8326_ADC1_SRC */
134#define ES8326_ADC1_SHIFT 0
135#define ES8326_ADC2_SHIFT 4
136#define ES8326_ADC_SRC_ANA 0
137#define ES8326_ADC_SRC_ANA_INV_SW0 1
138#define ES8326_ADC_SRC_ANA_INV_SW1 2
139#define ES8326_ADC_SRC_DMIC_MCLK 3
140#define ES8326_ADC_SRC_DMIC_SDIN2 4
141#define ES8326_ADC_SRC_DMIC_SDIN2_INV 5
142#define ES8326_ADC_SRC_DMIC_SDIN3 6
143#define ES8326_ADC_SRC_DMIC_SDIN3_INV 7
144
145#define ES8326_ADC_AMIC ((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \
146 | (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT))
147#define ES8326_ADC_DMIC ((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \
148 | (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT))
149/* ES8326_ADC2_SRC */
150#define ES8326_ADC3_SHIFT 0
151#define ES8326_ADC4_SHIFT 3
152
4ddad00c 153/* ES8326_HPDET_TYPE */
5c439937
ZN
154#define ES8326_HP_DET_SRC_PIN27 (1 << 5)
155#define ES8326_HP_DET_SRC_PIN9 (1 << 4)
156#define ES8326_HP_DET_JACK_POL (1 << 3)
157#define ES8326_HP_DET_BUTTON_POL (1 << 2)
158#define ES8326_HP_TYPE_OMTP (3 << 0)
159#define ES8326_HP_TYPE_CTIA (2 << 0)
160#define ES8326_HP_TYPE_AUTO (1 << 0)
161#define ES8326_HP_TYPE_AUTO_INV (0 << 0)
162
ac20a73d
ZN
163/* ES8326_INT_SOURCE */
164#define ES8326_INT_SRC_DAC_MOZ (1 << 0)
165#define ES8326_INT_SRC_ADC_MOZ (1 << 1)
166#define ES8326_INT_SRC_BUTTON (1 << 2)
167#define ES8326_INT_SRC_PIN9 (1 << 3)
168#define ES8326_INT_SRC_PIN27 (1 << 4)
169
5c439937
ZN
170/* ES8326_SDINOUT1_IO */
171#define ES8326_IO_INPUT (0 << 0)
172#define ES8326_IO_SDIN_SLOT0 (1 << 0)
173#define ES8326_IO_SDIN_SLOT1 (2 << 0)
174#define ES8326_IO_SDIN_SLOT2 (3 << 0)
175#define ES8326_IO_SDIN_SLOT7 (8 << 0)
176#define ES8326_IO_DMIC_CLK (9 << 0)
177#define ES8326_IO_DMIC_CLK_INV (0x0a << 0)
178#define ES8326_IO_SDOUT2 (0x0b << 0)
179#define ES8326_IO_LOW (0x0e << 0)
180#define ES8326_IO_HIGH (0x0f << 0)
181#define ES8326_ADC2DAC (1 << 3)
182#define ES8326_SDINOUT1_SHIFT 4
183
184/* ES8326_SDINOUT23_IO */
185#define ES8326_SDINOUT2_SHIFT 4
186#define ES8326_SDINOUT3_SHIFT 0
187
4ddad00c 188/* ES8326_HPDET_STA */
5c439937
ZN
189#define ES8326_HPINSERT_FLAG (1 << 1)
190#define ES8326_HPBUTTON_FLAG (1 << 0)
191
192/* ES8326_CHIP_VERSION 0xFF */
ac20a73d
ZN
193#define ES8326_VERSION (1 << 0)
194#define ES8326_VERSION_B (3 << 0)
5c439937
ZN
195
196#endif