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