diff options
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/uda1380.h | 132 |
1 files changed, 77 insertions, 55 deletions
diff --git a/firmware/export/uda1380.h b/firmware/export/uda1380.h index c6993ef84c..f7e97e13c7 100644 --- a/firmware/export/uda1380.h +++ b/firmware/export/uda1380.h | |||
@@ -17,32 +17,33 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | 19 | ||
20 | /* | ||
21 | * Driver for UDA1380 Audio-Codec | ||
22 | * 2005-02-17 hubble@mochine.com | ||
23 | * | ||
24 | */ | ||
25 | |||
26 | #ifndef _UDA1380_H | 20 | #ifndef _UDA1380_H |
27 | #define _UDA1380_H | 21 | #define _UDA1380_H |
28 | 22 | ||
29 | extern int uda1380_init(void); | 23 | extern int uda1380_init(void); |
30 | extern void uda1380_enable_output(bool enable); | 24 | extern void uda1380_enable_output(bool enable); |
31 | extern int uda1380_setvol(int vol); | 25 | extern int uda1380_setvol(int vol); |
26 | extern void uda1380_set_bass(int value); | ||
27 | extern void uda1380_set_treble(int value); | ||
32 | extern int uda1380_mute(int mute); | 28 | extern int uda1380_mute(int mute); |
33 | extern void uda1380_close(void); | 29 | extern void uda1380_close(void); |
34 | 30 | ||
35 | #define UDA1380_ADDR 0x30 | 31 | extern void uda1380_enable_recording(bool source_mic); |
32 | extern void uda1380_disable_recording(void); | ||
33 | extern void uda1380_set_recvol(int mic_gain, int linein_gain, int adc_volume); | ||
34 | extern void uda1380_set_monitor(int enable); | ||
35 | |||
36 | #define UDA1380_ADDR 0x30 | ||
36 | 37 | ||
37 | /* REG_0: Misc settings */ | 38 | /* REG_0: Misc settings */ |
38 | #define REG_0 0x00 | 39 | #define REG_0 0x00 |
39 | 40 | ||
40 | #define EN_ADC (1 << 11) /* Enable ADC */ | 41 | #define EN_ADC (1 << 11) /* Enable ADC */ |
41 | #define EN_DEC (1 << 10) /* Enable Decimator */ | 42 | #define EN_DEC (1 << 10) /* Enable Decimator */ |
42 | #define EN_DAC (1 << 9) /* Enable DAC */ | 43 | #define EN_DAC (1 << 9) /* Enable DAC */ |
43 | #define EN_INT (1 << 8) /* Enable Interpolator */ | 44 | #define EN_INT (1 << 8) /* Enable Interpolator */ |
44 | #define ADC_CLK (1 << 5) /* ADC_CLK: WSPLL (1) SYSCLK (0) */ | 45 | #define ADC_CLK (1 << 5) /* ADC_CLK: WSPLL (1) SYSCLK (0) */ |
45 | #define DAC_CLK (1 << 4) /* DAC_CLK: WSPLL (1) SYSCLK (0) */ | 46 | #define DAC_CLK (1 << 4) /* DAC_CLK: WSPLL (1) SYSCLK (0) */ |
46 | 47 | ||
47 | /* SYSCLK freqency select */ | 48 | /* SYSCLK freqency select */ |
48 | #define SYSCLK_256FS (0 << 2) | 49 | #define SYSCLK_256FS (0 << 2) |
@@ -51,14 +52,14 @@ extern void uda1380_close(void); | |||
51 | #define SYSCLK_768FS (3 << 2) | 52 | #define SYSCLK_768FS (3 << 2) |
52 | 53 | ||
53 | /* WSPLL Input frequency range (kHz) */ | 54 | /* WSPLL Input frequency range (kHz) */ |
54 | #define WSPLL_625_125 (0 << 0) /* 6.25 - 12.5 */ | 55 | #define WSPLL_625_125 (0 << 0) /* 6.25 - 12.5 */ |
55 | #define WSPLL_125_25 (1 << 0) /* 12.5 - 25 */ | 56 | #define WSPLL_125_25 (1 << 0) /* 12.5 - 25 */ |
56 | #define WSPLL_25_50 (2 << 0) /* 25 - 50 */ | 57 | #define WSPLL_25_50 (2 << 0) /* 25 - 50 */ |
57 | #define WSPLL_50_100 (3 << 0) /* 50 - 100 */ | 58 | #define WSPLL_50_100 (3 << 0) /* 50 - 100 */ |
58 | 59 | ||
59 | 60 | ||
60 | /* REG_I2S: I2S settings */ | 61 | /* REG_I2S: I2S settings */ |
61 | #define REG_I2S 0x01 | 62 | #define REG_I2S 0x01 |
62 | #define I2S_IFMT_IIS (0 << 8) | 63 | #define I2S_IFMT_IIS (0 << 8) |
63 | #define I2S_IFMT_LSB16 (1 << 8) | 64 | #define I2S_IFMT_LSB16 (1 << 8) |
64 | #define I2S_IFMT_LSB18 (2 << 8) | 65 | #define I2S_IFMT_LSB18 (2 << 8) |
@@ -70,71 +71,92 @@ extern void uda1380_close(void); | |||
70 | #define I2S_OFMT_LSB20 (3 << 0) | 71 | #define I2S_OFMT_LSB20 (3 << 0) |
71 | #define I2S_OFMT_LSB24 (4 << 0) | 72 | #define I2S_OFMT_LSB24 (4 << 0) |
72 | #define I2S_OFMT_MSB (5 << 0) | 73 | #define I2S_OFMT_MSB (5 << 0) |
73 | 74 | #define I2S_MODE_MASTER (1 << 4) | |
74 | 75 | ||
75 | /* REG_PWR: Power control */ | 76 | /* REG_PWR: Power control */ |
76 | #define REG_PWR 0x02 | 77 | #define REG_PWR 0x02 |
77 | #define PON_PLL (1 << 15) /* Power-on WSPLL */ | 78 | #define PON_PLL (1 << 15) /* Power-on WSPLL */ |
78 | #define PON_HP (1 << 13) /* Power-on Headphone driver */ | 79 | #define PON_HP (1 << 13) /* Power-on Headphone driver */ |
79 | #define PON_DAC (1 << 10) /* Power-on DAC */ | 80 | #define PON_DAC (1 << 10) /* Power-on DAC */ |
80 | #define PON_BIAS (1 << 8) /* Power-on BIAS for ADC, AVC, FSDAC */ | 81 | #define PON_BIAS (1 << 8) /* Power-on BIAS for ADC, AVC, FSDAC */ |
81 | #define EN_AVC (1 << 7) /* Enable analog mixer */ | 82 | #define EN_AVC (1 << 7) /* Enable analog mixer */ |
82 | #define PON_AVC (1 << 6) /* Power-on analog mixer */ | 83 | #define PON_AVC (1 << 6) /* Power-on analog mixer */ |
83 | #define PON_LNA (1 << 4) /* Power-on LNA & SDC */ | 84 | #define PON_LNA (1 << 4) /* Power-on LNA & SDC */ |
84 | #define PON_PGAL (1 << 3) /* Power-on PGA left */ | 85 | #define PON_PGAL (1 << 3) /* Power-on PGA left */ |
85 | #define PON_ADCL (1 << 2) /* Power-on ADC left */ | 86 | #define PON_ADCL (1 << 2) /* Power-on ADC left */ |
86 | #define PON_PGAR (1 << 1) /* Power-on PGA right */ | 87 | #define PON_PGAR (1 << 1) /* Power-on PGA right */ |
87 | #define PON_ADCR (1 << 0) /* Power-on ADC right */ | 88 | #define PON_ADCR (1 << 0) /* Power-on ADC right */ |
88 | 89 | ||
89 | 90 | ||
90 | /* REG_AMIX: Analog mixer */ | 91 | /* REG_AMIX: Analog mixer */ |
91 | #define REG_AMIX 0x03 | 92 | #define REG_AMIX 0x03 |
92 | #define AMIX_LEFT(x) (((x) & 0x3f) << 8) | 93 | #define AMIX_LEFT(x) (((x) & 0x3f) << 8) |
93 | #define AMIX_RIGHT(x) (((x) & 0x3f) << 0) | 94 | #define AMIX_RIGHT(x) (((x) & 0x3f) << 0) |
94 | 95 | ||
95 | /* REG_HP: Headphone amp */ | 96 | /* REG_HP: Headphone amp */ |
96 | #define REG_HP 0x04 | 97 | #define REG_HP 0x04 |
97 | 98 | ||
98 | /* REG_MV: Master Volume control */ | 99 | /* REG_MV: Master Volume control */ |
99 | #define REG_MASTER_VOL 0x10 | 100 | #define REG_MASTER_VOL 0x10 |
100 | 101 | ||
101 | #define MASTER_VOL_RIGHT(x) (((x) & 0xff) << 8) | 102 | #define MASTER_VOL_RIGHT(x) (((x) & 0xff) << 8) |
102 | #define MASTER_VOL_LEFT(x) (((x) & 0xff) << 0) | 103 | #define MASTER_VOL_LEFT(x) (((x) & 0xff) << 0) |
103 | 104 | ||
104 | /* REG_MIX: Mixer volume control */ | 105 | /* REG_MIX: Mixer volume control */ |
105 | /* Channel 1 is from digital data from I2S */ | 106 | /* Channel 1 is from digital data from I2S */ |
106 | /* Channel 2 is from decimation filter */ | 107 | /* Channel 2 is from decimation filter */ |
107 | 108 | ||
108 | #define REG_MIX_VOL 0x11 | 109 | #define REG_MIX_VOL 0x11 |
109 | #define MIX_VOL_CHANNEL_1(x) (((x) & 0xff) << 0) | 110 | #define MIX_VOL_CH_1(x) (((x) & 0xff) << 0) |
110 | #define MIX_VOL_CHANNEL_2(x) (((x) & 0xff) << 8) | 111 | #define MIX_VOL_CH_2(x) (((x) & 0xff) << 8) |
111 | 112 | ||
112 | /* REG_EQ: Bass boost and tremble */ | 113 | /* REG_EQ: Bass boost and tremble */ |
113 | #define REG_EQ 0x12 | 114 | #define REG_EQ 0x12 |
115 | #define EQ_MODE_FLAG (0 << 14) | ||
116 | #define EQ_MODE_MIN (1 << 14) | ||
117 | #define EQ_MODE_MAX (3 << 14) | ||
118 | #define BASSL(x) (((x) & 0xF) << 8) | ||
119 | #define BASSR(x) (((x) & 0xF) << 0) | ||
120 | #define TREBLEL(x) (((x) & 0x3) << 12) | ||
121 | #define TREBLER(x) (((x) & 0x3) << 4) | ||
122 | #define BASS_MASK 0x0F0F | ||
123 | #define TREBLE_MASK 0x3030 | ||
124 | |||
125 | /* REG_MUTE: Master Mute, silence detector and oversampling */ | ||
126 | #define REG_MUTE 0x13 | ||
127 | #define MUTE_MASTER (1 << 14) /* Master Mute (soft) */ | ||
128 | #define MIX_MODE(x) ((x) << 12) /* Mixer mode: See table 48 */ | ||
129 | #define MUTE_CH2 (1 << 11) /* Channel 2 mute */ | ||
130 | #define MUTE_CH1 (1 << 3) /* Channel 1 mute */ | ||
114 | 131 | ||
115 | /* REG_MUTE: Master Mute */ | ||
116 | #define REG_MUTE 0x13 | ||
117 | #define MUTE_MASTER (1 << 14) /* Master Mute (soft) */ | ||
118 | #define MUTE_CH2 (1 << 11) /* Channel 2 mute */ | ||
119 | #define MUTE_CH1 (1 << 3) /* Channel 1 mute */ | ||
120 | 132 | ||
121 | /* REG_MIX_CTL: Mixer, silence detector and oversampling settings */ | 133 | /* REG_MIX_CTL: Mixer, silence detector and oversampling settings */ |
122 | #define REG_MIX_CTL 0x14 | 134 | #define REG_MIX_CTL 0x14 |
123 | #define MIX_CTL_MIX_POS (1 << 13) | 135 | #define MIX_CTL_MIX_POS (1 << 13) |
124 | #define MIX_CTL_MIX (1 << 12) | 136 | #define MIX_CTL_MIX (1 << 12) |
125 | 137 | ||
126 | /* REG_DEC_VOL: Decimator Volume control */ | 138 | /* REG_DEC_VOL: Decimator (ADC) volume control */ |
127 | #define REG_DEC_VOL 0x20 | 139 | #define REG_DEC_VOL 0x20 |
140 | #define DEC_VOLL(x) (((x) & 0xff) << 8) | ||
141 | #define DEC_VOLR(x) (((x) & 0xff) << 0) | ||
128 | 142 | ||
129 | /* REG_PGA: PGA settings and mute */ | 143 | /* REG_PGA: PGA settings and mute */ |
130 | #define REG_PGA 0x21 | 144 | #define REG_PGA 0x21 |
131 | #define MUTE_ADC (1 << 15) /* Mute ADC */ | 145 | #define MUTE_ADC (1 << 15) /* Mute ADC */ |
146 | #define PGA_GAINR(x) (((x) & 0xF) << 8) | ||
147 | #define PGA_GAINL(x) (((x) & 0xF) << 0) | ||
148 | #define PGA_GAIN_MASK 0x0F0F | ||
132 | 149 | ||
133 | /* REG_ADC: */ | 150 | /* REG_ADC: */ |
134 | #define REG_ADC 0x22 | 151 | #define REG_ADC 0x22 |
152 | #define SEL_LNA (1 << 3) | ||
153 | #define SEL_MIC (1 << 2) | ||
154 | #define SKIP_DCFIL (1 << 1) | ||
155 | #define EN_DCFIL (1 << 0) | ||
156 | #define VGA_GAIN(x) (((x) & 0xF) << 8) | ||
157 | #define VGA_GAIN_MASK 0x0F00 | ||
135 | 158 | ||
136 | /* REG_AGC: Attack / Gain */ | 159 | /* REG_AGC: Attack / Gain */ |
137 | #define REG_AGC 0x23 | 160 | #define REG_AGC 0x23 |
138 | #define SKIP_DCFIL ( 1 << 1) | ||
139 | 161 | ||
140 | #endif /* _UDA_1380_H */ | 162 | #endif /* _UDA_1380_H */ |