summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2010-10-31 21:09:34 +0000
committerMarcin Bukat <marcin.bukat@gmail.com>2010-10-31 21:09:34 +0000
commit56c4e9fa600557242d8b78f5fd8e32c2245b76fc (patch)
treef8558778a302f89c3e819e66e86577a5e37c3660 /firmware/export
parent40ed5f57d9be61f1200026e9b0f944a9718111c1 (diff)
downloadrockbox-56c4e9fa600557242d8b78f5fd8e32c2245b76fc.tar.gz
rockbox-56c4e9fa600557242d8b78f5fd8e32c2245b76fc.zip
Separate mas35xx lowlevel stuff. Move SH specific bits to target tree. FS#11189 by me.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28425 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/audiohw.h3
-rw-r--r--firmware/export/dac3550a.h47
-rw-r--r--firmware/export/mas.h184
-rw-r--r--firmware/export/mas35xx.h162
-rw-r--r--firmware/export/mascodec.h43
5 files changed, 241 insertions, 198 deletions
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index 56f4d3dbea..930c671c20 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -59,6 +59,9 @@
59#include "as3514.h" 59#include "as3514.h"
60#elif defined(HAVE_MAS35XX) 60#elif defined(HAVE_MAS35XX)
61#include "mas35xx.h" 61#include "mas35xx.h"
62#if defined(HAVE_DAC3550A)
63#include "dac3550a.h"
64#endif /* HAVE_DAC3550A */
62#elif defined(HAVE_TSC2100) 65#elif defined(HAVE_TSC2100)
63#include "tsc2100.h" 66#include "tsc2100.h"
64#elif defined(HAVE_JZ4740_CODEC) 67#elif defined(HAVE_JZ4740_CODEC)
diff --git a/firmware/export/dac3550a.h b/firmware/export/dac3550a.h
new file mode 100644
index 0000000000..3744b221ed
--- /dev/null
+++ b/firmware/export/dac3550a.h
@@ -0,0 +1,47 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: dac.h 24158 2010-01-03 11:31:14Z Buschel $
9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef _DAC3550A_H_
22#define _DAC3550A_H_
23
24#include "config.h"
25
26/*
27 DAC I2C defs
28*/
29#define DAC_ADR 0x9a
30#define DAC_DEV_WRITE (DAC_ADR | 0x00)
31
32#define DAC_REG_WRITE 0xc0
33
34/* registers..*/
35#define DAC_SR_REG 1
36#define DAC_AVOL 2
37#define DAC_GCFG 3
38
39/* function prototypes */
40extern int tenthdb2reg(int db);
41extern int dac_volume(unsigned int left, unsigned int right, bool deemph);
42extern void dac_enable(bool enable);
43extern void dac_line_in(bool enable);
44extern void dac_init(void);
45
46#endif /* _DAC3550A_H_ */
47
diff --git a/firmware/export/mas.h b/firmware/export/mas.h
deleted file mode 100644
index 9cbe970b94..0000000000
--- a/firmware/export/mas.h
+++ /dev/null
@@ -1,184 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef _MAS_H_
22#define _MAS_H_
23
24#define MAS_BANK_D0 0
25#define MAS_BANK_D1 1
26
27#define MAX_PEAK 0x8000
28
29/*
30 MAS I2C defs
31*/
32#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
33#define MAS_ADR 0x3c
34#define MAS_DEV_WRITE (MAS_ADR | 0x00)
35#define MAS_DEV_READ (MAS_ADR | 0x01)
36
37#elif CONFIG_CODEC == MAS3507D
38#define MAS_ADR 0x3a
39#define MAS_DEV_WRITE (MAS_ADR | 0x00)
40#define MAS_DEV_READ (MAS_ADR | 0x01)
41#endif
42
43/* registers..*/
44#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
45#define MAS_DATA_WRITE 0x68
46#define MAS_DATA_READ 0x69
47#define MAS_CODEC_WRITE 0x6c
48#define MAS_CODEC_READ 0x6d
49#define MAS_CONTROL 0x6a
50#define MAS_DCCF 0x76
51#define MAS_DCFR 0x77
52
53#elif CONFIG_CODEC == MAS3507D
54#define MAS_DATA_WRITE 0x68
55#define MAS_DATA_READ 0x69
56#define MAS_CONTROL 0x6a
57#endif
58
59/*
60 * MAS register
61 */
62#define MAS_REG_DCCF 0x8e
63#define MAS_REG_MUTE 0xaa
64#define MAS_REG_PIODATA 0xc8
65#define MAS_REG_StartUpConfig 0xe6
66#define MAS_REG_KPRESCALE 0xe7
67#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
68#define MAS_REG_KMDB_SWITCH 0x21
69#define MAS_REG_KMDB_STR 0x22
70#define MAS_REG_KMDB_HAR 0x23
71#define MAS_REG_KMDB_FC 0x24
72#define MAS_REG_KLOUDNESS 0x1e
73#define MAS_REG_QPEAK_L 0x0a
74#define MAS_REG_QPEAK_R 0x0b
75#define MAS_REG_DQPEAK_L 0x0c
76#define MAS_REG_DQPEAK_R 0x0d
77#define MAS_REG_VOLUME_CONTROL 0x10
78#define MAS_REG_BALANCE 0x11
79#define MAS_REG_KAVC 0x12
80#define MAS_REG_KBASS 0x14
81#define MAS_REG_KTREBLE 0x15
82
83#elif CONFIG_CODEC == MAS3507D
84#define MAS_REG_KBASS 0x6b
85#define MAS_REG_KTREBLE 0x6f
86#endif
87
88/*
89 * MAS commands
90 */
91#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
92#define MAS_CMD_READ_ANCILLARY 0x50
93#define MAS_CMD_FAST_PRG_DL 0x60
94#define MAS_CMD_READ_IC_VER 0x70
95#define MAS_CMD_READ_REG 0xa0
96#define MAS_CMD_WRITE_REG 0xb0
97#define MAS_CMD_READ_D0_MEM 0xc0
98#define MAS_CMD_READ_D1_MEM 0xd0
99#define MAS_CMD_WRITE_D0_MEM 0xe0
100#define MAS_CMD_WRITE_D1_MEM 0xf0
101
102#elif CONFIG_CODEC == MAS3507D
103#define MAS_CMD_READ_ANCILLARY 0x30
104#define MAS_CMD_WRITE_REG 0x90
105#define MAS_CMD_WRITE_D0_MEM 0xa0
106#define MAS_CMD_WRITE_D1_MEM 0xb0
107#define MAS_CMD_READ_REG 0xd0
108#define MAS_CMD_READ_D0_MEM 0xe0
109#define MAS_CMD_READ_D1_MEM 0xf0
110#endif
111
112/*
113 * MAS D0 memory cells (MAS3587F / MAS3539F)
114 */
115#if CONFIG_CODEC == MAS3587F
116#define MAS_D0_APP_SELECT 0x7f6
117#define MAS_D0_APP_RUNNING 0x7f7
118#define MAS_D0_ENCODER_CONTROL 0x7f0
119#define MAS_D0_IO_CONTROL_MAIN 0x7f1
120#define MAS_D0_INTERFACE_CONTROL 0x7f2
121#define MAS_D0_OFREQ_CONTROL 0x7f3
122#define MAS_D0_OUT_CLK_CONFIG 0x7f4
123#define MAS_D0_SPD_OUT_BITS 0x7f8
124#define MAS_D0_SOFT_MUTE 0x7f9
125#define MAS_D0_OUT_LL 0x7fc
126#define MAS_D0_OUT_LR 0x7fd
127#define MAS_D0_OUT_RL 0x7fe
128#define MAS_D0_OUT_RR 0x7ff
129#define MAS_D0_MPEG_FRAME_COUNT 0xfd0
130#define MAS_D0_MPEG_STATUS_1 0xfd1
131#define MAS_D0_MPEG_STATUS_2 0xfd2
132#define MAS_D0_CRC_ERROR_COUNT 0xfd3
133
134#elif CONFIG_CODEC == MAS3539F
135#define MAS_D0_APP_SELECT 0x34b
136#define MAS_D0_APP_RUNNING 0x34c
137/* no encoder :( */
138#define MAS_D0_IO_CONTROL_MAIN 0x346
139#define MAS_D0_INTERFACE_CONTROL 0x347
140#define MAS_D0_OFREQ_CONTROL 0x348
141#define MAS_D0_OUT_CLK_CONFIG 0x349
142#define MAS_D0_SPD_OUT_BITS 0x351
143#define MAS_D0_SOFT_MUTE 0x350
144#define MAS_D0_OUT_LL 0x354
145#define MAS_D0_OUT_LR 0x355
146#define MAS_D0_OUT_RL 0x356
147#define MAS_D0_OUT_RR 0x357
148#define MAS_D0_MPEG_FRAME_COUNT 0xfd0
149#define MAS_D0_MPEG_STATUS_1 0xfd1
150#define MAS_D0_MPEG_STATUS_2 0xfd2
151#define MAS_D0_CRC_ERROR_COUNT 0xfd3
152
153#elif CONFIG_CODEC == MAS3507D
154#define MAS_D0_MPEG_FRAME_COUNT 0x300
155#define MAS_D0_MPEG_STATUS_1 0x301
156#define MAS_D0_MPEG_STATUS_2 0x302
157#define MAS_D0_CRC_ERROR_COUNT 0x303
158#define MAS_D0_OUT_LL 0x7f8
159#define MAS_D0_OUT_LR 0x7f9
160#define MAS_D0_OUT_RL 0x7fa
161#define MAS_D0_OUT_RR 0x7fb
162
163#endif
164
165int mas_default_read(unsigned short *buf);
166int mas_run(unsigned short address);
167int mas_readmem(int bank, int addr, unsigned long* dest, int len);
168int mas_writemem(int bank, int addr, const unsigned long* src, int len);
169int mas_readreg(int reg);
170int mas_writereg(int reg, unsigned int val);
171void mas_reset(void);
172int mas_direct_config_read(unsigned char reg);
173int mas_direct_config_write(unsigned char reg, unsigned int val);
174int mas_codec_writereg(int reg, unsigned int val);
175int mas_codec_readreg(int reg);
176unsigned long mas_readver(void);
177
178#endif
179
180#if CONFIG_TUNER & S1A0903X01
181void mas_store_pllfreq(int freq);
182int mas_get_pllfreq(void);
183#endif
184
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 */
diff --git a/firmware/export/mascodec.h b/firmware/export/mascodec.h
new file mode 100644
index 0000000000..82a71e30c8
--- /dev/null
+++ b/firmware/export/mascodec.h
@@ -0,0 +1,43 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: mas.h 24154 2010-01-03 10:27:43Z Buschel $
9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef _MASCODEC_H_
22#define _MASCODEC_H_
23
24int mas_default_read(unsigned short *buf);
25int mas_run(unsigned short address);
26int mas_readmem(int bank, int addr, unsigned long* dest, int len);
27int mas_writemem(int bank, int addr, const unsigned long* src, int len);
28int mas_readreg(int reg);
29int mas_writereg(int reg, unsigned int val);
30void mas_reset(void);
31int mas_direct_config_read(unsigned char reg);
32int mas_direct_config_write(unsigned char reg, unsigned int val);
33int mas_codec_writereg(int reg, unsigned int val);
34int mas_codec_readreg(int reg);
35unsigned long mas_readver(void);
36
37#endif
38
39#if CONFIG_TUNER & S1A0903X01
40void mas_store_pllfreq(int freq);
41int mas_get_pllfreq(void);
42#endif
43