brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 14dc4e9 Raw
136 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * This file is only included exactly once!4 *5 * The tables here are derived from the tas3004 datasheet,6 * modulo typo corrections and some smoothing...7 */8 9#define TAS3004_TREBLE_MIN	010#define TAS3004_TREBLE_MAX	7211#define TAS3004_BASS_MIN	012#define TAS3004_BASS_MAX	7213#define TAS3004_TREBLE_ZERO	3614#define TAS3004_BASS_ZERO	3615 16static const u8 tas3004_treble_table[] = {17	150, /* -18 dB */18	149,19	148,20	147,21	146,22	145,23	144,24	143,25	142,26	141,27	140,28	139,29	138,30	137,31	136,32	135,33	134,34	133,35	132,36	131,37	130,38	129,39	128,40	127,41	126,42	125,43	124,44	123,45	122,46	121,47	120,48	119,49	118,50	117,51	116,52	115,53	114, /* 0 dB */54	113,55	112,56	111,57	109,58	108,59	107,60	105,61	104,62	103,63	101,64	99,65	98,66	96,67	93,68	91,69	89,70	86,71	83,72	81,73	77,74	74,75	71,76	67,77	63,78	59,79	54,80	49,81	44,82	38,83	32,84	26,85	19,86	10,87	4,88	2,89	1, /* +18 dB */90};91 92static inline u8 tas3004_treble(int idx)93{94	return tas3004_treble_table[idx];95}96 97/* I only save the difference here to the treble table98 * so that the binary is smaller...99 * I have also ignored completely differences of100 * +/- 1101 */102static const s8 tas3004_bass_diff_to_treble[] = {103	2, /* 7 dB, offset 50 */104	2,105	2,106	2,107	2,108	1,109	2,110	2,111	2,112	3,113	4,114	4,115	5,116	6,117	7,118	8,119	9,120	10,121	11,122	14,123	13,124	8,125	1, /* 18 dB */126};127 128static inline u8 tas3004_bass(int idx)129{130	u8 result = tas3004_treble_table[idx];131 132	if (idx >= 50)133		result += tas3004_bass_diff_to_treble[idx-50];134	return result;135}136