1/* SPDX-License-Identifier: GPL-2.0 */
2/* volume tables, taken from TAS3001c data manual */
3/* volume gain values */
4/* 0 = -70 dB, 175 = 18.0 dB in 0.5 dB step */
5static const unsigned int master_volume_table[] = {
6 0x00000015, 0x00000016, 0x00000017,
7 0x00000019, 0x0000001a, 0x0000001c,
8 0x0000001d, 0x0000001f, 0x00000021,
9 0x00000023, 0x00000025, 0x00000027,
10 0x00000029, 0x0000002c, 0x0000002e,
11 0x00000031, 0x00000034, 0x00000037,
12 0x0000003a, 0x0000003e, 0x00000042,
13 0x00000045, 0x0000004a, 0x0000004e,
14 0x00000053, 0x00000057, 0x0000005d,
15 0x00000062, 0x00000068, 0x0000006e,
16 0x00000075, 0x0000007b, 0x00000083,
17 0x0000008b, 0x00000093, 0x0000009b,
18 0x000000a5, 0x000000ae, 0x000000b9,
19 0x000000c4, 0x000000cf, 0x000000dc,
20 0x000000e9, 0x000000f6, 0x00000105,
21 0x00000114, 0x00000125, 0x00000136,
22 0x00000148, 0x0000015c, 0x00000171,
23 0x00000186, 0x0000019e, 0x000001b6,
24 0x000001d0, 0x000001eb, 0x00000209,
25 0x00000227, 0x00000248, 0x0000026b,
26 0x0000028f, 0x000002b6, 0x000002df,
27 0x0000030b, 0x00000339, 0x0000036a,
28 0x0000039e, 0x000003d5, 0x0000040f,
29 0x0000044c, 0x0000048d, 0x000004d2,
30 0x0000051c, 0x00000569, 0x000005bb,
31 0x00000612, 0x0000066e, 0x000006d0,
32 0x00000737, 0x000007a5, 0x00000818,
33 0x00000893, 0x00000915, 0x0000099f,
34 0x00000a31, 0x00000acc, 0x00000b6f,
35 0x00000c1d, 0x00000cd5, 0x00000d97,
36 0x00000e65, 0x00000f40, 0x00001027,
37 0x0000111c, 0x00001220, 0x00001333,
38 0x00001456, 0x0000158a, 0x000016d1,
39 0x0000182b, 0x0000199a, 0x00001b1e,
40 0x00001cb9, 0x00001e6d, 0x0000203a,
41 0x00002223, 0x00002429, 0x0000264e,
42 0x00002893, 0x00002afa, 0x00002d86,
43 0x00003039, 0x00003314, 0x0000361b,
44 0x00003950, 0x00003cb5, 0x0000404e,
45 0x0000441d, 0x00004827, 0x00004c6d,
46 0x000050f4, 0x000055c0, 0x00005ad5,
47 0x00006037, 0x000065ea, 0x00006bf4,
48 0x0000725a, 0x00007920, 0x0000804e,
49 0x000087e8, 0x00008ff6, 0x0000987d,
50 0x0000a186, 0x0000ab19, 0x0000b53c,
51 0x0000bff9, 0x0000cb59, 0x0000d766,
52 0x0000e429, 0x0000f1ae, 0x00010000,
53 0x00010f2b, 0x00011f3d, 0x00013042,
54 0x00014249, 0x00015562, 0x0001699c,
55 0x00017f09, 0x000195bc, 0x0001adc6,
56 0x0001c73d, 0x0001e237, 0x0001feca,
57 0x00021d0e, 0x00023d1d, 0x00025f12,
58 0x0002830b, 0x0002a925, 0x0002d182,
59 0x0002fc42, 0x0003298b, 0x00035983,
60 0x00038c53, 0x0003c225, 0x0003fb28,
61 0x0004378b, 0x00047783, 0x0004bb44,
62 0x0005030a, 0x00054f10, 0x00059f98,
63 0x0005f4e5, 0x00064f40, 0x0006aef6,
64 0x00071457, 0x00077fbb, 0x0007f17b,
65};
66
67/* treble table for TAS3001c */
68/* 0 = -18 dB, 72 = 18 dB in 0.5 dB step */
69static const unsigned int treble_volume_table[] = {
70 0x96, 0x95, 0x94,
71 0x93, 0x92, 0x91,
72 0x90, 0x8f, 0x8e,
73 0x8d, 0x8c, 0x8b,
74 0x8a, 0x89, 0x88,
75 0x87, 0x86, 0x85,
76 0x84, 0x83, 0x82,
77 0x81, 0x80, 0x7f,
78 0x7e, 0x7d, 0x7c,
79 0x7b, 0x7a, 0x79,
80 0x78, 0x77, 0x76,
81 0x75, 0x74, 0x73,
82 0x72, 0x71, 0x70,
83 0x6e, 0x6d, 0x6c,
84 0x6b, 0x69, 0x68,
85 0x66, 0x65, 0x63,
86 0x62, 0x60, 0x5e,
87 0x5c, 0x5a, 0x57,
88 0x55, 0x52, 0x4f,
89 0x4c, 0x49, 0x45,
90 0x42, 0x3e, 0x3a,
91 0x36, 0x32, 0x2d,
92 0x28, 0x22, 0x1c,
93 0x16, 0x10, 0x09,
94 0x01,
95};
96
97/* bass table for TAS3001c */
98/* 0 = -18 dB, 72 = 18 dB in 0.5 dB step */
99static const unsigned int bass_volume_table[] = {
100 0x86, 0x82, 0x7f,
101 0x7d, 0x7a, 0x78,
102 0x76, 0x74, 0x72,
103 0x70, 0x6e, 0x6d,
104 0x6b, 0x69, 0x66,
105 0x64, 0x61, 0x5f,
106 0x5d, 0x5c, 0x5a,
107 0x59, 0x58, 0x56,
108 0x55, 0x54, 0x53,
109 0x51, 0x4f, 0x4d,
110 0x4b, 0x49, 0x46,
111 0x44, 0x42, 0x40,
112 0x3e, 0x3c, 0x3b,
113 0x39, 0x38, 0x36,
114 0x35, 0x33, 0x31,
115 0x30, 0x2e, 0x2c,
116 0x2b, 0x29, 0x28,
117 0x26, 0x25, 0x23,
118 0x21, 0x1f, 0x1c,
119 0x19, 0x18, 0x17,
120 0x16, 0x14, 0x13,
121 0x12, 0x10, 0x0f,
122 0x0d, 0x0b, 0x0a,
123 0x08, 0x06, 0x03,
124 0x01,
125};
126
127/* mixer (pcm) volume table */
128/* 0 = -70 dB, 175 = 18.0 dB in 0.5 dB step */
129static const unsigned int mixer_volume_table[] = {
130 0x00014b, 0x00015f, 0x000174,
131 0x00018a, 0x0001a1, 0x0001ba,
132 0x0001d4, 0x0001f0, 0x00020d,
133 0x00022c, 0x00024d, 0x000270,
134 0x000295, 0x0002bc, 0x0002e6,
135 0x000312, 0x000340, 0x000372,
136 0x0003a6, 0x0003dd, 0x000418,
137 0x000456, 0x000498, 0x0004de,
138 0x000528, 0x000576, 0x0005c9,
139 0x000620, 0x00067d, 0x0006e0,
140 0x000748, 0x0007b7, 0x00082c,
141 0x0008a8, 0x00092b, 0x0009b6,
142 0x000a49, 0x000ae5, 0x000b8b,
143 0x000c3a, 0x000cf3, 0x000db8,
144 0x000e88, 0x000f64, 0x00104e,
145 0x001145, 0x00124b, 0x001361,
146 0x001487, 0x0015be, 0x001708,
147 0x001865, 0x0019d8, 0x001b60,
148 0x001cff, 0x001eb7, 0x002089,
149 0x002276, 0x002481, 0x0026ab,
150 0x0028f5, 0x002b63, 0x002df5,
151 0x0030ae, 0x003390, 0x00369e,
152 0x0039db, 0x003d49, 0x0040ea,
153 0x0044c3, 0x0048d6, 0x004d27,
154 0x0051b9, 0x005691, 0x005bb2,
155 0x006121, 0x0066e3, 0x006cfb,
156 0x007370, 0x007a48, 0x008186,
157 0x008933, 0x009154, 0x0099f1,
158 0x00a310, 0x00acba, 0x00b6f6,
159 0x00c1cd, 0x00cd49, 0x00d973,
160 0x00e655, 0x00f3fb, 0x010270,
161 0x0111c0, 0x0121f9, 0x013328,
162 0x01455b, 0x0158a2, 0x016d0e,
163 0x0182af, 0x019999, 0x01b1de,
164 0x01cb94, 0x01e6cf, 0x0203a7,
165 0x022235, 0x024293, 0x0264db,
166 0x02892c, 0x02afa3, 0x02d862,
167 0x03038a, 0x033142, 0x0361af,
168 0x0394fa, 0x03cb50, 0x0404de,
169 0x0441d5, 0x048268, 0x04c6d0,
170 0x050f44, 0x055c04, 0x05ad50,
171 0x06036e, 0x065ea5, 0x06bf44,
172 0x07259d, 0x079207, 0x0804dc,
173 0x087e80, 0x08ff59, 0x0987d5,
174 0x0a1866, 0x0ab189, 0x0b53be,
175 0x0bff91, 0x0cb591, 0x0d765a,
176 0x0e4290, 0x0f1adf, 0x100000,
177 0x10f2b4, 0x11f3c9, 0x13041a,
178 0x14248e, 0x15561a, 0x1699c0,
179 0x17f094, 0x195bb8, 0x1adc61,
180 0x1c73d5, 0x1e236d, 0x1fec98,
181 0x21d0d9, 0x23d1cd, 0x25f125,
182 0x2830af, 0x2a9254, 0x2d1818,
183 0x2fc420, 0x3298b0, 0x35982f,
184 0x38c528, 0x3c224c, 0x3fb278,
185 0x437880, 0x477828, 0x4bb446,
186 0x5030a1, 0x54f106, 0x59f980,
187 0x5f4e52, 0x64f403, 0x6aef5d,
188 0x714575, 0x77fbaa, 0x7f17af,
189};
190
191
192/* treble table for TAS3004 */
193/* 0 = -18 dB, 72 = 18 dB in 0.5 dB step */
194static const unsigned int snapper_treble_volume_table[] = {
195 0x96, 0x95, 0x94,
196 0x93, 0x92, 0x91,
197 0x90, 0x8f, 0x8e,
198 0x8d, 0x8c, 0x8b,
199 0x8a, 0x89, 0x88,
200 0x87, 0x86, 0x85,
201 0x84, 0x83, 0x82,
202 0x81, 0x80, 0x7f,
203 0x7e, 0x7d, 0x7c,
204 0x7b, 0x7a, 0x79,
205 0x78, 0x77, 0x76,
206 0x75, 0x74, 0x73,
207 0x72, 0x71, 0x70,
208 0x6f, 0x6d, 0x6c,
209 0x6b, 0x69, 0x68,
210 0x67, 0x65, 0x63,
211 0x62, 0x60, 0x5d,
212 0x5b, 0x59, 0x56,
213 0x53, 0x51, 0x4d,
214 0x4a, 0x47, 0x43,
215 0x3f, 0x3b, 0x36,
216 0x31, 0x2c, 0x26,
217 0x20, 0x1a, 0x13,
218 0x08, 0x04, 0x01,
219 0x01,
220};
221
222/* bass table for TAS3004 */
223/* 0 = -18 dB, 72 = 18 dB in 0.5 dB step */
224static const unsigned int snapper_bass_volume_table[] = {
225 0x96, 0x95, 0x94,
226 0x93, 0x92, 0x91,
227 0x90, 0x8f, 0x8e,
228 0x8d, 0x8c, 0x8b,
229 0x8a, 0x89, 0x88,
230 0x87, 0x86, 0x85,
231 0x84, 0x83, 0x82,
232 0x81, 0x80, 0x7f,
233 0x7e, 0x7d, 0x7c,
234 0x7b, 0x7a, 0x79,
235 0x78, 0x77, 0x76,
236 0x75, 0x74, 0x73,
237 0x72, 0x71, 0x6f,
238 0x6e, 0x6d, 0x6b,
239 0x6a, 0x69, 0x67,
240 0x66, 0x65, 0x63,
241 0x62, 0x61, 0x5f,
242 0x5d, 0x5b, 0x58,
243 0x55, 0x52, 0x4f,
244 0x4c, 0x49, 0x46,
245 0x43, 0x3f, 0x3b,
246 0x37, 0x33, 0x2e,
247 0x29, 0x24, 0x1e,
248 0x18, 0x11, 0x0a,
249 0x01,
250};
251
252

source code of linux/sound/ppc/tumbler_volume.h