xref: /linux/sound/soc/codecs/sta350.h (revision 2439ea1f0f8f4cc98dfae0d1cd5ba88f6c3ee9ad)
1*2439ea1fSSven Brandau /*
2*2439ea1fSSven Brandau  * Codec driver for ST STA350 2.1-channel high-efficiency digital audio system
3*2439ea1fSSven Brandau  *
4*2439ea1fSSven Brandau  * Copyright: 2011 Raumfeld GmbH
5*2439ea1fSSven Brandau  * Author: Sven Brandau <info@brandau.biz>
6*2439ea1fSSven Brandau  *
7*2439ea1fSSven Brandau  * based on code from:
8*2439ea1fSSven Brandau  *      Raumfeld GmbH
9*2439ea1fSSven Brandau  *        Johannes Stezenbach <js@sig21.net>
10*2439ea1fSSven Brandau  *	Wolfson Microelectronics PLC.
11*2439ea1fSSven Brandau  *	  Mark Brown <broonie@opensource.wolfsonmicro.com>
12*2439ea1fSSven Brandau  *
13*2439ea1fSSven Brandau  * This program is free software; you can redistribute  it and/or modify it
14*2439ea1fSSven Brandau  * under  the terms of  the GNU General  Public License as published by the
15*2439ea1fSSven Brandau  * Free Software Foundation;  either version 2 of the  License, or (at your
16*2439ea1fSSven Brandau  * option) any later version.
17*2439ea1fSSven Brandau  */
18*2439ea1fSSven Brandau #ifndef _ASOC_STA_350_H
19*2439ea1fSSven Brandau #define _ASOC_STA_350_H
20*2439ea1fSSven Brandau 
21*2439ea1fSSven Brandau /* STA50 register addresses */
22*2439ea1fSSven Brandau 
23*2439ea1fSSven Brandau #define STA350_REGISTER_COUNT	0x4D
24*2439ea1fSSven Brandau #define STA350_COEF_COUNT 62
25*2439ea1fSSven Brandau 
26*2439ea1fSSven Brandau #define STA350_CONFA	0x00
27*2439ea1fSSven Brandau #define STA350_CONFB    0x01
28*2439ea1fSSven Brandau #define STA350_CONFC    0x02
29*2439ea1fSSven Brandau #define STA350_CONFD    0x03
30*2439ea1fSSven Brandau #define STA350_CONFE    0x04
31*2439ea1fSSven Brandau #define STA350_CONFF    0x05
32*2439ea1fSSven Brandau #define STA350_MMUTE    0x06
33*2439ea1fSSven Brandau #define STA350_MVOL     0x07
34*2439ea1fSSven Brandau #define STA350_C1VOL    0x08
35*2439ea1fSSven Brandau #define STA350_C2VOL    0x09
36*2439ea1fSSven Brandau #define STA350_C3VOL    0x0a
37*2439ea1fSSven Brandau #define STA350_AUTO1    0x0b
38*2439ea1fSSven Brandau #define STA350_AUTO2    0x0c
39*2439ea1fSSven Brandau #define STA350_AUTO3    0x0d
40*2439ea1fSSven Brandau #define STA350_C1CFG    0x0e
41*2439ea1fSSven Brandau #define STA350_C2CFG    0x0f
42*2439ea1fSSven Brandau #define STA350_C3CFG    0x10
43*2439ea1fSSven Brandau #define STA350_TONE     0x11
44*2439ea1fSSven Brandau #define STA350_L1AR     0x12
45*2439ea1fSSven Brandau #define STA350_L1ATRT   0x13
46*2439ea1fSSven Brandau #define STA350_L2AR     0x14
47*2439ea1fSSven Brandau #define STA350_L2ATRT   0x15
48*2439ea1fSSven Brandau #define STA350_CFADDR2  0x16
49*2439ea1fSSven Brandau #define STA350_B1CF1    0x17
50*2439ea1fSSven Brandau #define STA350_B1CF2    0x18
51*2439ea1fSSven Brandau #define STA350_B1CF3    0x19
52*2439ea1fSSven Brandau #define STA350_B2CF1    0x1a
53*2439ea1fSSven Brandau #define STA350_B2CF2    0x1b
54*2439ea1fSSven Brandau #define STA350_B2CF3    0x1c
55*2439ea1fSSven Brandau #define STA350_A1CF1    0x1d
56*2439ea1fSSven Brandau #define STA350_A1CF2    0x1e
57*2439ea1fSSven Brandau #define STA350_A1CF3    0x1f
58*2439ea1fSSven Brandau #define STA350_A2CF1    0x20
59*2439ea1fSSven Brandau #define STA350_A2CF2    0x21
60*2439ea1fSSven Brandau #define STA350_A2CF3    0x22
61*2439ea1fSSven Brandau #define STA350_B0CF1    0x23
62*2439ea1fSSven Brandau #define STA350_B0CF2    0x24
63*2439ea1fSSven Brandau #define STA350_B0CF3    0x25
64*2439ea1fSSven Brandau #define STA350_CFUD     0x26
65*2439ea1fSSven Brandau #define STA350_MPCC1    0x27
66*2439ea1fSSven Brandau #define STA350_MPCC2    0x28
67*2439ea1fSSven Brandau #define STA350_DCC1     0x29
68*2439ea1fSSven Brandau #define STA350_DCC2     0x2a
69*2439ea1fSSven Brandau #define STA350_FDRC1    0x2b
70*2439ea1fSSven Brandau #define STA350_FDRC2    0x2c
71*2439ea1fSSven Brandau #define STA350_STATUS   0x2d
72*2439ea1fSSven Brandau /* reserved: 0x2d - 0x30 */
73*2439ea1fSSven Brandau #define STA350_EQCFG    0x31
74*2439ea1fSSven Brandau #define STA350_EATH1    0x32
75*2439ea1fSSven Brandau #define STA350_ERTH1    0x33
76*2439ea1fSSven Brandau #define STA350_EATH2    0x34
77*2439ea1fSSven Brandau #define STA350_ERTH2    0x35
78*2439ea1fSSven Brandau #define STA350_CONFX    0x36
79*2439ea1fSSven Brandau #define STA350_SVCA     0x37
80*2439ea1fSSven Brandau #define STA350_SVCB     0x38
81*2439ea1fSSven Brandau #define STA350_RMS0A    0x39
82*2439ea1fSSven Brandau #define STA350_RMS0B    0x3a
83*2439ea1fSSven Brandau #define STA350_RMS0C    0x3b
84*2439ea1fSSven Brandau #define STA350_RMS1A    0x3c
85*2439ea1fSSven Brandau #define STA350_RMS1B    0x3d
86*2439ea1fSSven Brandau #define STA350_RMS1C    0x3e
87*2439ea1fSSven Brandau #define STA350_EVOLRES  0x3f
88*2439ea1fSSven Brandau /* reserved: 0x40 - 0x47 */
89*2439ea1fSSven Brandau #define STA350_NSHAPE   0x48
90*2439ea1fSSven Brandau #define STA350_CTXB4B1  0x49
91*2439ea1fSSven Brandau #define STA350_CTXB7B5  0x4a
92*2439ea1fSSven Brandau #define STA350_MISC1    0x4b
93*2439ea1fSSven Brandau #define STA350_MISC2    0x4c
94*2439ea1fSSven Brandau 
95*2439ea1fSSven Brandau /* 0x00 CONFA */
96*2439ea1fSSven Brandau #define STA350_CONFA_MCS_MASK	0x03
97*2439ea1fSSven Brandau #define STA350_CONFA_MCS_SHIFT	0
98*2439ea1fSSven Brandau #define STA350_CONFA_IR_MASK	0x18
99*2439ea1fSSven Brandau #define STA350_CONFA_IR_SHIFT	3
100*2439ea1fSSven Brandau #define STA350_CONFA_TWRB	BIT(5)
101*2439ea1fSSven Brandau #define STA350_CONFA_TWAB	BIT(6)
102*2439ea1fSSven Brandau #define STA350_CONFA_FDRB	BIT(7)
103*2439ea1fSSven Brandau 
104*2439ea1fSSven Brandau /* 0x01 CONFB */
105*2439ea1fSSven Brandau #define STA350_CONFB_SAI_MASK	0x0f
106*2439ea1fSSven Brandau #define STA350_CONFB_SAI_SHIFT	0
107*2439ea1fSSven Brandau #define STA350_CONFB_SAIFB	BIT(4)
108*2439ea1fSSven Brandau #define STA350_CONFB_DSCKE	BIT(5)
109*2439ea1fSSven Brandau #define STA350_CONFB_C1IM	BIT(6)
110*2439ea1fSSven Brandau #define STA350_CONFB_C2IM	BIT(7)
111*2439ea1fSSven Brandau 
112*2439ea1fSSven Brandau /* 0x02 CONFC */
113*2439ea1fSSven Brandau #define STA350_CONFC_OM_MASK	0x03
114*2439ea1fSSven Brandau #define STA350_CONFC_OM_SHIFT	0
115*2439ea1fSSven Brandau #define STA350_CONFC_CSZ_MASK	0x3c
116*2439ea1fSSven Brandau #define STA350_CONFC_CSZ_SHIFT	2
117*2439ea1fSSven Brandau #define STA350_CONFC_OCRB	BIT(7)
118*2439ea1fSSven Brandau 
119*2439ea1fSSven Brandau /* 0x03 CONFD */
120*2439ea1fSSven Brandau #define STA350_CONFD_HPB_SHIFT	0
121*2439ea1fSSven Brandau #define STA350_CONFD_DEMP_SHIFT	1
122*2439ea1fSSven Brandau #define STA350_CONFD_DSPB_SHIFT	2
123*2439ea1fSSven Brandau #define STA350_CONFD_PSL_SHIFT	3
124*2439ea1fSSven Brandau #define STA350_CONFD_BQL_SHIFT	4
125*2439ea1fSSven Brandau #define STA350_CONFD_DRC_SHIFT	5
126*2439ea1fSSven Brandau #define STA350_CONFD_ZDE_SHIFT	6
127*2439ea1fSSven Brandau #define STA350_CONFD_SME_SHIFT	7
128*2439ea1fSSven Brandau 
129*2439ea1fSSven Brandau /* 0x04 CONFE */
130*2439ea1fSSven Brandau #define STA350_CONFE_MPCV	BIT(0)
131*2439ea1fSSven Brandau #define STA350_CONFE_MPCV_SHIFT	0
132*2439ea1fSSven Brandau #define STA350_CONFE_MPC	BIT(1)
133*2439ea1fSSven Brandau #define STA350_CONFE_MPC_SHIFT	1
134*2439ea1fSSven Brandau #define STA350_CONFE_NSBW	BIT(2)
135*2439ea1fSSven Brandau #define STA350_CONFE_NSBW_SHIFT	2
136*2439ea1fSSven Brandau #define STA350_CONFE_AME	BIT(3)
137*2439ea1fSSven Brandau #define STA350_CONFE_AME_SHIFT	3
138*2439ea1fSSven Brandau #define STA350_CONFE_PWMS	BIT(4)
139*2439ea1fSSven Brandau #define STA350_CONFE_PWMS_SHIFT	4
140*2439ea1fSSven Brandau #define STA350_CONFE_DCCV	BIT(5)
141*2439ea1fSSven Brandau #define STA350_CONFE_DCCV_SHIFT	5
142*2439ea1fSSven Brandau #define STA350_CONFE_ZCE	BIT(6)
143*2439ea1fSSven Brandau #define STA350_CONFE_ZCE_SHIFT	6
144*2439ea1fSSven Brandau #define STA350_CONFE_SVE	BIT(7)
145*2439ea1fSSven Brandau #define STA350_CONFE_SVE_SHIFT	7
146*2439ea1fSSven Brandau 
147*2439ea1fSSven Brandau /* 0x05 CONFF */
148*2439ea1fSSven Brandau #define STA350_CONFF_OCFG_MASK	0x03
149*2439ea1fSSven Brandau #define STA350_CONFF_OCFG_SHIFT	0
150*2439ea1fSSven Brandau #define STA350_CONFF_IDE	BIT(2)
151*2439ea1fSSven Brandau #define STA350_CONFF_BCLE	BIT(3)
152*2439ea1fSSven Brandau #define STA350_CONFF_LDTE	BIT(4)
153*2439ea1fSSven Brandau #define STA350_CONFF_ECLE	BIT(5)
154*2439ea1fSSven Brandau #define STA350_CONFF_PWDN	BIT(6)
155*2439ea1fSSven Brandau #define STA350_CONFF_EAPD	BIT(7)
156*2439ea1fSSven Brandau 
157*2439ea1fSSven Brandau /* 0x06 MMUTE */
158*2439ea1fSSven Brandau #define STA350_MMUTE_MMUTE		0x01
159*2439ea1fSSven Brandau #define STA350_MMUTE_MMUTE_SHIFT	0
160*2439ea1fSSven Brandau #define STA350_MMUTE_C1M		0x02
161*2439ea1fSSven Brandau #define STA350_MMUTE_C1M_SHIFT		1
162*2439ea1fSSven Brandau #define STA350_MMUTE_C2M		0x04
163*2439ea1fSSven Brandau #define STA350_MMUTE_C2M_SHIFT		2
164*2439ea1fSSven Brandau #define STA350_MMUTE_C3M		0x08
165*2439ea1fSSven Brandau #define STA350_MMUTE_C3M_SHIFT		3
166*2439ea1fSSven Brandau #define STA350_MMUTE_LOC_MASK		0xC0
167*2439ea1fSSven Brandau #define STA350_MMUTE_LOC_SHIFT		6
168*2439ea1fSSven Brandau 
169*2439ea1fSSven Brandau /* 0x0b AUTO1 */
170*2439ea1fSSven Brandau #define STA350_AUTO1_AMGC_MASK	0x30
171*2439ea1fSSven Brandau #define STA350_AUTO1_AMGC_SHIFT	4
172*2439ea1fSSven Brandau 
173*2439ea1fSSven Brandau /* 0x0c AUTO2 */
174*2439ea1fSSven Brandau #define STA350_AUTO2_AMAME	0x01
175*2439ea1fSSven Brandau #define STA350_AUTO2_AMAM_MASK	0x0e
176*2439ea1fSSven Brandau #define STA350_AUTO2_AMAM_SHIFT	1
177*2439ea1fSSven Brandau #define STA350_AUTO2_XO_MASK	0xf0
178*2439ea1fSSven Brandau #define STA350_AUTO2_XO_SHIFT	4
179*2439ea1fSSven Brandau 
180*2439ea1fSSven Brandau /* 0x0d AUTO3 */
181*2439ea1fSSven Brandau #define STA350_AUTO3_PEQ_MASK	0x1f
182*2439ea1fSSven Brandau #define STA350_AUTO3_PEQ_SHIFT	0
183*2439ea1fSSven Brandau 
184*2439ea1fSSven Brandau /* 0x0e 0x0f 0x10 CxCFG */
185*2439ea1fSSven Brandau #define STA350_CxCFG_TCB_SHIFT	0
186*2439ea1fSSven Brandau #define STA350_CxCFG_EQBP_SHIFT	1
187*2439ea1fSSven Brandau #define STA350_CxCFG_VBP_SHIFT	2
188*2439ea1fSSven Brandau #define STA350_CxCFG_BO_SHIFT	3
189*2439ea1fSSven Brandau #define STA350_CxCFG_LS_SHIFT	4
190*2439ea1fSSven Brandau #define STA350_CxCFG_OM_MASK	0xc0
191*2439ea1fSSven Brandau #define STA350_CxCFG_OM_SHIFT	6
192*2439ea1fSSven Brandau 
193*2439ea1fSSven Brandau /* 0x11 TONE */
194*2439ea1fSSven Brandau #define STA350_TONE_BTC_SHIFT	0
195*2439ea1fSSven Brandau #define STA350_TONE_TTC_SHIFT	4
196*2439ea1fSSven Brandau 
197*2439ea1fSSven Brandau /* 0x12 0x13 0x14 0x15 limiter attack/release */
198*2439ea1fSSven Brandau #define STA350_LxA_SHIFT	0
199*2439ea1fSSven Brandau #define STA350_LxR_SHIFT	4
200*2439ea1fSSven Brandau 
201*2439ea1fSSven Brandau /* 0x26 CFUD */
202*2439ea1fSSven Brandau #define STA350_CFUD_W1		0x01
203*2439ea1fSSven Brandau #define STA350_CFUD_WA		0x02
204*2439ea1fSSven Brandau #define STA350_CFUD_R1		0x04
205*2439ea1fSSven Brandau #define STA350_CFUD_RA		0x08
206*2439ea1fSSven Brandau 
207*2439ea1fSSven Brandau 
208*2439ea1fSSven Brandau /* biquad filter coefficient table offsets */
209*2439ea1fSSven Brandau #define STA350_C1_BQ_BASE	0
210*2439ea1fSSven Brandau #define STA350_C2_BQ_BASE	20
211*2439ea1fSSven Brandau #define STA350_CH_BQ_NUM	4
212*2439ea1fSSven Brandau #define STA350_BQ_NUM_COEF	5
213*2439ea1fSSven Brandau #define STA350_XO_HP_BQ_BASE	40
214*2439ea1fSSven Brandau #define STA350_XO_LP_BQ_BASE	45
215*2439ea1fSSven Brandau #define STA350_C1_PRESCALE	50
216*2439ea1fSSven Brandau #define STA350_C2_PRESCALE	51
217*2439ea1fSSven Brandau #define STA350_C1_POSTSCALE	52
218*2439ea1fSSven Brandau #define STA350_C2_POSTSCALE	53
219*2439ea1fSSven Brandau #define STA350_C3_POSTSCALE	54
220*2439ea1fSSven Brandau #define STA350_TW_POSTSCALE	55
221*2439ea1fSSven Brandau #define STA350_C1_MIX1		56
222*2439ea1fSSven Brandau #define STA350_C1_MIX2		57
223*2439ea1fSSven Brandau #define STA350_C2_MIX1		58
224*2439ea1fSSven Brandau #define STA350_C2_MIX2		59
225*2439ea1fSSven Brandau #define STA350_C3_MIX1		60
226*2439ea1fSSven Brandau #define STA350_C3_MIX2		61
227*2439ea1fSSven Brandau 
228*2439ea1fSSven Brandau #endif /* _ASOC_STA_350_H */
229