| /* | 
 |  * This file is only included exactly once! | 
 |  * | 
 |  * The tables here are derived from the tas3004 datasheet, | 
 |  * modulo typo corrections and some smoothing... | 
 |  */ | 
 |  | 
 | #define TAS3004_TREBLE_MIN	0 | 
 | #define TAS3004_TREBLE_MAX	72 | 
 | #define TAS3004_BASS_MIN	0 | 
 | #define TAS3004_BASS_MAX	72 | 
 | #define TAS3004_TREBLE_ZERO	36 | 
 | #define TAS3004_BASS_ZERO	36 | 
 |  | 
 | static u8 tas3004_treble_table[] = { | 
 | 	150, /* -18 dB */ | 
 | 	149, | 
 | 	148, | 
 | 	147, | 
 | 	146, | 
 | 	145, | 
 | 	144, | 
 | 	143, | 
 | 	142, | 
 | 	141, | 
 | 	140, | 
 | 	139, | 
 | 	138, | 
 | 	137, | 
 | 	136, | 
 | 	135, | 
 | 	134, | 
 | 	133, | 
 | 	132, | 
 | 	131, | 
 | 	130, | 
 | 	129, | 
 | 	128, | 
 | 	127, | 
 | 	126, | 
 | 	125, | 
 | 	124, | 
 | 	123, | 
 | 	122, | 
 | 	121, | 
 | 	120, | 
 | 	119, | 
 | 	118, | 
 | 	117, | 
 | 	116, | 
 | 	115, | 
 | 	114, /* 0 dB */ | 
 | 	113, | 
 | 	112, | 
 | 	111, | 
 | 	109, | 
 | 	108, | 
 | 	107, | 
 | 	105, | 
 | 	104, | 
 | 	103, | 
 | 	101, | 
 | 	99, | 
 | 	98, | 
 | 	96, | 
 | 	93, | 
 | 	91, | 
 | 	89, | 
 | 	86, | 
 | 	83, | 
 | 	81, | 
 | 	77, | 
 | 	74, | 
 | 	71, | 
 | 	67, | 
 | 	63, | 
 | 	59, | 
 | 	54, | 
 | 	49, | 
 | 	44, | 
 | 	38, | 
 | 	32, | 
 | 	26, | 
 | 	19, | 
 | 	10, | 
 | 	4, | 
 | 	2, | 
 | 	1, /* +18 dB */ | 
 | }; | 
 |  | 
 | static inline u8 tas3004_treble(int idx) | 
 | { | 
 | 	return tas3004_treble_table[idx]; | 
 | } | 
 |  | 
 | /* I only save the difference here to the treble table | 
 |  * so that the binary is smaller... | 
 |  * I have also ignored completely differences of | 
 |  * +/- 1 | 
 |  */ | 
 | static s8 tas3004_bass_diff_to_treble[] = { | 
 | 	2, /* 7 dB, offset 50 */ | 
 | 	2, | 
 | 	2, | 
 | 	2, | 
 | 	2, | 
 | 	1, | 
 | 	2, | 
 | 	2, | 
 | 	2, | 
 | 	3, | 
 | 	4, | 
 | 	4, | 
 | 	5, | 
 | 	6, | 
 | 	7, | 
 | 	8, | 
 | 	9, | 
 | 	10, | 
 | 	11, | 
 | 	14, | 
 | 	13, | 
 | 	8, | 
 | 	1, /* 18 dB */ | 
 | }; | 
 |  | 
 | static inline u8 tas3004_bass(int idx) | 
 | { | 
 | 	u8 result = tas3004_treble_table[idx]; | 
 |  | 
 | 	if (idx >= 50) | 
 | 		result += tas3004_bass_diff_to_treble[idx-50]; | 
 | 	return result; | 
 | } |