Merge tag 'amd-drm-fixes-5.11-2020-12-16' of git://people.freedesktop.org/~agd5f...
[linux-2.6-microblaze.git] / sound / soc / codecs / es8316.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright Everest Semiconductor Co.,Ltd
4  *
5  * Author: David Yang <yangxiaohua@everest-semi.com>
6  */
7
8 #ifndef _ES8316_H
9 #define _ES8316_H
10
11 /*
12  * ES8316 register space
13  */
14
15 /* Reset Control */
16 #define ES8316_RESET            0x00
17
18 /* Clock Management */
19 #define ES8316_CLKMGR_CLKSW     0x01
20 #define ES8316_CLKMGR_CLKSEL    0x02
21 #define ES8316_CLKMGR_ADCOSR    0x03
22 #define ES8316_CLKMGR_ADCDIV1   0x04
23 #define ES8316_CLKMGR_ADCDIV2   0x05
24 #define ES8316_CLKMGR_DACDIV1   0x06
25 #define ES8316_CLKMGR_DACDIV2   0x07
26 #define ES8316_CLKMGR_CPDIV     0x08
27
28 /* Serial Data Port Control */
29 #define ES8316_SERDATA1         0x09
30 #define ES8316_SERDATA_ADC      0x0a
31 #define ES8316_SERDATA_DAC      0x0b
32
33 /* System Control */
34 #define ES8316_SYS_VMIDSEL      0x0c
35 #define ES8316_SYS_PDN          0x0d
36 #define ES8316_SYS_LP1          0x0e
37 #define ES8316_SYS_LP2          0x0f
38 #define ES8316_SYS_VMIDLOW      0x10
39 #define ES8316_SYS_VSEL         0x11
40 #define ES8316_SYS_REF          0x12
41
42 /* Headphone Mixer */
43 #define ES8316_HPMIX_SEL        0x13
44 #define ES8316_HPMIX_SWITCH     0x14
45 #define ES8316_HPMIX_PDN        0x15
46 #define ES8316_HPMIX_VOL        0x16
47
48 /* Charge Pump Headphone driver */
49 #define ES8316_CPHP_OUTEN       0x17
50 #define ES8316_CPHP_ICAL_VOL    0x18
51 #define ES8316_CPHP_PDN1        0x19
52 #define ES8316_CPHP_PDN2        0x1a
53 #define ES8316_CPHP_LDOCTL      0x1b
54
55 /* Calibration */
56 #define ES8316_CAL_TYPE         0x1c
57 #define ES8316_CAL_SET          0x1d
58 #define ES8316_CAL_HPLIV        0x1e
59 #define ES8316_CAL_HPRIV        0x1f
60 #define ES8316_CAL_HPLMV        0x20
61 #define ES8316_CAL_HPRMV        0x21
62
63 /* ADC Control */
64 #define ES8316_ADC_PDN_LINSEL   0x22
65 #define ES8316_ADC_PGAGAIN      0x23
66 #define ES8316_ADC_D2SEPGA      0x24
67 #define ES8316_ADC_DMIC         0x25
68 #define ES8316_ADC_MUTE         0x26
69 #define ES8316_ADC_VOLUME       0x27
70 #define ES8316_ADC_ALC1         0x29
71 #define ES8316_ADC_ALC2         0x2a
72 #define ES8316_ADC_ALC3         0x2b
73 #define ES8316_ADC_ALC4         0x2c
74 #define ES8316_ADC_ALC5         0x2d
75 #define ES8316_ADC_ALC_NG       0x2e
76
77 /* DAC Control */
78 #define ES8316_DAC_PDN          0x2f
79 #define ES8316_DAC_SET1         0x30
80 #define ES8316_DAC_SET2         0x31
81 #define ES8316_DAC_SET3         0x32
82 #define ES8316_DAC_VOLL         0x33
83 #define ES8316_DAC_VOLR         0x34
84
85 /* GPIO */
86 #define ES8316_GPIO_SEL         0x4d
87 #define ES8316_GPIO_DEBOUNCE    0x4e
88 #define ES8316_GPIO_FLAG        0x4f
89
90 /* Test mode */
91 #define ES8316_TESTMODE         0x50
92 #define ES8316_TEST1            0x51
93 #define ES8316_TEST2            0x52
94 #define ES8316_TEST3            0x53
95
96 /*
97  * Field definitions
98  */
99
100 /* ES8316_RESET */
101 #define ES8316_RESET_CSM_ON             0x80
102
103 /* ES8316_CLKMGR_CLKSW */
104 #define ES8316_CLKMGR_CLKSW_MCLK_ON     0x40
105 #define ES8316_CLKMGR_CLKSW_BCLK_ON     0x20
106
107 /* ES8316_SERDATA1 */
108 #define ES8316_SERDATA1_MASTER          0x80
109 #define ES8316_SERDATA1_BCLK_INV        0x20
110
111 /* ES8316_SERDATA_ADC and _DAC */
112 #define ES8316_SERDATA2_FMT_MASK        0x3
113 #define ES8316_SERDATA2_FMT_I2S         0x00
114 #define ES8316_SERDATA2_FMT_LEFTJ       0x01
115 #define ES8316_SERDATA2_FMT_RIGHTJ      0x02
116 #define ES8316_SERDATA2_FMT_PCM         0x03
117 #define ES8316_SERDATA2_ADCLRP          0x20
118 #define ES8316_SERDATA2_LEN_MASK        0x1c
119 #define ES8316_SERDATA2_LEN_24          0x00
120 #define ES8316_SERDATA2_LEN_20          0x04
121 #define ES8316_SERDATA2_LEN_18          0x08
122 #define ES8316_SERDATA2_LEN_16          0x0c
123 #define ES8316_SERDATA2_LEN_32          0x10
124
125 /* ES8316_GPIO_DEBOUNCE */
126 #define ES8316_GPIO_ENABLE_INTERRUPT            0x02
127
128 /* ES8316_GPIO_FLAG */
129 #define ES8316_GPIO_FLAG_GM_NOT_SHORTED         0x02
130 #define ES8316_GPIO_FLAG_HP_NOT_INSERTED        0x04
131
132 #endif