hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
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
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Codec driver for ST STA32x 2.1-channel high-efficiency digital audio system
 *
 * Copyright: 2011 Raumfeld GmbH
 * Author: Johannes Stezenbach <js@sig21.net>
 *
 * based on code from:
 *    Wolfson Microelectronics PLC.
 *    Mark Brown <broonie@opensource.wolfsonmicro.com>
 */
#ifndef _ASOC_STA_32X_H
#define _ASOC_STA_32X_H
 
/* STA326 register addresses */
 
#define STA32X_REGISTER_COUNT    0x2d
#define STA32X_COEF_COUNT 62
 
#define STA32X_CONFA    0x00
#define STA32X_CONFB    0x01
#define STA32X_CONFC    0x02
#define STA32X_CONFD    0x03
#define STA32X_CONFE    0x04
#define STA32X_CONFF    0x05
#define STA32X_MMUTE    0x06
#define STA32X_MVOL     0x07
#define STA32X_C1VOL    0x08
#define STA32X_C2VOL    0x09
#define STA32X_C3VOL    0x0a
#define STA32X_AUTO1    0x0b
#define STA32X_AUTO2    0x0c
#define STA32X_AUTO3    0x0d
#define STA32X_C1CFG    0x0e
#define STA32X_C2CFG    0x0f
#define STA32X_C3CFG    0x10
#define STA32X_TONE     0x11
#define STA32X_L1AR     0x12
#define STA32X_L1ATRT   0x13
#define STA32X_L2AR     0x14
#define STA32X_L2ATRT   0x15
#define STA32X_CFADDR2  0x16
#define STA32X_B1CF1    0x17
#define STA32X_B1CF2    0x18
#define STA32X_B1CF3    0x19
#define STA32X_B2CF1    0x1a
#define STA32X_B2CF2    0x1b
#define STA32X_B2CF3    0x1c
#define STA32X_A1CF1    0x1d
#define STA32X_A1CF2    0x1e
#define STA32X_A1CF3    0x1f
#define STA32X_A2CF1    0x20
#define STA32X_A2CF2    0x21
#define STA32X_A2CF3    0x22
#define STA32X_B0CF1    0x23
#define STA32X_B0CF2    0x24
#define STA32X_B0CF3    0x25
#define STA32X_CFUD     0x26
#define STA32X_MPCC1    0x27
#define STA32X_MPCC2    0x28
/* Reserved 0x29 */
/* Reserved 0x2a */
#define STA32X_Reserved 0x2a
#define STA32X_FDRC1    0x2b
#define STA32X_FDRC2    0x2c
/* Reserved 0x2d */
 
 
/* STA326 register field definitions */
 
/* 0x00 CONFA */
#define STA32X_CONFA_MCS_MASK    0x03
#define STA32X_CONFA_MCS_SHIFT    0
#define STA32X_CONFA_IR_MASK    0x18
#define STA32X_CONFA_IR_SHIFT    3
#define STA32X_CONFA_TWRB    0x20
#define STA32X_CONFA_TWAB    0x40
#define STA32X_CONFA_FDRB    0x80
 
/* 0x01 CONFB */
#define STA32X_CONFB_SAI_MASK    0x0f
#define STA32X_CONFB_SAI_SHIFT    0
#define STA32X_CONFB_SAIFB    0x10
#define STA32X_CONFB_DSCKE    0x20
#define STA32X_CONFB_C1IM    0x40
#define STA32X_CONFB_C2IM    0x80
 
/* 0x02 CONFC */
#define STA32X_CONFC_OM_MASK    0x03
#define STA32X_CONFC_OM_SHIFT    0
#define STA32X_CONFC_CSZ_MASK    0x7c
#define STA32X_CONFC_CSZ_SHIFT    2
 
/* 0x03 CONFD */
#define STA32X_CONFD_HPB    0x01
#define STA32X_CONFD_HPB_SHIFT    0
#define STA32X_CONFD_DEMP    0x02
#define STA32X_CONFD_DEMP_SHIFT    1
#define STA32X_CONFD_DSPB    0x04
#define STA32X_CONFD_DSPB_SHIFT    2
#define STA32X_CONFD_PSL    0x08
#define STA32X_CONFD_PSL_SHIFT    3
#define STA32X_CONFD_BQL    0x10
#define STA32X_CONFD_BQL_SHIFT    4
#define STA32X_CONFD_DRC    0x20
#define STA32X_CONFD_DRC_SHIFT    5
#define STA32X_CONFD_ZDE    0x40
#define STA32X_CONFD_ZDE_SHIFT    6
#define STA32X_CONFD_MME    0x80
#define STA32X_CONFD_MME_SHIFT    7
 
