ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / sound / oss / dmasound / tas3004_tables.c
1 #include "tas3004.h"
2 #include "tas_eq_prefs.h"
3
4 static struct tas_drce_t eqp_17_1_0_drce={
5     .enable     = 1,
6     .above      = { .val = 3.0 * (1<<8), .expand = 0 },
7     .below      = { .val = 1.0 * (1<<8), .expand = 0 },
8     .threshold  = -19.12  * (1<<8),
9     .energy     = 2.4     * (1<<12),
10     .attack     = 0.013   * (1<<12),
11     .decay      = 0.212   * (1<<12),
12 };
13
14 static struct tas_biquad_ctrl_t eqp_17_1_0_biquads[]={
15   { .channel = 0, .filter = 0, .data = { .coeff = { 0x0fd0d4, 0xe05e56, 0x0fd0d4, 0xe05ee1, 0x0fa234 } } },
16   { .channel = 0, .filter = 1, .data = { .coeff = { 0x0910d7, 0x088e1a, 0x030651, 0x01dcb1, 0x02c892 } } },
17   { .channel = 0, .filter = 2, .data = { .coeff = { 0x0ff895, 0xe0970b, 0x0f7f00, 0xe0970b, 0x0f7795 } } },
18   { .channel = 0, .filter = 3, .data = { .coeff = { 0x0fd1c4, 0xe1ac22, 0x0ec8cf, 0xe1ac22, 0x0e9a94 } } },
19   { .channel = 0, .filter = 4, .data = { .coeff = { 0x0f7c1c, 0xe3cc03, 0x0df786, 0xe3cc03, 0x0d73a2 } } },
20   { .channel = 0, .filter = 5, .data = { .coeff = { 0x11fb92, 0xf5a1a0, 0x073cd2, 0xf5a1a0, 0x093865 } } },
21   { .channel = 0, .filter = 6, .data = { .coeff = { 0x0e17a9, 0x068b6c, 0x08a0e5, 0x068b6c, 0x06b88e } } },
22
23   { .channel = 1, .filter = 0, .data = { .coeff = { 0x0fd0d4, 0xe05e56, 0x0fd0d4, 0xe05ee1, 0x0fa234 } } },
24   { .channel = 1, .filter = 1, .data = { .coeff = { 0x0910d7, 0x088e1a, 0x030651, 0x01dcb1, 0x02c892 } } },
25   { .channel = 1, .filter = 2, .data = { .coeff = { 0x0ff895, 0xe0970b, 0x0f7f00, 0xe0970b, 0x0f7795 } } },
26   { .channel = 1, .filter = 3, .data = { .coeff = { 0x0fd1c4, 0xe1ac22, 0x0ec8cf, 0xe1ac22, 0x0e9a94 } } },
27   { .channel = 1, .filter = 4, .data = { .coeff = { 0x0f7c1c, 0xe3cc03, 0x0df786, 0xe3cc03, 0x0d73a2 } } },
28   { .channel = 1, .filter = 5, .data = { .coeff = { 0x11fb92, 0xf5a1a0, 0x073cd2, 0xf5a1a0, 0x093865 } } },
29   { .channel = 1, .filter = 6, .data = { .coeff = { 0x0e17a9, 0x068b6c, 0x08a0e5, 0x068b6c, 0x06b88e } } }
30 };
31
32 static struct tas_eq_pref_t eqp_17_1_0 = {
33   .sample_rate   = 44100,
34   .device_id     = 0x17,
35   .output_id     = TAS_OUTPUT_INTERNAL_SPKR,
36   .speaker_id    = 0x00,
37
38   .drce          = &eqp_17_1_0_drce,
39
40   .filter_count  = 14,
41   .biquads       = eqp_17_1_0_biquads
42 };
43
44 /* ======================================================================== */
45
46 static struct tas_drce_t eqp_18_1_0_drce={
47   .enable     = 1,
48   .above      = { .val = 3.0 * (1<<8), .expand = 0 },
49   .below      = { .val = 1.0 * (1<<8), .expand = 0 },
50   .threshold  = -13.14  * (1<<8),
51   .energy     = 2.4     * (1<<12),
52   .attack     = 0.013   * (1<<12),
53   .decay      = 0.212   * (1<<12),
54 };
55
56 static struct tas_biquad_ctrl_t eqp_18_1_0_biquads[]={
57   { .channel = 0, .filter = 0, .data = { .coeff = { 0x0f5514, 0xe155d7, 0x0f5514, 0xe15cfa, 0x0eb14b } } },
58   { .channel = 0, .filter = 1, .data = { .coeff = { 0x06ec33, 0x02abe3, 0x015eef, 0xf764d9, 0x03922d } } },
59   { .channel = 0, .filter = 2, .data = { .coeff = { 0x0ef5f2, 0xe67d1f, 0x0bcf37, 0xe67d1f, 0x0ac529 } } },
60   { .channel = 0, .filter = 3, .data = { .coeff = { 0x0db050, 0xe5be4d, 0x0d0c78, 0xe5be4d, 0x0abcc8 } } },
61   { .channel = 0, .filter = 4, .data = { .coeff = { 0x0f1298, 0xe64ec6, 0x0cc03e, 0xe64ec6, 0x0bd2d7 } } },
62   { .channel = 0, .filter = 5, .data = { .coeff = { 0x0c641a, 0x06537a, 0x08d155, 0x06537a, 0x053570 } } },
63   { .channel = 0, .filter = 6, .data = { .coeff = { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } },
64
65   { .channel = 1, .filter = 0, .data = { .coeff = { 0x0f5514, 0xe155d7, 0x0f5514, 0xe15cfa, 0x0eb14b } } },
66   { .channel = 1, .filter = 1, .data = { .coeff = { 0x06ec33, 0x02abe3, 0x015eef, 0xf764d9, 0x03922d } } },
67   { .channel = 1, .filter = 2, .data = { .coeff = { 0x0ef5f2, 0xe67d1f, 0x0bcf37, 0xe67d1f, 0x0ac529 } } },
68   { .channel = 1, .filter = 3, .data = { .coeff = { 0x0db050, 0xe5be4d, 0x0d0c78, 0xe5be4d, 0x0abcc8 } } },
69   { .channel = 1, .filter = 4, .data = { .coeff = { 0x0f1298, 0xe64ec6, 0x0cc03e, 0xe64ec6, 0x0bd2d7 } } },
70   { .channel = 1, .filter = 5, .data = { .coeff = { 0x0c641a, 0x06537a, 0x08d155, 0x06537a, 0x053570 } } },
71   { .channel = 1, .filter = 6, .data = { .coeff = { 0x100000, 0x000000, 0x000000, 0x000000, 0x000000 } } }
72 };
73
74 static struct tas_eq_pref_t eqp_18_1_0 = {
75   .sample_rate   = 44100,
76   .device_id     = 0x18,
77   .output_id     = TAS_OUTPUT_INTERNAL_SPKR,
78   .speaker_id    = 0x00,
79
80   .drce          = &eqp_18_1_0_drce,
81
82   .filter_count  = 14,
83   .biquads       = eqp_18_1_0_biquads
84 };
85
86 /* ======================================================================== */
87
88 static struct tas_drce_t eqp_1a_1_0_drce={
89   .enable     = 1,
90   .above      = { .val = 3.0 * (1<<8), .expand = 0 },
91   .below      = { .val = 1.0 * (1<<8), .expand = 0 },
92   .threshold  = -10.75  * (1<<8),
93   .energy     = 2.4     * (1<<12),
94   .attack     = 0.013   * (1<<12),
95   .decay      = 0.212   * (1<<12),
96 };
97
98 static struct tas_biquad_ctrl_t eqp_1a_1_0_biquads[]={
99   { .channel = 0, .filter = 0, .data = { .coeff = { 0x0fb8fd, 0xe08e04, 0x0fb8fd, 0xe08f40, 0x0f7336 } } },
100   { .channel = 0, .filter = 1, .data = { .coeff = { 0x06371d, 0x0c6e3a, 0x06371d, 0x05bfd3, 0x031ca2 } } },
101   { .channel = 0, .filter = 2, .data = { .coeff = { 0x0fa1c0, 0xe18692, 0x0f030e, 0xe18692, 0x0ea4ce } } },
102   { .channel = 0, .filter = 3, .data = { .coeff = { 0x0fe495, 0xe17eff, 0x0f0452, 0xe17eff, 0x0ee8e7 } } },
103   { .channel = 0, .filter = 4, .data = { .coeff = { 0x100857, 0xe7e71c, 0x0e9599, 0xe7e71c, 0x0e9df1 } } },
104   { .channel = 0, .filter = 5, .data = { .coeff = { 0x0fb26e, 0x06a82c, 0x0db2b4, 0x06a82c, 0x0d6522 } } },
105   { .channel = 0, .filter = 6, .data = { .coeff = { 0x11419d, 0xf06cbf, 0x0a4f6e, 0xf06cbf, 0x0b910c } } },
106
107   { .channel = 1, .filter = 0, .data = { .coeff = { 0x0fb8fd, 0xe08e04, 0x0fb8fd, 0xe08f40, 0x0f7336 } } },
108   { .channel = 1, .filter = 1, .data = { .coeff = { 0x06371d, 0x0c6e3a, 0x06371d, 0x05bfd3, 0x031ca2 } } },
109   { .channel = 1, .filter = 2, .data = { .coeff = { 0x0fa1c0, 0xe18692, 0x0f030e, 0xe18692, 0x0ea4ce } } },
110   { .channel = 1, .filter = 3, .data = { .coeff = { 0x0fe495, 0xe17eff, 0x0f0452, 0xe17eff, 0x0ee8e7 } } },
111   { .channel = 1, .filter = 4, .data = { .coeff = { 0x100857, 0xe7e71c, 0x0e9599, 0xe7e71c, 0x0e9df1 } } },
112   { .channel = 1, .filter = 5, .data = { .coeff = { 0x0fb26e, 0x06a82c, 0x0db2b4, 0x06a82c, 0x0d6522 } } },
113   { .channel = 1, .filter = 6, .data = { .coeff = { 0x11419d, 0xf06cbf, 0x0a4f6e, 0xf06cbf, 0x0b910c } } }
114 };
115
116 static struct tas_eq_pref_t eqp_1a_1_0 = {
117   .sample_rate   = 44100,
118   .device_id     = 0x1a,
119   .output_id     = TAS_OUTPUT_INTERNAL_SPKR,
120   .speaker_id    = 0x00,
121
122   .drce          = &eqp_1a_1_0_drce,
123
124   .filter_count  = 14,
125   .biquads       = eqp_1a_1_0_biquads
126 };
127
128 /* ======================================================================== */
129
130 static struct tas_drce_t eqp_1c_1_0_drce={
131   .enable     = 1,
132   .above      = { .val = 3.0 * (1<<8), .expand = 0 },
133   .below      = { .val = 1.0 * (1<<8), .expand = 0 },
134   .threshold  = -14.34  * (1<<8),
135   .energy     = 2.4     * (1<<12),
136   .attack     = 0.013   * (1<<12),
137   .decay      = 0.212   * (1<<12),
138 };
139
140 static struct tas_biquad_ctrl_t eqp_1c_1_0_biquads[]={
141   { .channel = 0, .filter = 0, .data = { .coeff = { 0x0f4f95, 0xe160d4, 0x0f4f95, 0xe1686e, 0x0ea6c5 } } },
142   { .channel = 0, .filter = 1, .data = { .coeff = { 0x066b92, 0x0290d4, 0x0148a0, 0xf6853f, 0x03bfc7 } } },
143   { .channel = 0, .filter = 2, .data = { .coeff = { 0x0f57dc, 0xe51c91, 0x0dd1cb, 0xe51c91, 0x0d29a8 } } },
144   { .channel = 0, .filter = 3, .data = { .coeff = { 0x0df1cb, 0xe4fa84, 0x0d7cdc, 0xe4fa84, 0x0b6ea7 } } },
145   { .channel = 0, .filter = 4, .data = { .coeff = { 0x0eba36, 0xe6aa48, 0x0b9f52, 0xe6aa48, 0x0a5989 } } },
146   { .channel = 0, .filter = 5, .data = { .coeff = { 0x0caf02, 0x05ef9d, 0x084beb, 0x05ef9d, 0x04faee } } },
147   { .channel = 0, .filter = 6, .data = { .coeff = { 0x0fc686, 0xe22947, 0x0e4b5d, 0xe22947, 0x0e11e4 } } },
148
149   { .channel = 1, .filter = 0, .data = { .coeff = { 0x0f4f95, 0xe160d4, 0x0f4f95, 0xe1686e, 0x0ea6c5 } } },
150   { .channel = 1, .filter = 1, .data = { .coeff = { 0x066b92, 0x0290d4, 0x0148a0, 0xf6853f, 0x03bfc7 } } },
151   { .channel = 1, .filter = 2, .data = { .coeff = { 0x0f57dc, 0xe51c91, 0x0dd1cb, 0xe51c91, 0x0d29a8 } } },
152   { .channel = 1, .filter = 3, .data = { .coeff = { 0x0df1cb, 0xe4fa84, 0x0d7cdc, 0xe4fa84, 0x0b6ea7 } } },
153   { .channel = 1, .filter = 4, .data = { .coeff = { 0x0eba36, 0xe6aa48, 0x0b9f52, 0xe6aa48, 0x0a5989 } } },
154   { .channel = 1, .filter = 5, .data = { .coeff = { 0x0caf02, 0x05ef9d, 0x084beb, 0x05ef9d, 0x04faee } } },
155   { .channel = 1, .filter = 6, .data = { .coeff = { 0x0fc686, 0xe22947, 0x0e4b5d, 0xe22947, 0x0e11e4 } } }
156 };
157
158 static struct tas_eq_pref_t eqp_1c_1_0 = {
159   .sample_rate   = 44100,
160   .device_id     = 0x1c,
161   .output_id     = TAS_OUTPUT_INTERNAL_SPKR,
162   .speaker_id    = 0x00,
163
164   .drce          = &eqp_1c_1_0_drce,
165
166   .filter_count  = 14,
167   .biquads       = eqp_1c_1_0_biquads
168 };
169
170 /* ======================================================================== */
171
172 static uint tas3004_master_tab[]={
173                0x0,       0x75,       0x9c,       0xbb,
174               0xdb,       0xfb,      0x11e,      0x143,
175              0x16b,      0x196,      0x1c3,      0x1f5,
176              0x229,      0x263,      0x29f,      0x2e1,
177              0x328,      0x373,      0x3c5,      0x41b,
178              0x478,      0x4dc,      0x547,      0x5b8,
179              0x633,      0x6b5,      0x740,      0x7d5,
180              0x873,      0x91c,      0x9d2,      0xa92,
181              0xb5e,      0xc39,      0xd22,      0xe19,
182              0xf20,     0x1037,     0x1161,     0x129e,
183             0x13ed,     0x1551,     0x16ca,     0x185d,
184             0x1a08,     0x1bcc,     0x1dac,     0x1fa7,
185             0x21c1,     0x23fa,     0x2655,     0x28d6,
186             0x2b7c,     0x2e4a,     0x3141,     0x3464,
187             0x37b4,     0x3b35,     0x3ee9,     0x42d3,
188             0x46f6,     0x4b53,     0x4ff0,     0x54ce,
189             0x59f2,     0x5f5f,     0x6519,     0x6b24,
190             0x7183,     0x783c,     0x7f53,     0x86cc,
191             0x8ead,     0x96fa,     0x9fba,     0xa8f2,
192             0xb2a7,     0xbce1,     0xc7a5,     0xd2fa,
193             0xdee8,     0xeb75,     0xf8aa,    0x1068e,
194            0x1152a,    0x12487,    0x134ad,    0x145a5,
195            0x1577b,    0x16a37,    0x17df5,    0x192bd,
196            0x1a890,    0x1bf7b,    0x1d78d,    0x1f0d1,
197            0x20b55,    0x22727,    0x24456,    0x262f2,
198            0x2830b
199 };
200
201 static uint tas3004_mixer_tab[]={
202                0x0,      0x748,      0x9be,      0xbaf,
203              0xda4,      0xfb1,     0x11de,     0x1431,
204             0x16ad,     0x1959,     0x1c37,     0x1f4b,
205             0x2298,     0x2628,     0x29fb,     0x2e12,
206             0x327d,     0x3734,     0x3c47,     0x41b4,
207             0x4787,     0x4dbe,     0x546d,     0x5b86,
208             0x632e,     0x6b52,     0x7400,     0x7d54,
209             0x873b,     0x91c6,     0x9d1a,     0xa920,
210             0xb5e5,     0xc38c,     0xd21b,     0xe18f,
211             0xf1f5,    0x1036a,    0x1160f,    0x129d6,
212            0x13ed0,    0x1550c,    0x16ca0,    0x185c9,
213            0x1a07b,    0x1bcc3,    0x1dab9,    0x1fa75,
214            0x21c0f,    0x23fa3,    0x26552,    0x28d64,
215            0x2b7c9,    0x2e4a2,    0x31411,    0x3463b,
216            0x37b44,    0x3b353,    0x3ee94,    0x42d30,
217            0x46f55,    0x4b533,    0x4fefc,    0x54ce5,
218            0x59f25,    0x5f5f6,    0x65193,    0x6b23c,
219            0x71835,    0x783c3,    0x7f52c,    0x86cc0,
220            0x8eacc,    0x96fa5,    0x9fba0,    0xa8f1a,
221            0xb2a71,    0xbce0a,    0xc7a4a,    0xd2fa0,
222            0xdee7b,    0xeb752,    0xf8a9f,   0x1068e4,
223           0x1152a3,   0x12486a,   0x134ac8,   0x145a55,
224           0x1577ac,   0x16a370,   0x17df51,   0x192bc2,
225           0x1a88f8,   0x1bf7b7,   0x1d78c9,   0x1f0d04,
226           0x20b542,   0x227268,   0x244564,   0x262f26,
227           0x2830af
228 };
229
230 static uint tas3004_treble_tab[]={
231               0x96,       0x95,       0x95,       0x94,
232               0x93,       0x92,       0x92,       0x91,
233               0x90,       0x90,       0x8f,       0x8e,
234               0x8d,       0x8d,       0x8c,       0x8b,
235               0x8a,       0x8a,       0x89,       0x88,
236               0x88,       0x87,       0x86,       0x85,
237               0x85,       0x84,       0x83,       0x83,
238               0x82,       0x81,       0x80,       0x80,
239               0x7f,       0x7e,       0x7e,       0x7d,
240               0x7c,       0x7b,       0x7b,       0x7a,
241               0x79,       0x78,       0x78,       0x77,
242               0x76,       0x76,       0x75,       0x74,
243               0x73,       0x73,       0x72,       0x71,
244               0x71,       0x68,       0x45,       0x5b,
245               0x6d,       0x6c,       0x6b,       0x6a,
246               0x69,       0x68,       0x67,       0x66,
247               0x65,       0x63,       0x62,       0x62,
248               0x60,       0x5e,       0x5c,       0x5b,
249               0x59,       0x57,       0x55,       0x53,
250               0x52,       0x4f,       0x4d,       0x4a,
251               0x48,       0x46,       0x43,       0x40,
252               0x3d,       0x3a,       0x36,       0x33,
253               0x2f,       0x2c,       0x27,       0x23,
254               0x1f,       0x1a,       0x15,        0xf,
255                0x8,        0x5,        0x2,        0x1,
256                0x1
257 };
258
259 static uint tas3004_bass_tab[]={
260               0x96,       0x95,       0x95,       0x94,
261               0x93,       0x92,       0x92,       0x91,
262               0x90,       0x90,       0x8f,       0x8e,
263               0x8d,       0x8d,       0x8c,       0x8b,
264               0x8a,       0x8a,       0x89,       0x88,
265               0x88,       0x87,       0x86,       0x85,
266               0x85,       0x84,       0x83,       0x83,
267               0x82,       0x81,       0x80,       0x80,
268               0x7f,       0x7e,       0x7e,       0x7d,
269               0x7c,       0x7b,       0x7b,       0x7a,
270               0x79,       0x78,       0x78,       0x77,
271               0x76,       0x76,       0x75,       0x74,
272               0x73,       0x73,       0x72,       0x71,
273               0x70,       0x6f,       0x6e,       0x6d,
274               0x6c,       0x6b,       0x6a,       0x6a,
275               0x69,       0x67,       0x66,       0x66,
276               0x65,       0x63,       0x62,       0x62,
277               0x61,       0x60,       0x5e,       0x5d,
278               0x5b,       0x59,       0x57,       0x55,
279               0x53,       0x51,       0x4f,       0x4c,
280               0x4a,       0x48,       0x46,       0x44,
281               0x41,       0x3e,       0x3b,       0x38,
282               0x36,       0x33,       0x2f,       0x2b,
283               0x28,       0x24,       0x20,       0x1c,
284               0x17,       0x12,        0xd,        0x7,
285                0x1
286 };
287
288 struct tas_gain_t tas3004_gain={
289   .master  = tas3004_master_tab,
290   .treble  = tas3004_treble_tab,
291   .bass    = tas3004_bass_tab,
292   .mixer   = tas3004_mixer_tab
293 };
294
295 struct tas_eq_pref_t *tas3004_eq_prefs[]={
296   &eqp_17_1_0,
297   &eqp_18_1_0,
298   &eqp_1a_1_0,
299   &eqp_1c_1_0,
300   NULL
301 };