xref: /linux/sound/soc/codecs/es8323.h (revision af0bc3ac9a9e830cb52b718ecb237c4e76a466be)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright Openedhand Ltd.
4  *
5  * Author: Richard Purdie <richard@openedhand.com>
6  *         Binbin Zhou <zhoubinbin@loongson.cn>
7  *
8  */
9 
10 #ifndef _ES8323_H
11 #define _ES8323_H
12 
13 /* ES8323 register space */
14 
15 /* Chip Control and Power Management */
16 #define ES8323_CONTROL1		0x00
17 #define ES8323_CONTROL2		0x01
18 #define ES8323_CHIPPOWER	0x02
19 
20 #define ES8323_CHIPPOWER_DACVREF_OFF	0
21 #define ES8323_CHIPPOWER_ADCVREF_OFF	1
22 #define ES8323_CHIPPOWER_DACDLL_OFF	2
23 #define ES8323_CHIPPOWER_ADCDLL_OFF	3
24 #define ES8323_CHIPPOWER_DACSTM_RESET	4
25 #define ES8323_CHIPPOWER_ADCSTM_RESET	5
26 #define ES8323_CHIPPOWER_DACDIG_OFF	6
27 #define ES8323_CHIPPOWER_ADCDIG_OFF	7
28 
29 #define ES8323_ADCPOWER		0x03
30 
31 #define ES8323_ADCPOWER_INT1LP		BIT(0)
32 #define ES8323_ADCPOWER_FLASHLP		BIT(1)
33 #define ES8323_ADCPOWER_PDNADCBIS	BIT(2)
34 #define ES8323_ADCPOWER_PDNMICB		BIT(3)
35 
36 #define ES8323_ADCPOWER_PDNADCBIS_OFF	2
37 #define ES8323_ADCPOWER_PDNMICB_OFF	3
38 #define ES8323_ADCPOWER_PDNADCR_OFF	4
39 #define ES8323_ADCPOWER_PDNADCL_OFF	5
40 #define ES8323_ADCPOWER_PDNAINR_OFF	6
41 #define ES8323_ADCPOWER_PDNAINL_OFF	7
42 
43 #define ES8323_DACPOWER		0x04
44 
45 #define ES8323_DACPOWER_ROUT2_OFF	2
46 #define ES8323_DACPOWER_LOUT2_OFF	3
47 #define ES8323_DACPOWER_ROUT1_OFF	4
48 #define ES8323_DACPOWER_LOUT1_OFF	5
49 #define ES8323_DACPOWER_PDNDACR_OFF	6
50 #define ES8323_DACPOWER_PDNDACL_OFF	7
51 
52 #define ES8323_CHIPLOPOW1	0x05
53 #define ES8323_CHIPLOPOW2	0x06
54 #define ES8323_ANAVOLMANAG	0x07
55 #define ES8323_MASTERMODE	0x08
56 
57 #define ES8323_MASTERMODE_BCLKDIV	GENMASK(4, 0)
58 #define ES8323_MASTERMODE_BCLKINV	BIT(5)
59 #define ES8323_MASTERMODE_MCLKDIV2	BIT(6)
60 #define ES8323_MASTERMODE_MSC		BIT(7)
61 
62 /* ADC Control */
63 #define ES8323_ADCCONTROL1	0x09
64 
65 #define ES8323_ADCCONTROL1_MICAMPR_OFF	0
66 #define ES8323_ADCCONTROL1_MICAMPL_OFF	4
67 
68 #define ES8323_ADCCONTROL2	0x0a
69 #define ES8323_ADCCONTROL3	0x0b
70 #define ES8323_ADCCONTROL4	0x0c
71 
72 #define ES8323_ADCCONTROL4_ADCFORMAT	GENMASK(1, 0)
73 #define ES8323_FMT_I2S			0x0
74 #define ES8323_FMT_LEFT_J		0x1
75 #define ES8323_FMT_RIGHT_J		0x2
76 #define ES8323_FMT_DSP			0x3
77 #define ES8323_ADCCONTROL4_ADCWL	GENMASK(4, 2)
78 #define ES8323_S24_LE			0x0
79 #define ES8323_S20_LE			0x1
80 #define ES8323_S18_LE			0x2
81 #define ES8323_S16_LE			0x3
82 #define ES8323_S32_LE			0x4
83 #define ES8323_ADCCONTROL4_ADCLRP	BIT(5)
84 #define ES8323_ADCCONTROL4_DATSEL	GENMASK(7, 6)
85 
86 #define ES8323_ADCCONTROL5	0x0d
87 
88 #define ES8323_ADCCONTROL5_ADCFSRATIO	GENMASK(4, 0)
89 #define ES8323_ADCCONTROL5_ADCFSMODE	BIT(5)
90 #define ES8323_ADCCONTROL5_ADCFS_MASK	(ES8323_ADCCONTROL5_ADCFSRATIO |\
91 					 ES8323_ADCCONTROL5_ADCFSMODE)
92 
93 #define ES8323_ADCCONTROL6	0x0e
94 #define ES8323_ADCCONTROL7	0x0f
95 
96 #define ES8323_ADCCONTROL7_ADCMUTE_OFF	2
97 
98 #define ES8323_LADC_VOL		0x10
99 #define ES8323_RADC_VOL		0x11
100 #define ES8323_ADCCONTROL10	0x12
101 #define ES8323_ADCCONTROL11	0x13
102 #define ES8323_ADCCONTROL12	0x14
103 
104 #define ES8323_ADCCONTROL12_ALCATK_OFF	0
105 #define ES8323_ADCCONTROL12_ALCDCY_OFF	4
106 
107 #define ES8323_ADCCONTROL13	0x15
108 
109 #define ES8323_ADCCONTROL13_TIMEOUT_OFF	5
110 #define ES8323_ADCCONTROL13_ALCZC_OFF	6
111 
112 #define ES8323_ADCCONTROL14	0x16
113 
114 #define ES8323_ADCCONTROL14_NGAT_OFF	0
115 #define ES8323_ADCCONTROL14_NGG_OFF	1
116 #define ES8323_ADCCONTROL14_NGTH_OFF	3
117 
118 /* DAC Control */
119 #define ES8323_DACCONTROL1	0x17
120 
121 #define ES8323_DACCONTROL1_DACFORMAT	GENMASK(1, 0)
122 #define ES8323_DACCONTROL1_DACWL	GENMASK(5, 3)
123 #define ES8323_DACCONTROL1_DACLRP	BIT(6)
124 #define ES8323_DACCONTROL1_DACLRSWAP	BIT(7)
125 
126 #define ES8323_DACCONTROL2	0x18
127 
128 #define ES8323_DACCONTROL2_DACFSRATIO	GENMASK(4, 0)
129 #define ES8323_DACCONTROL2_DACFSMODE	BIT(5)
130 #define ES8323_DACCONTROL2_DACFS_MASK	(ES8323_DACCONTROL2_DACFSRATIO |\
131 					 ES8323_DACCONTROL2_DACFSMODE)
132 
133 #define ES8323_DACCONTROL3	0x19
134 
135 #define ES8323_DACCONTROL3_DACMUTE	BIT(2)
136 
137 #define ES8323_LDAC_VOL		0x1a
138 #define ES8323_RDAC_VOL		0x1b
139 #define ES8323_DACCONTROL6	0x1c
140 #define ES8323_DACCONTROL7	0x1d
141 #define ES8323_DACCONTROL8	0x1e
142 #define ES8323_DACCONTROL9	0x1f
143 #define ES8323_DACCONTROL10	0x20
144 #define ES8323_DACCONTROL11	0x21
145 #define ES8323_DACCONTROL12	0x22
146 #define ES8323_DACCONTROL13	0x23
147 #define ES8323_DACCONTROL14	0x24
148 #define ES8323_DACCONTROL15	0x25
149 #define ES8323_DACCONTROL16	0x26
150 #define ES8323_DACCONTROL17	0x27
151 
152 #define ES8323_DACCONTROL17_LI2LOVOL_OFF	3
153 
154 #define ES8323_DACCONTROL18	0x28
155 #define ES8323_DACCONTROL19	0x29
156 #define ES8323_DACCONTROL20	0x2a
157 
158 #define ES8323_DACCONTROL20_RI2ROVOL_OFF	3
159 
160 #define ES8323_DACCONTROL21	0x2b
161 #define ES8323_DACCONTROL22	0x2c
162 #define ES8323_DACCONTROL23	0x2d
163 #define ES8323_LOUT1_VOL	0x2e
164 #define ES8323_ROUT1_VOL	0x2f
165 #define ES8323_LOUT2_VOL	0x30
166 #define ES8323_ROUT2_VOL	0x31
167 #define ES8323_DACCONTROL28	0x32
168 #define ES8323_DACCONTROL29	0x33
169 #define ES8323_DACCONTROL30	0x34
170 
171 #endif
172