xref: /linux/sound/aoa/codecs/tas-basstreble.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2888dcb7cSJohannes Berg /*
3888dcb7cSJohannes Berg  * This file is only included exactly once!
4888dcb7cSJohannes Berg  *
5888dcb7cSJohannes Berg  * The tables here are derived from the tas3004 datasheet,
6888dcb7cSJohannes Berg  * modulo typo corrections and some smoothing...
7888dcb7cSJohannes Berg  */
8888dcb7cSJohannes Berg 
9888dcb7cSJohannes Berg #define TAS3004_TREBLE_MIN	0
10888dcb7cSJohannes Berg #define TAS3004_TREBLE_MAX	72
11888dcb7cSJohannes Berg #define TAS3004_BASS_MIN	0
12888dcb7cSJohannes Berg #define TAS3004_BASS_MAX	72
13888dcb7cSJohannes Berg #define TAS3004_TREBLE_ZERO	36
14888dcb7cSJohannes Berg #define TAS3004_BASS_ZERO	36
15888dcb7cSJohannes Berg 
16*fa35aa46STakashi Iwai static const u8 tas3004_treble_table[] = {
17888dcb7cSJohannes Berg 	150, /* -18 dB */
18888dcb7cSJohannes Berg 	149,
19888dcb7cSJohannes Berg 	148,
20888dcb7cSJohannes Berg 	147,
21888dcb7cSJohannes Berg 	146,
22888dcb7cSJohannes Berg 	145,
23888dcb7cSJohannes Berg 	144,
24888dcb7cSJohannes Berg 	143,
25888dcb7cSJohannes Berg 	142,
26888dcb7cSJohannes Berg 	141,
27888dcb7cSJohannes Berg 	140,
28888dcb7cSJohannes Berg 	139,
29888dcb7cSJohannes Berg 	138,
30888dcb7cSJohannes Berg 	137,
31888dcb7cSJohannes Berg 	136,
32888dcb7cSJohannes Berg 	135,
33888dcb7cSJohannes Berg 	134,
34888dcb7cSJohannes Berg 	133,
35888dcb7cSJohannes Berg 	132,
36888dcb7cSJohannes Berg 	131,
37888dcb7cSJohannes Berg 	130,
38888dcb7cSJohannes Berg 	129,
39888dcb7cSJohannes Berg 	128,
40888dcb7cSJohannes Berg 	127,
41888dcb7cSJohannes Berg 	126,
42888dcb7cSJohannes Berg 	125,
43888dcb7cSJohannes Berg 	124,
44888dcb7cSJohannes Berg 	123,
45888dcb7cSJohannes Berg 	122,
46888dcb7cSJohannes Berg 	121,
47888dcb7cSJohannes Berg 	120,
48888dcb7cSJohannes Berg 	119,
49888dcb7cSJohannes Berg 	118,
50888dcb7cSJohannes Berg 	117,
51888dcb7cSJohannes Berg 	116,
52888dcb7cSJohannes Berg 	115,
53888dcb7cSJohannes Berg 	114, /* 0 dB */
54888dcb7cSJohannes Berg 	113,
55888dcb7cSJohannes Berg 	112,
56888dcb7cSJohannes Berg 	111,
57888dcb7cSJohannes Berg 	109,
58888dcb7cSJohannes Berg 	108,
59888dcb7cSJohannes Berg 	107,
60888dcb7cSJohannes Berg 	105,
61888dcb7cSJohannes Berg 	104,
62888dcb7cSJohannes Berg 	103,
63888dcb7cSJohannes Berg 	101,
64888dcb7cSJohannes Berg 	99,
65888dcb7cSJohannes Berg 	98,
66888dcb7cSJohannes Berg 	96,
67888dcb7cSJohannes Berg 	93,
68888dcb7cSJohannes Berg 	91,
69888dcb7cSJohannes Berg 	89,
70888dcb7cSJohannes Berg 	86,
71888dcb7cSJohannes Berg 	83,
72888dcb7cSJohannes Berg 	81,
73888dcb7cSJohannes Berg 	77,
74888dcb7cSJohannes Berg 	74,
75888dcb7cSJohannes Berg 	71,
76888dcb7cSJohannes Berg 	67,
77888dcb7cSJohannes Berg 	63,
78888dcb7cSJohannes Berg 	59,
79888dcb7cSJohannes Berg 	54,
80888dcb7cSJohannes Berg 	49,
81888dcb7cSJohannes Berg 	44,
82888dcb7cSJohannes Berg 	38,
83888dcb7cSJohannes Berg 	32,
84888dcb7cSJohannes Berg 	26,
85888dcb7cSJohannes Berg 	19,
86888dcb7cSJohannes Berg 	10,
87888dcb7cSJohannes Berg 	4,
88888dcb7cSJohannes Berg 	2,
89888dcb7cSJohannes Berg 	1, /* +18 dB */
90888dcb7cSJohannes Berg };
91888dcb7cSJohannes Berg 
tas3004_treble(int idx)92888dcb7cSJohannes Berg static inline u8 tas3004_treble(int idx)
93888dcb7cSJohannes Berg {
94888dcb7cSJohannes Berg 	return tas3004_treble_table[idx];
95888dcb7cSJohannes Berg }
96888dcb7cSJohannes Berg 
97888dcb7cSJohannes Berg /* I only save the difference here to the treble table
98888dcb7cSJohannes Berg  * so that the binary is smaller...
99888dcb7cSJohannes Berg  * I have also ignored completely differences of
100888dcb7cSJohannes Berg  * +/- 1
101888dcb7cSJohannes Berg  */
102*fa35aa46STakashi Iwai static const s8 tas3004_bass_diff_to_treble[] = {
103888dcb7cSJohannes Berg 	2, /* 7 dB, offset 50 */
104888dcb7cSJohannes Berg 	2,
105888dcb7cSJohannes Berg 	2,
106888dcb7cSJohannes Berg 	2,
107888dcb7cSJohannes Berg 	2,
108888dcb7cSJohannes Berg 	1,
109888dcb7cSJohannes Berg 	2,
110888dcb7cSJohannes Berg 	2,
111888dcb7cSJohannes Berg 	2,
112888dcb7cSJohannes Berg 	3,
113888dcb7cSJohannes Berg 	4,
114888dcb7cSJohannes Berg 	4,
115888dcb7cSJohannes Berg 	5,
116888dcb7cSJohannes Berg 	6,
117888dcb7cSJohannes Berg 	7,
118888dcb7cSJohannes Berg 	8,
119888dcb7cSJohannes Berg 	9,
120888dcb7cSJohannes Berg 	10,
121888dcb7cSJohannes Berg 	11,
122888dcb7cSJohannes Berg 	14,
123888dcb7cSJohannes Berg 	13,
124888dcb7cSJohannes Berg 	8,
125888dcb7cSJohannes Berg 	1, /* 18 dB */
126888dcb7cSJohannes Berg };
127888dcb7cSJohannes Berg 
tas3004_bass(int idx)128888dcb7cSJohannes Berg static inline u8 tas3004_bass(int idx)
129888dcb7cSJohannes Berg {
130888dcb7cSJohannes Berg 	u8 result = tas3004_treble_table[idx];
131888dcb7cSJohannes Berg 
132888dcb7cSJohannes Berg 	if (idx >= 50)
133888dcb7cSJohannes Berg 		result += tas3004_bass_diff_to_treble[idx-50];
134888dcb7cSJohannes Berg 	return result;
135888dcb7cSJohannes Berg }
136