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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
/*
* Copyright (C) 2023, Phytium Technology Co., Ltd. All Rights Reserved.
*
* Licensed under the BSD 3-Clause License (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of
* the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
* FilePath: es8336_reg.h
* Created Date: 2025-10-03 10:51:32
* Last Modified: 2025-10-22 14:51:22
* Description: This file is for the Codec reg.
*
* Modify History:
* Ver Who Date Changes
* ----- ---------- -------- ---------------------------------
* 1.0 wangzongqiang 2025/10/23 init
*/
#ifndef __DRV_ES8336_H__
#define __DRV_ES8336_H__
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
ES_I2S_MIN = -1,
ES_I2S_NORMAL = 0,
ES_I2S_LEFT = 1,
ES_I2S_RIGHT = 2,
ES_I2S_DSP = 3,
ES_I2S_MAX
} i2s_fmt_t;
typedef enum {
CODEC_DEV_WORK_MODE_NONE,
CODEC_DEV_WORK_MODE_ADC = (1 << 0), /*!< Enable ADC, only support input */
CODEC_DEV_WORK_MODE_DAC = (1 << 1), /*!< Enable DAC, only support output */
CODEC_DEV_WORK_MODE_BOTH =
(CODEC_DEV_WORK_MODE_ADC | CODEC_DEV_WORK_MODE_DAC), /*!< Support both DAC and ADC */
CODEC_DEV_WORK_MODE_LINE = (1 << 2), /*!< Line mode */
} codec_dec_work_mode_t;
/**
* @brief ES8336 default I2C address
*/
#define ES8336_CODEC_DEFAULT_ADDR (0x10)
#define ES8336_CODEC_DEFAULT_ADDR_1 (0x10)
#define FES8336_SUCCESS FT_SUCCESS
#define FES8336_SET_BIAS_LEVEL 0x1
#define FES8336_SET_FORMAT 0x2
#define FES8336_SET_VOLUME 0x3
#define FES8336_MUTE_DOWN 0x4
/* ES8336 register space */
/*
* RESET Control
*/
#define ES8336_RESET_REG00 0x00 /*register of reset*/
/*
* Clock Managerment
*/
#define ES8336_CLKMGR_CLKSW_REG01 0x01 /* clock manager*/
#define ES8336_CLKMGR_CLKSEL_REG02 0x02 /* clock manager*/
#define ES8336_CLKMGR_ADCOSR_REG03 0x03 /*ADC delta sigma over sample rate*/
#define ES8336_CLKMGR_ADCDIV1_REG04 0x04 /*ADC clock divider*/
#define ES8336_CLKMGR_ADCDIV2_REG05 0x05 /*ADC internal divider*/
#define ES8336_CLKMGR_DACDIV1_REG06 0x06 /*DAC clock divider*/
#define ES8336_CLKMGR_DACDIV2_REG07 0x07 /*DAC internal divider*/
#define ES8336_CLKMGR_CPDIV_REG08 0x08 /*charge pump clock divider*/
/*
* SDP Control
*/
#define ES8336_SDP_MS_BCKDIV_REG09 0x09 /*serial data port clk control*/
#define ES8336_SDP_ADCFMT_REG0A 0x0a /*ADC sdp config*/
#define ES8336_SDP_DACFMT_REG0B 0x0b /*DAC sdp config*/
/*
* System Control
*/
#define ES8336_SYS_VMIDSEL_REG0C 0x0c /*vmidSel config*/
#define ES8336_SYS_PDN_REG0D 0x0d /*power down config*/
#define ES8336_SYS_LP1_REG0E 0x0e /*low power mode*/
#define ES8336_SYS_LP2_REG0F 0x0f /*low power mode of output*/
#define ES8336_SYS_VMIDLOW_REG10 0x10 /*DAC bias selection*/
#define ES8336_SYS_VSEL_REG11 0x11 /*system register */
#define ES8336_SYS_REF_REG12 0x12 /*system register*/
/*
* HP Mixer
*/
#define ES8336_HPMIX_SEL_REG13 0x13
#define ES8336_HPMIX_SWITCH_REG14 0x14 /*RDAC and LDAC signal*/
#define ES8336_HPMIX_PDN_REG15 0x15 /*LHP and RHP config*/
#define ES8336_HPMIX_VOL_REG16 0x16 /*the gain of dB*/
/*
* Charge Pump Headphone driver
*/
#define ES8336_CPHP_OUTEN_REG17 0x17 /*LHP AND RHP output config*/
#define ES8336_CPHP_ICAL_VOL_REG18 0x18 /*the gain of dB of HPL*/
#define ES8336_CPHP_PDN1_REG19 0x19 /*HP config*/
#define ES8336_CPHP_PDN2_REG1A 0x1a /*CP config*/
#define ES8336_CPHP_LDOCTL_REG1B 0x1b /*voltage of hp*/
/*
* Calibration
*/
#define ES8336_CAL_TYPE_REG1C 0x1c /*HPL and HPR config*/
#define ES8336_CAL_SET_REG1D 0x1d /*ica and mcal config*/
#define ES8336_CAL_HPLIV_REG1E 0x1e /*HPL ical config*/
#define ES8336_CAL_HPRIV_REG1F 0x1f /*HPL ical config*/
#define ES8336_CAL_HPLMV_REG20 0x20 /*HPL mcal config*/
#define ES8336_CAL_HPRMV_REG21 0x21 /*HPL mcal config*/
/*
* ADC Control
*/
#define ES8336_ADC_PDN_LINSEL_REG22 0x22 /*PGA input select*/
#define ES8336_ADC_PGAGAIN_REG23 0x23 /*left PGA gain*/
#define ES8336_ADC_D2SEPGA_REG24 0x24 /*DF2SE config*/
#define ES8336_ADC_DMIC_REG25 0x25 /*ADC config*/
#define ES8336_ADC_MUTE_REG26 0x26 /*ADC mute config*/
#define ES8336_ADC_VOLUME_REG27 0x27 /*ADC volume config*/
#define ES8336_ADC_VOLUME_REG28 0x28 /*ADC volume config*/
#define ES8336_ADC_ALC1_REG29 0x29 /*ALC config and ALC PGA max gain*/
#define ES8336_ADC_ALC2_REG2A 0x2a /*ALC config and ALC PGA min gain*/
#define ES8336_ADC_ALC3_REG2B 0x2b /*ALC config*/
#define ES8336_ADC_ALC4_REG2C 0x2c /*ALC decay and attack config*/
#define ES8336_ADC_ALC5_REG2D 0x2d /*windows size for peak detector*/
#define ES8336_ADC_ALC6_REG2E 0x2e /* ALC noise gate config*/
/*
* DAC Control
*/
#define ES8336_DAC_PDN_REG2F 0x2f /*DAC control of power down*/
#define ES8336_DAC_SET1_REG30 0x30 /*DAC data select and mute*/
#define ES8336_DAC_SET2_REG31 0x31 /*DAC config and control*/
#define ES8336_DAC_SET3_REG32 0x32 /*DAC fs mode and mute config*/
#define ES8336_DAC_VOLL_REG33 0x33 /*DAC volume of left*/
#define ES8336_DAC_VOLR_REG34 0x34 /*DAC volume of right*/
/*
* GPIO
*/
#define ES8336_GPIO_SEL_REG4D 0x4D /*gpio select*/
#define ES8336_GPIO_DEBUNCE_INT_REG4E 0x4E /*button and insert debounce*/
#define ES8336_GPIO_FLAG 0x4F /*GM config*/
/*
* TEST MODE
*/
#define ES8336_TESTMODE_REG50 0x50 /*test register*/
#define ES8336_TEST1_REG51 0x51
#define ES8336_TEST2_REG52 0x52
#define ES8336_TEST3_REG53 0x53
#define ES8336_IFACE ES8336_SDP_MS_BCKDIV_REG09
#define ES8336_ADC_IFACE ES8336_SDP_ADCFMT_REG0A
#define ES8336_DAC_IFACE ES8336_SDP_DACFMT_REG0B
#define ES8336_REGNUM 84
/*REGISTER 0x22*/
#define ES8336_ADC_INPUT_SHIFT 4
#define ES8336_ADC_INPUT_MASK (0x3 << ES8336_ADC_INPUT_SHIFT)
#define ES8336_ADC_INPUT_LIN1 0
#define ES8336_ADC_INPUT_LIN2 1
#define ES8336_ADC_INPUT_LIN1_20DB_BOOST 2
#define ES8336_ADC_INPUT_LIN2_20DB_BOOST 3
/* REGISTER 0x01 CLOCK MANAGER */
#define ES8336_CLKMGR_MCLK_DIV_MASK (0x1 << 7)
#define ES8336_CLKMGR_MCLK_DIV_NML (0x0 << 7)
#define ES8336_CLKMGR_MCLK_DIV_1 (0x1 << 7)
#define ES8336_CLKMGR_ADC_MCLK_MASK (0x1 << 3)
#define ES8336_CLKMGR_ADC_MCLK_EN (0x1 << 3)
#define ES8336_CLKMGR_ADC_MCLK_DIS (0x0 << 3)
#define ES8336_CLKMGR_DAC_MCLK_MASK (0x1 << 2)
#define ES8336_CLKMGR_DAC_MCLK_EN (0x1 << 2)
#define ES8336_CLKMGR_DAC_MCLK_DIS (0x0 << 2)
#define ES8336_CLKMGR_ADC_ANALOG_MASK (0x1 << 1)
#define ES8336_CLKMGR_ADC_ANALOG_EN (0x1 << 1)
#define ES8336_CLKMGR_ADC_ANALOG_DIS (0x0 << 1)
#define ES8336_CLKMGR_DAC_ANALOG_MASK (0x1 << 0)
#define ES8336_CLKMGR_DAC_ANALOG_EN (0x1 << 0)
#define ES8336_CLKMGR_DAC_ANALOG_DIS (0x0 << 0)
/* REGISTER 0x0A */
#define ES8336_ADCWL_MASK (0x7 << 2)
#define ES8336_ADCWL_32 (0x4 << 2)
#define ES8336_ADCWL_24 (0x0 << 2)
#define ES8336_ADCWL_20 (0x1 << 2)
#define ES8336_ADCWL_18 (0x2 << 2)
#define ES8336_ADCWL_16 (0x3 << 2)
#define ES8336_ADCFMT_MASK (0x3 << 0)
#define ES8336_ADCFMT_I2S (0x0 << 0)
#define ES8336_ADCWL_LEFT (0x1 << 0)
#define ES8336_ADCWL_RIGHT (0x2 << 0)
#define ES8336_ADCWL_PCM (0x3 << 0)
/* REGISTER 0x0B */
#define ES8336_DACWL_MASK (0x7 << 2)
#define ES8336_DACWL_32 (0x4 << 2)
#define ES8336_DACWL_24 (0x0 << 2)
#define ES8336_DACWL_20 (0x1 << 2)
#define ES8336_DACWL_18 (0x2 << 2)
#define ES8336_DACWL_16 (0x3 << 2)
#define ES8336_DACFMT_MASK (0x3 << 0)
#define ES8336_DACFMT_I2S (0x0 << 0)
#define ES8336_DACWL_LEFT (0x1 << 0)
#define ES8336_DACWL_RIGHT (0x2 << 0)
#define ES8336_DACWL_PCM (0x3 << 0)
#ifdef __cplusplus
}
#endif
#endif /*__ES8336_H__*/
|