summaryrefslogtreecommitdiff
path: root/firmware/export/mas35xx.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export/mas35xx.h')
-rw-r--r--firmware/export/mas35xx.h162
1 files changed, 148 insertions, 14 deletions
diff --git a/firmware/export/mas35xx.h b/firmware/export/mas35xx.h
index 1c50b7f02b..f75658fce1 100644
--- a/firmware/export/mas35xx.h
+++ b/firmware/export/mas35xx.h
@@ -25,27 +25,55 @@
25#define _MAS35XX_H 25#define _MAS35XX_H
26 26
27#include "config.h" 27#include "config.h"
28#include "mascodec.h"
28 29
29#if CONFIG_CODEC == MAS3507D 30#define MAS_BANK_D0 0
31#define MAS_BANK_D1 1
30 32
31#define VOLUME_MIN -780 33/* registers common to all MAS35xx */
32#define VOLUME_MAX 180 34#define MAS_REG_DCCF 0x8e
33#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP) 35#define MAS_REG_MUTE 0xaa
36#define MAS_REG_PIODATA 0xc8
37#define MAS_REG_StartUpConfig 0xe6
38#define MAS_REG_KPRESCALE 0xe7
34 39
35#else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */ 40#if CONFIG_CODEC == MAS3507D
36 41
37/* MAS3587F and MAS3539F handle clipping prevention internally so we do not need 42/* I2C defines */
38 * the prescaler -> CLIPPING_CAP 43#define MAS_ADR 0x3a
39 */ 44#define MAS_DEV_WRITE (MAS_ADR | 0x00)
45#define MAS_DEV_READ (MAS_ADR | 0x01)
40 46
41#define VOLUME_MIN -400 47/* MAS3507D registers */
42#define VOLUME_MAX 600 48#define MAS_DATA_WRITE 0x68
43#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | BALANCE_CAP | CLIPPING_CAP) 49#define MAS_DATA_READ 0x69
50#define MAS_CONTROL 0x6a
44 51
45#endif 52#define MAS_REG_KBASS 0x6b
53#define MAS_REG_KTREBLE 0x6f
46 54
55/* MAS3507D commands */
56#define MAS_CMD_READ_ANCILLARY 0x30
57#define MAS_CMD_WRITE_REG 0x90
58#define MAS_CMD_WRITE_D0_MEM 0xa0
59#define MAS_CMD_WRITE_D1_MEM 0xb0
60#define MAS_CMD_READ_REG 0xd0
61#define MAS_CMD_READ_D0_MEM 0xe0
62#define MAS_CMD_READ_D1_MEM 0xf0
47 63
48#if CONFIG_CODEC == MAS3507D 64/* MAS3507D D0 memmory cells */
65#define MAS_D0_MPEG_FRAME_COUNT 0x300
66#define MAS_D0_MPEG_STATUS_1 0x301
67#define MAS_D0_MPEG_STATUS_2 0x302
68#define MAS_D0_CRC_ERROR_COUNT 0x303
69#define MAS_D0_OUT_LL 0x7f8
70#define MAS_D0_OUT_LR 0x7f9
71#define MAS_D0_OUT_RL 0x7fa
72#define MAS_D0_OUT_RR 0x7fb
73
74#define VOLUME_MIN -780
75#define VOLUME_MAX 180
76#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP)
49 77
50static const unsigned int bass_table[] = 78static const unsigned int bass_table[] =
51{ 79{
@@ -136,6 +164,112 @@ static const unsigned int prescale_table[] =
136 0xe6800, /* 14dB */ 164 0xe6800, /* 14dB */
137 0xe9400 /* 15dB */ 165 0xe9400 /* 15dB */
138}; 166};
139#endif /*CONFIG_CODEC == MAS3507D*/ 167
168#else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */
169
170/* I2C defines */
171#define MAS_ADR 0x3c
172#define MAS_DEV_WRITE (MAS_ADR | 0x00)
173#define MAS_DEV_READ (MAS_ADR | 0x01)
174
175/* MAS3587F/MAS3539F registers */
176#define MAS_DATA_WRITE 0x68
177#define MAS_DATA_READ 0x69
178#define MAS_CODEC_WRITE 0x6c
179#define MAS_CODEC_READ 0x6d
180#define MAS_CONTROL 0x6a
181#define MAS_DCCF 0x76
182#define MAS_DCFR 0x77
183
184#define MAS_REG_KMDB_SWITCH 0x21
185#define MAS_REG_KMDB_STR 0x22
186#define MAS_REG_KMDB_HAR 0x23
187#define MAS_REG_KMDB_FC 0x24
188#define MAS_REG_KLOUDNESS 0x1e
189#define MAS_REG_QPEAK_L 0x0a
190#define MAS_REG_QPEAK_R 0x0b
191#define MAS_REG_DQPEAK_L 0x0c
192#define MAS_REG_DQPEAK_R 0x0d
193#define MAS_REG_VOLUME_CONTROL 0x10
194#define MAS_REG_BALANCE 0x11
195#define MAS_REG_KAVC 0x12
196#define MAS_REG_KBASS 0x14
197#define MAS_REG_KTREBLE 0x15
198
199/* MAS3587F/MAS3539F commands */
200#define MAS_CMD_READ_ANCILLARY 0x50
201#define MAS_CMD_FAST_PRG_DL 0x60
202#define MAS_CMD_READ_IC_VER 0x70
203#define MAS_CMD_READ_REG 0xa0
204#define MAS_CMD_WRITE_REG 0xb0
205#define MAS_CMD_READ_D0_MEM 0xc0
206#define MAS_CMD_READ_D1_MEM 0xd0
207#define MAS_CMD_WRITE_D0_MEM 0xe0
208#define MAS_CMD_WRITE_D1_MEM 0xf0
209
210/* MAS3587F D0 memory cells */
211#if CONFIG_CODEC == MAS3587F
212#define MAS_D0_APP_SELECT 0x7f6
213#define MAS_D0_APP_RUNNING 0x7f7
214#define MAS_D0_ENCODER_CONTROL 0x7f0
215#define MAS_D0_IO_CONTROL_MAIN 0x7f1
216#define MAS_D0_INTERFACE_CONTROL 0x7f2
217#define MAS_D0_OFREQ_CONTROL 0x7f3
218#define MAS_D0_OUT_CLK_CONFIG 0x7f4
219#define MAS_D0_SPD_OUT_BITS 0x7f8
220#define MAS_D0_SOFT_MUTE 0x7f9
221#define MAS_D0_OUT_LL 0x7fc
222#define MAS_D0_OUT_LR 0x7fd
223#define MAS_D0_OUT_RL 0x7fe
224#define MAS_D0_OUT_RR 0x7ff
225#define MAS_D0_MPEG_FRAME_COUNT 0xfd0
226#define MAS_D0_MPEG_STATUS_1 0xfd1
227#define MAS_D0_MPEG_STATUS_2 0xfd2
228#define MAS_D0_CRC_ERROR_COUNT 0xfd3
229
230/* MAS3539F D0 memory cells */
231#elif CONFIG_CODEC == MAS3539F
232#define MAS_D0_APP_SELECT 0x34b
233#define MAS_D0_APP_RUNNING 0x34c
234/* no encoder :( */
235#define MAS_D0_IO_CONTROL_MAIN 0x346
236#define MAS_D0_INTERFACE_CONTROL 0x347
237#define MAS_D0_OFREQ_CONTROL 0x348
238#define MAS_D0_OUT_CLK_CONFIG 0x349
239#define MAS_D0_SPD_OUT_BITS 0x351
240#define MAS_D0_SOFT_MUTE 0x350
241#define MAS_D0_OUT_LL 0x354
242#define MAS_D0_OUT_LR 0x355
243#define MAS_D0_OUT_RL 0x356
244#define MAS_D0_OUT_RR 0x357
245#define MAS_D0_MPEG_FRAME_COUNT 0xfd0
246#define MAS_D0_MPEG_STATUS_1 0xfd1
247#define MAS_D0_MPEG_STATUS_2 0xfd2
248#define MAS_D0_CRC_ERROR_COUNT 0xfd3
249#endif
250
251/* MAS3587F and MAS3539F handle clipping prevention internally so we do not need
252 * the prescaler -> CLIPPING_CAP
253 */
254
255#define VOLUME_MIN -400
256#define VOLUME_MAX 600
257#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | BALANCE_CAP | CLIPPING_CAP)
258
259#endif /* CONFIG_CODEC */
260
261/* Function prototypes */
262#if CONFIG_CODEC == MAS3587F || CONFIG_CODEC == MAS3539F
263extern void audiohw_set_loudness(int value);
264extern void audiohw_set_avc(int value);
265extern void audiohw_set_mdb_strength(int value);
266extern void audiohw_set_mdb_harmonics(int value);
267extern void audiohw_set_mdb_center(int value);
268extern void audiohw_set_mdb_shape(int value);
269extern void audiohw_set_mdb_enable(int value);
270extern void audiohw_set_superbass(int value);
271extern void audiohw_set_balance(int val);
272extern void audiohw_set_pitch(unsigned long val);
273#endif
140 274
141#endif /* _MAS35XX_H */ 275#endif /* _MAS35XX_H */