/* * 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; }