/* 0x04 CONFE */
#define STA32X_CONFE_MPCV    0x01
#define STA32X_CONFE_MPCV_SHIFT    0
#define STA32X_CONFE_MPC    0x02
#define STA32X_CONFE_MPC_SHIFT    1
#define STA32X_CONFE_AME    0x08
#define STA32X_CONFE_AME_SHIFT    3
#define STA32X_CONFE_PWMS    0x10
#define STA32X_CONFE_PWMS_SHIFT    4
#define STA32X_CONFE_ZCE    0x40
#define STA32X_CONFE_ZCE_SHIFT    6
#define STA32X_CONFE_SVE    0x80
#define STA32X_CONFE_SVE_SHIFT    7
 
/* 0x05 CONFF */
#define STA32X_CONFF_OCFG_MASK    0x03
#define STA32X_CONFF_OCFG_SHIFT    0
#define STA32X_CONFF_IDE    0x04
#define STA32X_CONFF_IDE_SHIFT    2
#define STA32X_CONFF_BCLE    0x08
#define STA32X_CONFF_ECLE    0x20
#define STA32X_CONFF_PWDN    0x40
#define STA32X_CONFF_EAPD    0x80
 
/* 0x06 MMUTE */
#define STA32X_MMUTE_MMUTE    0x01
 
/* 0x0b AUTO1 */
#define STA32X_AUTO1_AMEQ_MASK    0x03
#define STA32X_AUTO1_AMEQ_SHIFT    0
#define STA32X_AUTO1_AMV_MASK    0xc0
#define STA32X_AUTO1_AMV_SHIFT    2
#define STA32X_AUTO1_AMGC_MASK    0x30
#define STA32X_AUTO1_AMGC_SHIFT    4
#define STA32X_AUTO1_AMPS    0x80
 
/* 0x0c AUTO2 */
#define STA32X_AUTO2_AMAME    0x01
#define STA32X_AUTO2_AMAM_MASK    0x0e
#define STA32X_AUTO2_AMAM_SHIFT    1
#define STA32X_AUTO2_XO_MASK    0xf0
#define STA32X_AUTO2_XO_SHIFT    4
 
/* 0x0d AUTO3 */
#define STA32X_AUTO3_PEQ_MASK    0x1f
#define STA32X_AUTO3_PEQ_SHIFT    0
 
/* 0x0e 0x0f 0x10 CxCFG */
#define STA32X_CxCFG_TCB    0x01    /* only C1 and C2 */
#define STA32X_CxCFG_TCB_SHIFT    0
#define STA32X_CxCFG_EQBP    0x02    /* only C1 and C2 */
#define STA32X_CxCFG_EQBP_SHIFT    1
#define STA32X_CxCFG_VBP    0x03
#define STA32X_CxCFG_VBP_SHIFT    2
#define STA32X_CxCFG_BO        0x04
#define STA32X_CxCFG_LS_MASK    0x30
#define STA32X_CxCFG_LS_SHIFT    4
#define STA32X_CxCFG_OM_MASK    0xc0
#define STA32X_CxCFG_OM_SHIFT    6
 
/* 0x11 TONE */
#define STA32X_TONE_BTC_SHIFT    0
#define STA32X_TONE_TTC_SHIFT    4
 
/* 0x12 0x13 0x14 0x15 limiter attack/release */
#define STA32X_LxA_SHIFT    0
#define STA32X_LxR_SHIFT    4
 
/* 0x26 CFUD */
#define STA32X_CFUD_W1        0x01
#define STA32X_CFUD_WA        0x02
#define STA32X_CFUD_R1        0x04
#define STA32X_CFUD_RA        0x08
 
 
/* biquad filter coefficient table offsets */
#define STA32X_C1_BQ_BASE    0
#define STA32X_C2_BQ_BASE    20
#define STA32X_CH_BQ_NUM    4
#define STA32X_BQ_NUM_COEF    5
#define STA32X_XO_HP_BQ_BASE    40
#define STA32X_XO_LP_BQ_BASE    45
#define STA32X_C1_PRESCALE    50
#define STA32X_C2_PRESCALE    51
#define STA32X_C1_POSTSCALE    52
#define STA32X_C2_POSTSCALE    53
#define STA32X_C3_POSTSCALE    54
#define STA32X_TW_POSTSCALE    55
#define STA32X_C1_MIX1        56
#define STA32X_C1_MIX2        57
#define STA32X_C2_MIX1        58
#define STA32X_C2_MIX2        59
#define STA32X_C3_MIX1        60
#define STA32X_C3_MIX2        61
 
#endif /* _ASOC_STA_32X_H */