1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2020, Maxim Integrated.
4 */
5
6#ifndef _MAX98390_H
7#define _MAX98390_H
8
9/* MAX98390 Register Address */
10#define MAX98390_SOFTWARE_RESET 0x2000
11#define MAX98390_INT_RAW1 0x2002
12#define MAX98390_INT_RAW2 0x2003
13#define MAX98390_INT_RAW3 0x2004
14#define MAX98390_INT_STATE1 0x2005
15#define MAX98390_INT_STATE2 0x2006
16#define MAX98390_INT_STATE3 0x2007
17#define MAX98390_INT_FLAG1 0x2008
18#define MAX98390_INT_FLAG2 0x2009
19#define MAX98390_INT_FLAG3 0x200a
20#define MAX98390_INT_EN1 0x200b
21#define MAX98390_INT_EN2 0x200c
22#define MAX98390_INT_EN3 0x200d
23#define MAX98390_INT_FLAG_CLR1 0x200e
24#define MAX98390_INT_FLAG_CLR2 0x200f
25#define MAX98390_INT_FLAG_CLR3 0x2010
26#define MAX98390_IRQ_CTRL 0x2011
27#define MAX98390_CLK_MON 0x2012
28#define MAX98390_DAT_MON 0x2014
29#define MAX98390_WDOG_CTRL 0x2015
30#define MAX98390_WDOG_RST 0x2016
31#define MAX98390_MEAS_ADC_THERM_WARN_THRESH 0x2017
32#define MAX98390_MEAS_ADC_THERM_SHDN_THRESH 0x2018
33#define MAX98390_MEAS_ADC_THERM_HYSTERESIS 0x2019
34#define MAX98390_PIN_CFG 0x201a
35#define MAX98390_PCM_RX_EN_A 0x201b
36#define MAX98390_PCM_RX_EN_B 0x201c
37#define MAX98390_PCM_TX_EN_A 0x201d
38#define MAX98390_PCM_TX_EN_B 0x201e
39#define MAX98390_PCM_TX_HIZ_CTRL_A 0x201f
40#define MAX98390_PCM_TX_HIZ_CTRL_B 0x2020
41#define MAX98390_PCM_CH_SRC_1 0x2021
42#define MAX98390_PCM_CH_SRC_2 0x2022
43#define MAX98390_PCM_CH_SRC_3 0x2023
44#define MAX98390_PCM_MODE_CFG 0x2024
45#define MAX98390_PCM_MASTER_MODE 0x2025
46#define MAX98390_PCM_CLK_SETUP 0x2026
47#define MAX98390_PCM_SR_SETUP 0x2027
48#define MAX98390_ICC_RX_EN_A 0x202c
49#define MAX98390_ICC_RX_EN_B 0x202d
50#define MAX98390_ICC_TX_EN_A 0x202e
51#define MAX98390_ICC_TX_EN_B 0x202f
52#define MAX98390_ICC_HIZ_MANUAL_MODE 0x2030
53#define MAX98390_ICC_TX_HIZ_EN_A 0x2031
54#define MAX98390_ICC_TX_HIZ_EN_B 0x2032
55#define MAX98390_ICC_LNK_EN 0x2033
56#define MAX98390_R2039_AMP_DSP_CFG 0x2039
57#define MAX98390_R203A_AMP_EN 0x203a
58#define MAX98390_TONE_GEN_DC_CFG 0x203b
59#define MAX98390_SPK_SRC_SEL 0x203c
60#define MAX98390_R203D_SPK_GAIN 0x203d
61#define MAX98390_SSM_CFG 0x203e
62#define MAX98390_MEAS_EN 0x203f
63#define MAX98390_MEAS_DSP_CFG 0x2040
64#define MAX98390_BOOST_CTRL0 0x2041
65#define MAX98390_BOOST_CTRL3 0x2042
66#define MAX98390_BOOST_CTRL1 0x2043
67#define MAX98390_MEAS_ADC_CFG 0x2044
68#define MAX98390_MEAS_ADC_BASE_MSB 0x2045
69#define MAX98390_MEAS_ADC_BASE_LSB 0x2046
70#define MAX98390_ADC_CH0_DIVIDE 0x2047
71#define MAX98390_ADC_CH1_DIVIDE 0x2048
72#define MAX98390_ADC_CH2_DIVIDE 0x2049
73#define MAX98390_ADC_CH0_FILT_CFG 0x204a
74#define MAX98390_ADC_CH1_FILT_CFG 0x204b
75#define MAX98390_ADC_CH2_FILT_CFG 0x204c
76#define MAX98390_MEAS_ADC_CH0_READ 0x204d
77#define MAX98390_MEAS_ADC_CH1_READ 0x204e
78#define MAX98390_MEAS_ADC_CH2_READ 0x204f
79#define MAX98390_PWR_GATE_CTL 0x2050
80#define MAX98390_PWR_GATE_STATUS 0x2051
81#define MAX98390_VBAT_LOW_STATUS 0x2052
82#define MAX98390_PVDD_LOW_STATUS 0x2053
83#define MAX98390_BROWNOUT_STATUS 0x2054
84#define MAX98390_BROWNOUT_EN 0x2055
85#define MAX98390_BROWNOUT_INFINITE_HOLD 0x2056
86#define MAX98390_BROWNOUT_INFINITE_HOLD_CLR 0x2057
87#define MAX98390_BROWNOUT_LVL_HOLD 0x2058
88#define MAX98390_BROWNOUT_LVL1_THRESH 0x2059
89#define MAX98390_BROWNOUT_LVL2_THRESH 0x205a
90#define MAX98390_BROWNOUT_LVL3_THRESH 0x205b
91#define MAX98390_BROWNOUT_LVL4_THRESH 0x205c
92#define MAX98390_BROWNOUT_THRESH_HYSTERYSIS 0x205d
93#define MAX98390_BROWNOUT_AMP_LIMITER_ATK_REL 0x205e
94#define MAX98390_BROWNOUT_AMP_GAIN_ATK_REL 0x205f
95#define MAX98390_BROWNOUT_AMP1_CLIP_MODE 0x2060
96#define MAX98390_BROWNOUT_LVL1_CUR_LIMIT 0x2061
97#define MAX98390_BROWNOUT_LVL1_AMP1_CTRL1 0x2062
98#define MAX98390_BROWNOUT_LVL1_AMP1_CTRL2 0x2063
99#define MAX98390_BROWNOUT_LVL1_AMP1_CTRL3 0x2064
100#define MAX98390_BROWNOUT_LVL2_CUR_LIMIT 0x2065
101#define MAX98390_BROWNOUT_LVL2_AMP1_CTRL1 0x2066
102#define MAX98390_BROWNOUT_LVL2_AMP1_CTRL2 0x2067
103#define MAX98390_BROWNOUT_LVL2_AMP1_CTRL3 0x2068
104#define MAX98390_BROWNOUT_LVL3_CUR_LIMIT 0x2069
105#define MAX98390_BROWNOUT_LVL3_AMP1_CTRL1 0x206a
106#define MAX98390_BROWNOUT_LVL3_AMP1_CTRL2 0x206b
107#define MAX98390_BROWNOUT_LVL3_AMP1_CTRL3 0x206c
108#define MAX98390_BROWNOUT_LVL4_CUR_LIMIT 0x206d
109#define MAX98390_BROWNOUT_LVL4_AMP1_CTRL1 0x206e
110#define MAX98390_BROWNOUT_LVL4_AMP1_CTRL2 0x206f
111#define MAX98390_BROWNOUT_LVL4_AMP1_CTRL3 0x2070
112#define MAX98390_BROWNOUT_LOWEST_STATUS 0x2071
113#define MAX98390_BROWNOUT_ILIM_HLD 0x2072
114#define MAX98390_BROWNOUT_LIM_HLD 0x2073
115#define MAX98390_BROWNOUT_CLIP_HLD 0x2074
116#define MAX98390_BROWNOUT_GAIN_HLD 0x2075
117#define MAX98390_ENV_TRACK_VOUT_HEADROOM 0x2076
118#define MAX98390_ENV_TRACK_BOOST_VOUT_DELAY 0x2077
119#define MAX98390_ENV_TRACK_REL_RATE 0x2078
120#define MAX98390_ENV_TRACK_HOLD_RATE 0x2079
121#define MAX98390_ENV_TRACK_CTRL 0x207a
122#define MAX98390_ENV_TRACK_BOOST_VOUT_READ 0x207b
123#define MAX98390_BOOST_BYPASS1 0x207c
124#define MAX98390_BOOST_BYPASS2 0x207d
125#define MAX98390_BOOST_BYPASS3 0x207e
126#define MAX98390_FET_SCALING1 0x207f
127#define MAX98390_FET_SCALING2 0x2080
128#define MAX98390_FET_SCALING3 0x2081
129#define MAX98390_FET_SCALING4 0x2082
130#define MAX98390_SPK_SPEEDUP 0x2084
131
132#define DSM_STBASS_HPF_B0_BYTE0 0x2101
133#define DSM_STBASS_HPF_B0_BYTE1 0x2102
134#define DSM_STBASS_HPF_B0_BYTE2 0x2103
135#define DSM_STBASS_HPF_B1_BYTE0 0x2105
136#define DSM_STBASS_HPF_B1_BYTE1 0x2106
137#define DSM_STBASS_HPF_B1_BYTE2 0x2107
138#define DSM_STBASS_HPF_B2_BYTE0 0x2109
139#define DSM_STBASS_HPF_B2_BYTE1 0x210a
140#define DSM_STBASS_HPF_B2_BYTE2 0x210b
141#define DSM_STBASS_HPF_A1_BYTE0 0x210d
142#define DSM_STBASS_HPF_A1_BYTE1 0x210e
143#define DSM_STBASS_HPF_A1_BYTE2 0x210f
144#define DSM_STBASS_HPF_A2_BYTE0 0x2111
145#define DSM_STBASS_HPF_A2_BYTE1 0x2112
146#define DSM_STBASS_HPF_A2_BYTE2 0x2113
147#define DSM_STBASS_LPF_B0_BYTE0 0x2115
148#define DSM_STBASS_LPF_B0_BYTE1 0x2116
149#define DSM_STBASS_LPF_B0_BYTE2 0x2117
150#define DSM_STBASS_LPF_B1_BYTE0 0x2119
151#define DSM_STBASS_LPF_B1_BYTE1 0x211a
152#define DSM_STBASS_LPF_B1_BYTE2 0x211b
153#define DSM_STBASS_LPF_B2_BYTE0 0x211d
154#define DSM_STBASS_LPF_B2_BYTE1 0x211e
155#define DSM_STBASS_LPF_B2_BYTE2 0x211f
156#define DSM_STBASS_LPF_A1_BYTE0 0x2121
157#define DSM_STBASS_LPF_A1_BYTE1 0x2122
158#define DSM_STBASS_LPF_A1_BYTE2 0x2123
159#define DSM_STBASS_LPF_A2_BYTE0 0x2125
160#define DSM_STBASS_LPF_A2_BYTE1 0x2126
161#define DSM_STBASS_LPF_A2_BYTE2 0x2127
162#define DSM_EQ_BQ1_B0_BYTE0 0x2129
163#define DSM_EQ_BQ1_B0_BYTE1 0x212a
164#define DSM_EQ_BQ1_B0_BYTE2 0x212b
165#define DSM_EQ_BQ1_B1_BYTE0 0x212d
166#define DSM_EQ_BQ1_B1_BYTE1 0x212e
167#define DSM_EQ_BQ1_B1_BYTE2 0x212f
168#define DSM_EQ_BQ1_B2_BYTE0 0x2131
169#define DSM_EQ_BQ1_B2_BYTE1 0x2132
170#define DSM_EQ_BQ1_B2_BYTE2 0x2133
171#define DSM_EQ_BQ1_A1_BYTE0 0x2135
172#define DSM_EQ_BQ1_A1_BYTE1 0x2136
173#define DSM_EQ_BQ1_A1_BYTE2 0x2137
174#define DSM_EQ_BQ1_A2_BYTE0 0x2139
175#define DSM_EQ_BQ1_A2_BYTE1 0x213a
176#define DSM_EQ_BQ1_A2_BYTE2 0x213b
177#define DSM_EQ_BQ2_B0_BYTE0 0x213d
178#define DSM_EQ_BQ2_B0_BYTE1 0x213e
179#define DSM_EQ_BQ2_B0_BYTE2 0x213f
180#define DSM_EQ_BQ2_B1_BYTE0 0x2141
181#define DSM_EQ_BQ2_B1_BYTE1 0x2142
182#define DSM_EQ_BQ2_B1_BYTE2 0x2143
183#define DSM_EQ_BQ2_B2_BYTE0 0x2145
184#define DSM_EQ_BQ2_B2_BYTE1 0x2146
185#define DSM_EQ_BQ2_B2_BYTE2 0x2147
186#define DSM_EQ_BQ2_A1_BYTE0 0x2149
187#define DSM_EQ_BQ2_A1_BYTE1 0x214a
188#define DSM_EQ_BQ2_A1_BYTE2 0x214b
189#define DSM_EQ_BQ2_A2_BYTE0 0x214d
190#define DSM_EQ_BQ2_A2_BYTE1 0x214e
191#define DSM_EQ_BQ2_A2_BYTE2 0x214f
192#define DSM_EQ_BQ3_B0_BYTE0 0x2151
193#define DSM_EQ_BQ3_B0_BYTE1 0x2152
194#define DSM_EQ_BQ3_B0_BYTE2 0x2153
195#define DSM_EQ_BQ3_B1_BYTE0 0x2155
196#define DSM_EQ_BQ3_B1_BYTE1 0x2156
197#define DSM_EQ_BQ3_B1_BYTE2 0x2157
198#define DSM_EQ_BQ3_B2_BYTE0 0x2159
199#define DSM_EQ_BQ3_B2_BYTE1 0x215a
200#define DSM_EQ_BQ3_B2_BYTE2 0x215b
201#define DSM_EQ_BQ3_A1_BYTE0 0x215d
202#define DSM_EQ_BQ3_A1_BYTE1 0x215e
203#define DSM_EQ_BQ3_A1_BYTE2 0x215f
204#define DSM_EQ_BQ3_A2_BYTE0 0x2161
205#define DSM_EQ_BQ3_A2_BYTE1 0x2162
206#define DSM_EQ_BQ3_A2_BYTE2 0x2163
207#define DSM_EQ_BQ4_B0_BYTE0 0x2165
208#define DSM_EQ_BQ4_B0_BYTE1 0x2166
209#define DSM_EQ_BQ4_B0_BYTE2 0x2167
210#define DSM_EQ_BQ4_B1_BYTE0 0x2169
211#define DSM_EQ_BQ4_B1_BYTE1 0x216a
212#define DSM_EQ_BQ4_B1_BYTE2 0x216b
213#define DSM_EQ_BQ4_B2_BYTE0 0x216d
214#define DSM_EQ_BQ4_B2_BYTE1 0x216e
215#define DSM_EQ_BQ4_B2_BYTE2 0x216f
216#define DSM_EQ_BQ4_A1_BYTE0 0x2171
217#define DSM_EQ_BQ4_A1_BYTE1 0x2172
218#define DSM_EQ_BQ4_A1_BYTE2 0x2173
219#define DSM_EQ_BQ4_A2_BYTE0 0x2175
220#define DSM_EQ_BQ4_A2_BYTE1 0x2176
221#define DSM_EQ_BQ4_A2_BYTE2 0x2177
222#define DSM_EQ_BQ5_B0_BYTE0 0x2179
223#define DSM_EQ_BQ5_B0_BYTE1 0x217a
224#define DSM_EQ_BQ5_B0_BYTE2 0x217b
225#define DSM_EQ_BQ5_B1_BYTE0 0x217d
226#define DSM_EQ_BQ5_B1_BYTE1 0x217e
227#define DSM_EQ_BQ5_B1_BYTE2 0x217f
228#define DSM_EQ_BQ5_B2_BYTE0 0x2181
229#define DSM_EQ_BQ5_B2_BYTE1 0x2182
230#define DSM_EQ_BQ5_B2_BYTE2 0x2183
231#define DSM_EQ_BQ5_A1_BYTE0 0x2185
232#define DSM_EQ_BQ5_A1_BYTE1 0x2186
233#define DSM_EQ_BQ5_A1_BYTE2 0x2187
234#define DSM_EQ_BQ5_A2_BYTE0 0x2189
235#define DSM_EQ_BQ5_A2_BYTE1 0x218a
236#define DSM_EQ_BQ5_A2_BYTE2 0x218b
237#define DSM_EQ_BQ6_B0_BYTE0 0x218d
238#define DSM_EQ_BQ6_B0_BYTE1 0x218e
239#define DSM_EQ_BQ6_B0_BYTE2 0x218f
240#define DSM_EQ_BQ6_B1_BYTE0 0x2191
241#define DSM_EQ_BQ6_B1_BYTE1 0x2192
242#define DSM_EQ_BQ6_B1_BYTE2 0x2193
243#define DSM_EQ_BQ6_B2_BYTE0 0x2195
244#define DSM_EQ_BQ6_B2_BYTE1 0x2196
245#define DSM_EQ_BQ6_B2_BYTE2 0x2197
246#define DSM_EQ_BQ6_A1_BYTE0 0x2199
247#define DSM_EQ_BQ6_A1_BYTE1 0x219a
248#define DSM_EQ_BQ6_A1_BYTE2 0x219b
249#define DSM_EQ_BQ6_A2_BYTE0 0x219d
250#define DSM_EQ_BQ6_A2_BYTE1 0x219e
251#define DSM_EQ_BQ6_A2_BYTE2 0x219f
252#define DSM_EQ_BQ7_B0_BYTE0 0x21a1
253#define DSM_EQ_BQ7_B0_BYTE1 0x21a2
254#define DSM_EQ_BQ7_B0_BYTE2 0x21a3
255#define DSM_EQ_BQ7_B1_BYTE0 0x21a5
256#define DSM_EQ_BQ7_B1_BYTE1 0x21a6
257#define DSM_EQ_BQ7_B1_BYTE2 0x21a7
258#define DSM_EQ_BQ7_B2_BYTE0 0x21a9
259#define DSM_EQ_BQ7_B2_BYTE1 0x21aa
260#define DSM_EQ_BQ7_B2_BYTE2 0x21ab
261#define DSM_EQ_BQ7_A1_BYTE0 0x21ad
262#define DSM_EQ_BQ7_A1_BYTE1 0x21ae
263#define DSM_EQ_BQ7_A1_BYTE2 0x21af
264#define DSM_EQ_BQ7_A2_BYTE0 0x21b1
265#define DSM_EQ_BQ7_A2_BYTE1 0x21b2
266#define DSM_EQ_BQ7_A2_BYTE2 0x21b3
267#define DSM_EQ_BQ8_B0_BYTE0 0x21b5
268#define DSM_EQ_BQ8_B0_BYTE1 0x21b6
269#define DSM_EQ_BQ8_B0_BYTE2 0x21b7
270#define DSM_EQ_BQ8_B1_BYTE0 0x21b9
271#define DSM_EQ_BQ8_B1_BYTE1 0x21ba
272#define DSM_EQ_BQ8_B1_BYTE2 0x21bb
273#define DSM_EQ_BQ8_B2_BYTE0 0x21bd
274#define DSM_EQ_BQ8_B2_BYTE1 0x21be
275#define DSM_EQ_BQ8_B2_BYTE2 0x21bf
276#define DSM_EQ_BQ8_A1_BYTE0 0x21c1
277#define DSM_EQ_BQ8_A1_BYTE1 0x21c2
278#define DSM_EQ_BQ8_A1_BYTE2 0x21c3
279#define DSM_EQ_BQ8_A2_BYTE0 0x21c5
280#define DSM_EQ_BQ8_A2_BYTE1 0x21c6
281#define DSM_EQ_BQ8_A2_BYTE2 0x21c7
282#define DSM_LFX_BQ_B0_BYTE0 0x21c9
283#define DSM_LFX_BQ_B0_BYTE1 0x21ca
284#define DSM_LFX_BQ_B0_BYTE2 0x21cb
285#define DSM_LFX_BQ_B1_BYTE0 0x21cd
286#define DSM_LFX_BQ_B1_BYTE1 0x21ce
287#define DSM_LFX_BQ_B1_BYTE2 0x21cf
288#define DSM_LFX_BQ_B2_BYTE0 0x21d1
289#define DSM_LFX_BQ_B2_BYTE1 0x21d2
290#define DSM_LFX_BQ_B2_BYTE2 0x21d3
291#define DSM_LFX_BQ_A1_BYTE0 0x21d5
292#define DSM_LFX_BQ_A1_BYTE1 0x21d6
293#define DSM_LFX_BQ_A1_BYTE2 0x21d7
294#define DSM_LFX_BQ_A2_BYTE0 0x21d9
295#define DSM_LFX_BQ_A2_BYTE1 0x21da
296#define DSM_LFX_BQ_A2_BYTE2 0x21db
297#define DSM_PPR_HPF_B0_BYTE0 0x21dd
298#define DSM_PPR_HPF_B0_BYTE1 0x21de
299#define DSM_PPR_HPF_B0_BYTE2 0x21df
300#define DSM_PPR_HPF_B1_BYTE0 0x21e1
301#define DSM_PPR_HPF_B1_BYTE1 0x21e2
302#define DSM_PPR_HPF_B1_BYTE2 0x21e3
303#define DSM_PPR_HPF_B2_BYTE0 0x21e5
304#define DSM_PPR_HPF_B2_BYTE1 0x21e6
305#define DSM_PPR_HPF_B2_BYTE2 0x21e7
306#define DSM_PPR_HPF_A1_BYTE0 0x21e9
307#define DSM_PPR_HPF_A1_BYTE1 0x21ea
308#define DSM_PPR_HPF_A1_BYTE2 0x21eb
309#define DSM_PPR_HPF_A2_BYTE0 0x21ed
310#define DSM_PPR_HPF_A2_BYTE1 0x21ee
311#define DSM_PPR_HPF_A2_BYTE2 0x21ef
312#define DSM_PPR_LPF_B0_BYTE0 0x21f1
313#define DSM_PPR_LPF_B0_BYTE1 0x21f2
314#define DSM_PPR_LPF_B0_BYTE2 0x21f3
315#define DSM_PPR_LPF_B1_BYTE0 0x21f5
316#define DSM_PPR_LPF_B1_BYTE1 0x21f6
317#define DSM_PPR_LPF_B1_BYTE2 0x21f7
318#define DSM_PPR_LPF_B2_BYTE0 0x21f9
319#define DSM_PPR_LPF_B2_BYTE1 0x21fa
320#define DSM_PPR_LPF_B2_BYTE2 0x21fb
321#define DSM_PPR_LPF_A1_BYTE0 0x21fd
322#define DSM_PPR_LPF_A1_BYTE1 0x21fe
323#define DSM_PPR_LPF_A1_BYTE2 0x21ff
324#define DSM_PPR_LPF_A2_BYTE0 0x2201
325#define DSM_PPR_LPF_A2_BYTE1 0x2202
326#define DSM_PPR_LPF_A2_BYTE2 0x2203
327#define DSM_SPL_BQ_B0_BYTE0 0x2205
328#define DSM_SPL_BQ_B0_BYTE1 0x2206
329#define DSM_SPL_BQ_B0_BYTE2 0x2207
330#define DSM_SPL_BQ_B1_BYTE0 0x2209
331#define DSM_SPL_BQ_B1_BYTE1 0x220a
332#define DSM_SPL_BQ_B1_BYTE2 0x220b
333#define DSM_SPL_BQ_B2_BYTE0 0x220d
334#define DSM_SPL_BQ_B2_BYTE1 0x220e
335#define DSM_SPL_BQ_B2_BYTE2 0x220f
336#define DSM_SPL_BQ_A1_BYTE0 0x2211
337#define DSM_SPL_BQ_A1_BYTE1 0x2212
338#define DSM_SPL_BQ_A1_BYTE2 0x2213
339#define DSM_SPL_BQ_A2_BYTE0 0x2215
340#define DSM_SPL_BQ_A2_BYTE1 0x2216
341#define DSM_SPL_BQ_A2_BYTE2 0x2217
342#define DSM_EXCUR_BQ_B0_BYTE0 0x2219
343#define DSM_EXCUR_BQ_B0_BYTE1 0x221a
344#define DSM_EXCUR_BQ_B0_BYTE2 0x221b
345#define DSM_EXCUR_BQ_B1_BYTE0 0x221d
346#define DSM_EXCUR_BQ_B1_BYTE1 0x221e
347#define DSM_EXCUR_BQ_B1_BYTE2 0x221f
348#define DSM_EXCUR_BQ_B2_BYTE0 0x2221
349#define DSM_EXCUR_BQ_B2_BYTE1 0x2222
350#define DSM_EXCUR_BQ_B2_BYTE2 0x2223
351#define DSM_EXCUR_BQ_A1_BYTE0 0x2225
352#define DSM_EXCUR_BQ_A1_BYTE1 0x2226
353#define DSM_EXCUR_BQ_A1_BYTE2 0x2227
354#define DSM_EXCUR_BQ_A2_BYTE0 0x2229
355#define DSM_EXCUR_BQ_A2_BYTE1 0x222a
356#define DSM_EXCUR_BQ_A2_BYTE2 0x222b
357#define DSM_EXCPROT_HPF1_B0_BYTE0 0x222d
358#define DSM_EXCPROT_HPF1_B0_BYTE1 0x222e
359#define DSM_EXCPROT_HPF1_B0_BYTE2 0x222f
360#define DSM_EXCPROT_HPF1_B1_BYTE0 0x2231
361#define DSM_EXCPROT_HPF1_B1_BYTE1 0x2232
362#define DSM_EXCPROT_HPF1_B1_BYTE2 0x2233
363#define DSM_EXCPROT_HPF1_B2_BYTE0 0x2235
364#define DSM_EXCPROT_HPF1_B2_BYTE1 0x2236
365#define DSM_EXCPROT_HPF1_B2_BYTE2 0x2237
366#define DSM_EXCPROT_HPF1_A1_BYTE0 0x2239
367#define DSM_EXCPROT_HPF1_A1_BYTE1 0x223a
368#define DSM_EXCPROT_HPF1_A1_BYTE2 0x223b
369#define DSM_EXCPROT_HPF1_A2_BYTE0 0x223d
370#define DSM_EXCPROT_HPF1_A2_BYTE1 0x223e
371#define DSM_EXCPROT_HPF1_A2_BYTE2 0x223f
372#define DSM_EXCPROT_HPF2_B0_BYTE0 0x2241
373#define DSM_EXCPROT_HPF2_B0_BYTE1 0x2242
374#define DSM_EXCPROT_HPF2_B0_BYTE2 0x2243
375#define DSM_EXCPROT_HPF2_B1_BYTE0 0x2245
376#define DSM_EXCPROT_HPF2_B1_BYTE1 0x2246
377#define DSM_EXCPROT_HPF2_B1_BYTE2 0x2247
378#define DSM_EXCPROT_HPF2_B2_BYTE0 0x2249
379#define DSM_EXCPROT_HPF2_B2_BYTE1 0x224a
380#define DSM_EXCPROT_HPF2_B2_BYTE2 0x224b
381#define DSM_EXCPROT_HPF2_A1_BYTE0 0x224d
382#define DSM_EXCPROT_HPF2_A1_BYTE1 0x224e
383#define DSM_EXCPROT_HPF2_A1_BYTE2 0x224f
384#define DSM_EXCPROT_HPF2_A2_BYTE0 0x2251
385#define DSM_EXCPROT_HPF2_A2_BYTE1 0x2252
386#define DSM_EXCPROT_HPF2_A2_BYTE2 0x2253
387#define DSM_EXCPROT_HPF3_B0_BYTE0 0x2255
388#define DSM_EXCPROT_HPF3_B0_BYTE1 0x2256
389#define DSM_EXCPROT_HPF3_B0_BYTE2 0x2257
390#define DSM_EXCPROT_HPF3_B1_BYTE0 0x2259
391#define DSM_EXCPROT_HPF3_B1_BYTE1 0x225a
392#define DSM_EXCPROT_HPF3_B1_BYTE2 0x225b
393#define DSM_EXCPROT_HPF3_B2_BYTE0 0x225d
394#define DSM_EXCPROT_HPF3_B2_BYTE1 0x225e
395#define DSM_EXCPROT_HPF3_B2_BYTE2 0x225f
396#define DSM_EXCPROT_HPF3_A1_BYTE0 0x2261
397#define DSM_EXCPROT_HPF3_A1_BYTE1 0x2262
398#define DSM_EXCPROT_HPF3_A1_BYTE2 0x2263
399#define DSM_EXCPROT_HPF3_A2_BYTE0 0x2265
400#define DSM_EXCPROT_HPF3_A2_BYTE1 0x2266
401#define DSM_EXCPROT_HPF3_A2_BYTE2 0x2267
402#define DSM_EXCPROT_HPF4_B0_BYTE0 0x2269
403#define DSM_EXCPROT_HPF4_B0_BYTE1 0x226a
404#define DSM_EXCPROT_HPF4_B0_BYTE2 0x226b
405#define DSM_EXCPROT_HPF4_B1_BYTE0 0x226d
406#define DSM_EXCPROT_HPF4_B1_BYTE1 0x226e
407#define DSM_EXCPROT_HPF4_B1_BYTE2 0x226f
408#define DSM_EXCPROT_HPF4_B2_BYTE0 0x2271
409#define DSM_EXCPROT_HPF4_B2_BYTE1 0x2272
410#define DSM_EXCPROT_HPF4_B2_BYTE2 0x2273
411#define DSM_EXCPROT_HPF4_A1_BYTE0 0x2275
412#define DSM_EXCPROT_HPF4_A1_BYTE1 0x2276
413#define DSM_EXCPROT_HPF4_A1_BYTE2 0x2277
414#define DSM_EXCPROT_HPF4_A2_BYTE0 0x2279
415#define DSM_EXCPROT_HPF4_A2_BYTE1 0x227a
416#define DSM_EXCPROT_HPF4_A2_BYTE2 0x227b
417#define DSM_EXCPROT_HPF5_B0_BYTE0 0x227d
418#define DSM_EXCPROT_HPF5_B0_BYTE1 0x227e
419#define DSM_EXCPROT_HPF5_B0_BYTE2 0x227f
420#define DSM_EXCPROT_HPF5_B1_BYTE0 0x2281
421#define DSM_EXCPROT_HPF5_B1_BYTE1 0x2282
422#define DSM_EXCPROT_HPF5_B1_BYTE2 0x2283
423#define DSM_EXCPROT_HPF5_B2_BYTE0 0x2285
424#define DSM_EXCPROT_HPF5_B2_BYTE1 0x2286
425#define DSM_EXCPROT_HPF5_B2_BYTE2 0x2287
426#define DSM_EXCPROT_HPF5_A1_BYTE0 0x2289
427#define DSM_EXCPROT_HPF5_A1_BYTE1 0x228a
428#define DSM_EXCPROT_HPF5_A1_BYTE2 0x228b
429#define DSM_EXCPROT_HPF5_A2_BYTE0 0x228d
430#define DSM_EXCPROT_HPF5_A2_BYTE1 0x228e
431#define DSM_EXCPROT_HPF5_A2_BYTE2 0x228f
432#define DSM_DEBUZZ_BPF_B0_BYTE0 0x2291
433#define DSM_DEBUZZ_BPF_B0_BYTE1 0x2292
434#define DSM_DEBUZZ_BPF_B0_BYTE2 0x2293
435#define DSM_DEBUZZ_BPF_B1_BYTE0 0x2295
436#define DSM_DEBUZZ_BPF_B1_BYTE1 0x2296
437#define DSM_DEBUZZ_BPF_B1_BYTE2 0x2297
438#define DSM_DEBUZZ_BPF_B2_BYTE0 0x2299
439#define DSM_DEBUZZ_BPF_B2_BYTE1 0x229a
440#define DSM_DEBUZZ_BPF_B2_BYTE2 0x229b
441#define DSM_DEBUZZ_BPF_A1_BYTE0 0x229d
442#define DSM_DEBUZZ_BPF_A1_BYTE1 0x229e
443#define DSM_DEBUZZ_BPF_A1_BYTE2 0x229f
444#define DSM_DEBUZZ_BPF_A2_BYTE0 0x22a1
445#define DSM_DEBUZZ_BPF_A2_BYTE1 0x22a2
446#define DSM_DEBUZZ_BPF_A2_BYTE2 0x22a3
447#define DSM_DEBUZZ_PORT_B0_BYTE0 0x22a5
448#define DSM_DEBUZZ_PORT_B0_BYTE1 0x22a6
449#define DSM_DEBUZZ_PORT_B0_BYTE2 0x22a7
450#define DSM_DEBUZZ_PORT_B1_BYTE0 0x22a9
451#define DSM_DEBUZZ_PORT_B1_BYTE1 0x22aa
452#define DSM_DEBUZZ_PORT_B1_BYTE2 0x22ab
453#define DSM_DEBUZZ_PORT_B2_BYTE0 0x22ad
454#define DSM_DEBUZZ_PORT_B2_BYTE1 0x22ae
455#define DSM_DEBUZZ_PORT_B2_BYTE2 0x22af
456#define DSM_DEBUZZ_PORT_A1_BYTE0 0x22b1
457#define DSM_DEBUZZ_PORT_A1_BYTE1 0x22b2
458#define DSM_DEBUZZ_PORT_A1_BYTE2 0x22b3
459#define DSM_DEBUZZ_PORT_A2_BYTE0 0x22b5
460#define DSM_DEBUZZ_PORT_A2_BYTE1 0x22b6
461#define DSM_DEBUZZ_PORT_A2_BYTE2 0x22b7
462#define DSM_DEBUZZ_NOTCH_B0_BYTE0 0x22b9
463#define DSM_DEBUZZ_NOTCH_B0_BYTE1 0x22ba
464#define DSM_DEBUZZ_NOTCH_B0_BYTE2 0x22bb
465#define DSM_DEBUZZ_NOTCH_B1_BYTE0 0x22bd
466#define DSM_DEBUZZ_NOTCH_B1_BYTE1 0x22be
467#define DSM_DEBUZZ_NOTCH_B1_BYTE2 0x22bf
468#define DSM_DEBUZZ_NOTCH_B2_BYTE0 0x22c1
469#define DSM_DEBUZZ_NOTCH_B2_BYTE1 0x22c2
470#define DSM_DEBUZZ_NOTCH_B2_BYTE2 0x22c3
471#define DSM_DEBUZZ_NOTCH_A1_BYTE0 0x22c5
472#define DSM_DEBUZZ_NOTCH_A1_BYTE1 0x22c6
473#define DSM_DEBUZZ_NOTCH_A1_BYTE2 0x22c7
474#define DSM_DEBUZZ_NOTCH_A2_BYTE0 0x22c9
475#define DSM_DEBUZZ_NOTCH_A2_BYTE1 0x22ca
476#define DSM_DEBUZZ_NOTCH_A2_BYTE2 0x22cb
477#define DSM_THERMAL_BQ_B0_BYTE0 0x22cd
478#define DSM_THERMAL_BQ_B0_BYTE1 0x22ce
479#define DSM_THERMAL_BQ_B0_BYTE2 0x22cf
480#define DSM_THERMAL_BQ_B1_BYTE0 0x22d1
481#define DSM_THERMAL_BQ_B1_BYTE1 0x22d2
482#define DSM_THERMAL_BQ_B1_BYTE2 0x22d3
483#define DSM_THERMAL_BQ_B2_BYTE0 0x22d5
484#define DSM_THERMAL_BQ_B2_BYTE1 0x22d6
485#define DSM_THERMAL_BQ_B2_BYTE2 0x22d7
486#define DSM_THERMAL_BQ_A1_BYTE0 0x22d9
487#define DSM_THERMAL_BQ_A1_BYTE1 0x22da
488#define DSM_THERMAL_BQ_A1_BYTE2 0x22db
489#define DSM_THERMAL_BQ_A2_BYTE0 0x22dd
490#define DSM_THERMAL_BQ_A2_BYTE1 0x22de
491#define DSM_THERMAL_BQ_A2_BYTE2 0x22df
492#define DSM_WBDRC_FILT1_B0_BYTE0 0x22e1
493#define DSM_WBDRC_FILT1_B0_BYTE1 0x22e2
494#define DSM_WBDRC_FILT1_B0_BYTE2 0x22e3
495#define DSM_WBDRC_FILT1_B1_BYTE0 0x22e5
496#define DSM_WBDRC_FILT1_B1_BYTE1 0x22e6
497#define DSM_WBDRC_FILT1_B1_BYTE2 0x22e7
498#define DSM_WBDRC_FILT1_B2_BYTE0 0x22e9
499#define DSM_WBDRC_FILT1_B2_BYTE1 0x22ea
500#define DSM_WBDRC_FILT1_B2_BYTE2 0x22eb
501#define DSM_WBDRC_FILT1_A1_BYTE0 0x22ed
502#define DSM_WBDRC_FILT1_A1_BYTE1 0x22ee
503#define DSM_WBDRC_FILT1_A1_BYTE2 0x22ef
504#define DSM_WBDRC_FILT1_A2_BYTE0 0x22f1
505#define DSM_WBDRC_FILT1_A2_BYTE1 0x22f2
506#define DSM_WBDRC_FILT1_A2_BYTE2 0x22f3
507#define DSM_WBDRC_FILT2_B0_BYTE0 0x22f5
508#define DSM_WBDRC_FILT2_B0_BYTE1 0x22f6
509#define DSM_WBDRC_FILT2_B0_BYTE2 0x22f7
510#define DSM_WBDRC_FILT2_B1_BYTE0 0x22f9
511#define DSM_WBDRC_FILT2_B1_BYTE1 0x22fa
512#define DSM_WBDRC_FILT2_B1_BYTE2 0x22fb
513#define DSM_WBDRC_FILT2_B2_BYTE0 0x22fd
514#define DSM_WBDRC_FILT2_B2_BYTE1 0x22fe
515#define DSM_WBDRC_FILT2_B2_BYTE2 0x22ff
516#define DSM_WBDRC_FILT2_A1_BYTE0 0x2301
517#define DSM_WBDRC_FILT2_A1_BYTE1 0x2302
518#define DSM_WBDRC_FILT2_A1_BYTE2 0x2303
519#define DSM_WBDRC_FILT2_A2_BYTE0 0x2305
520#define DSM_WBDRC_FILT2_A2_BYTE1 0x2306
521#define DSM_WBDRC_FILT2_A2_BYTE2 0x2307
522#define DSM_PPR_RELEASE_TIME_BYTE0 0x2309
523#define DSM_PPR_RELEASE_TIME_BYTE1 0x230a
524#define DSM_PPR_RELEASE_TIME_BYTE2 0x230b
525#define DSM_PPR_ATTACK_TIME_BYTE0 0x230d
526#define DSM_PPR_ATTACK_TIME_BYTE1 0x230e
527#define DSM_PPR_ATTACK_TIME_BYTE2 0x230f
528#define DSM_DEBUZZER_RELEASE_TIME_BYTE0 0x2311
529#define DSM_DEBUZZER_RELEASE_TIME_BYTE1 0x2312
530#define DSM_DEBUZZER_RELEASE_TIME_BYTE2 0x2313
531#define DSM_DEBUZZER_ATTACK_TIME_BYTE0 0x2315
532#define DSM_DEBUZZER_ATTACK_TIME_BYTE1 0x2316
533#define DSM_DEBUZZER_ATTACK_TIME_BYTE2 0x2317
534
535#define DSMIG_WB_DRC_RELEASE_TIME_1 0x2380
536#define DSMIG_WB_DRC_RELEASE_TIME_2 0x2381
537#define DSMIG_WB_DRC_ATTACK_TIME_1 0x2382
538#define DSMIG_WB_DRC_ATTACK_TIME_2 0x2383
539#define DSMIG_WB_DRC_COMPRESSION_RATIO 0x2384
540#define DSMIG_WB_DRC_COMPRESSION_THRESHOLD 0x2385
541#define DSMIG_WB_DRC_MAKEUPGAIN 0x2386
542#define DSMIG_WB_DRC_NOISE_GATE_THRESHOLD 0x2387
543#define DSMIG_WBDRC_HPF_ENABLE 0x2388
544#define DSMIG_WB_DRC_TEST_SMOOTHER_OUT_EN 0x2389
545#define DSMIG_PPR_THRESHOLD 0x238b
546#define DSM_STEREO_BASS_CHANNEL_SELECT 0x238d
547#define DSM_TPROT_THRESHOLD_BYTE0 0x238e
548#define DSM_TPROT_THRESHOLD_BYTE1 0x238f
549#define DSM_TPROT_ROOM_TEMPERATURE_BYTE0 0x2390
550#define DSM_TPROT_ROOM_TEMPERATURE_BYTE1 0x2391
551#define DSM_TPROT_RECIP_RDC_ROOM_BYTE0 0x2392
552#define DSM_TPROT_RECIP_RDC_ROOM_BYTE1 0x2393
553#define DSM_TPROT_RECIP_RDC_ROOM_BYTE2 0x2394
554#define DSM_TPROT_RECIP_TCONST_BYTE0 0x2395
555#define DSM_TPROT_RECIP_TCONST_BYTE1 0x2396
556#define DSM_TPROT_RECIP_TCONST_BYTE2 0x2397
557#define DSM_THERMAL_ATTENUATION_SETTINGS 0x2398
558#define DSM_THERMAL_PILOT_TONE_ATTENUATION 0x2399
559#define DSM_TPROT_PG_TEMP_THRESH_BYTE0 0x239a
560#define DSM_TPROT_PG_TEMP_THRESH_BYTE1 0x239b
561
562#define THERMAL_RDC_RD_BACK_BYTE1 0x239c
563#define THERMAL_RDC_RD_BACK_BYTE0 0x239d
564#define THERMAL_COILTEMP_RD_BACK_BYTE1 0x239e
565#define THERMAL_COILTEMP_RD_BACK_BYTE0 0x239f
566
567#define DSMIG_DEBUZZER_THRESHOLD 0x23b5
568#define DSMIG_DEBUZZER_ALPHA_COEF_TEST_ONLY 0x23b6
569#define DSM_VOL_ENA 0x23b9
570#define DSM_VOL_CTRL 0x23ba
571
572#define DSMIG_EN 0x23e0
573#define MAX98390_R23E1_DSP_GLOBAL_EN 0x23e1
574
575#define DSM_THERMAL_GAIN 0x23f0
576#define DSM_PPR_GAIN 0x23f1
577#define DSM_DBZ_GAIN 0x23f2
578#define DSM_WBDRC_GAIN 0x23f3
579
580#define MAX98390_R23FF_GLOBAL_EN 0x23FF
581#define MAX98390_R24FF_REV_ID 0x24FF
582
583/* MAX98390_R2021_PCM_RX_SRC_1 */
584#define MAX98390_PCM_RX_CH_SRC_SHIFT (0)
585#define MAX98390_PCM_RX_CH_SRC_BASS_SHIFT (4)
586
587/* MAX98390_R2022_PCM_TX_SRC_1 */
588#define MAX98390_PCM_TX_CH_SRC_A_V_SHIFT (0)
589#define MAX98390_PCM_TX_CH_SRC_A_I_SHIFT (4)
590
591/* MAX98390_R2024_PCM_DATA_FMT_CFG */
592#define MAX98390_PCM_MODE_CFG_FORMAT_MASK (0x7 << 3)
593#define MAX98390_PCM_MODE_CFG_FORMAT_SHIFT (3)
594#define MAX98390_PCM_TX_CH_INTERLEAVE_MASK (0x1 << 2)
595#define MAX98390_PCM_FORMAT_I2S (0x0 << 0)
596#define MAX98390_PCM_FORMAT_LJ (0x1 << 0)
597#define MAX98390_PCM_FORMAT_TDM_MODE0 (0x3 << 0)
598#define MAX98390_PCM_FORMAT_TDM_MODE1 (0x4 << 0)
599#define MAX98390_PCM_FORMAT_TDM_MODE2 (0x5 << 0)
600#define MAX98390_PCM_MODE_CFG_CHANSZ_MASK (0x3 << 6)
601#define MAX98390_PCM_MODE_CFG_CHANSZ_16 (0x1 << 6)
602#define MAX98390_PCM_MODE_CFG_CHANSZ_24 (0x2 << 6)
603#define MAX98390_PCM_MODE_CFG_CHANSZ_32 (0x3 << 6)
604
605/* MAX98390_R2039_AMP_DSP_CFG */
606#define MAX98390_AMP_DSP_CFG_RMP_UP_SHIFT (4)
607#define MAX98390_AMP_DSP_CFG_RMP_DN_SHIFT (5)
608
609/* MAX98390_R203A_AMP_EN */
610#define MAX98390_R203A_AMP_EN_SHIFT (0)
611
612/* MAX98390_PCM_MASTER_MODE */
613#define MAX98390_PCM_MASTER_MODE_MASK (0x3 << 0)
614#define MAX98390_PCM_MASTER_MODE_SLAVE (0x0 << 0)
615#define MAX98390_PCM_MASTER_MODE_MASTER (0x3 << 0)
616
617#define MAX98390_PCM_MASTER_MODE_MCLK_MASK (0xF << 2)
618#define MAX98390_PCM_MASTER_MODE_MCLK_RATE_SHIFT (2)
619
620/* PCM_CLK_SETUP */
621#define MAX98390_PCM_MODE_CFG_PCM_BCLKEDGE (0x1 << 2)
622#define MAX98390_PCM_CLK_SETUP_BSEL_MASK (0xF << 0)
623
624/* PCM_SR_SETUP */
625#define MAX98390_PCM_SR_SET1_SR_MASK (0xF << 0)
626#define MAX98390_PCM_SR_SET1_SR_8000 (0x0 << 0)
627#define MAX98390_PCM_SR_SET1_SR_11025 (0x1 << 0)
628#define MAX98390_PCM_SR_SET1_SR_12000 (0x2 << 0)
629#define MAX98390_PCM_SR_SET1_SR_16000 (0x3 << 0)
630#define MAX98390_PCM_SR_SET1_SR_22050 (0x4 << 0)
631#define MAX98390_PCM_SR_SET1_SR_24000 (0x5 << 0)
632#define MAX98390_PCM_SR_SET1_SR_32000 (0x6 << 0)
633#define MAX98390_PCM_SR_SET1_SR_44100 (0x7 << 0)
634#define MAX98390_PCM_SR_SET1_SR_48000 (0x8 << 0)
635
636/* PCM_TO_SPK_MONO_MIX_1 */
637#define MAX98390_PCM_TO_SPK_MONOMIX_CFG_MASK (0x3 << 6)
638#define MAX98390_PCM_TO_SPK_MONOMIX_CFG_SHIFT (6)
639#define MAX98390_PCM_TO_SPK_CH0_SRC_MASK (0xF << 0)
640#define MAX98390_PCM_TO_SPK_CH1_SRC_MASK (0xF << 4)
641
642/* MAX98390_BOOST_CTRL3 */
643#define MAX98390_BOOST_CLK_PHASE_CFG_SHIFT (2)
644
645/* SOFT_RESET */
646#define MAX98390_SOFT_RESET_MASK (0x1 << 0)
647
648#define MAX98390_GLOBAL_EN_MASK (0x1 << 0)
649#define MAX98390_AMP_EN_MASK (0x1 << 0)
650
651/* DSM register offset */
652#define MAX98390_DSM_PAYLOAD_OFFSET 16
653#define MAX98390_DSM_PARAM_MAX_SIZE 1024
654#define MAX98390_DSM_PARAM_MIN_SIZE 670
655
656struct max98390_priv {
657 struct regmap *regmap;
658 unsigned int sysclk;
659 unsigned int provider;
660 unsigned int tdm_mode;
661 unsigned int v_l_slot;
662 unsigned int i_l_slot;
663 unsigned int ref_rdc_value;
664 unsigned int ambient_temp_value;
665 const char *dsm_param_name;
666};
667#endif
668

source code of linux/sound/soc/codecs/max98390.h