135 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			135 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * 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;
							 | 
						||
| 
								 | 
							
								}
							 |