summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2008-09-22 19:15:18 +0000
committerDave Chapman <dave@dchapman.com>2008-09-22 19:15:18 +0000
commit85807cd44ef931b25a283f8ddd733453e94f9966 (patch)
treea7245518ba1ae2566741990f55cae0bb5fab1772
parent80458b6222d417700eb4aaf1a9f71456f4512d28 (diff)
downloadrockbox-85807cd44ef931b25a283f8ddd733453e94f9966.tar.gz
rockbox-85807cd44ef931b25a283f8ddd733453e94f9966.zip
Trivial changes to make the main Rockbox builds for the Sansa m200 and Logik DAX ports compile. Note that some codecs are currently disabled (due to lowmem on these targets), but that needs more work and analysis to decide how much RAM we want to allocate to codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18566 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/SOURCES2
-rw-r--r--apps/codecs/SOURCES14
-rw-r--r--apps/keymaps/keymap-logikdax.c319
-rw-r--r--bootloader/telechips.c36
-rw-r--r--firmware/SOURCES4
-rw-r--r--firmware/export/config-logikdax.h22
-rw-r--r--firmware/export/config-m200.h15
-rw-r--r--firmware/target/arm/pcm-telechips.c4
-rw-r--r--firmware/target/arm/tcc77x/lcd-ssd1815.c17
-rw-r--r--firmware/target/arm/tcc77x/logikdax/audio-logikdax.c43
-rw-r--r--firmware/target/arm/tcc77x/m200/audio-m200.c43
-rw-r--r--firmware/target/arm/wmcodec-telechips.c2
-rw-r--r--tools/scramble.c6
13 files changed, 482 insertions, 45 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 419d24d7a8..eb09797719 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -200,4 +200,6 @@ keymaps/keymap-sa9200.c
200keymaps/keymap-hdd1630.c 200keymaps/keymap-hdd1630.c
201#elif CONFIG_KEYPAD == IAUDIO67_PAD 201#elif CONFIG_KEYPAD == IAUDIO67_PAD
202keymaps/keymap-iaudio67.c 202keymaps/keymap-iaudio67.c
203#elif CONFIG_KEYPAD == LOGIK_DAX_PAD
204keymaps/keymap-logikdax.c
203#endif 205#endif
diff --git a/apps/codecs/SOURCES b/apps/codecs/SOURCES
index 3038903f9e..bd82fcf2d6 100644
--- a/apps/codecs/SOURCES
+++ b/apps/codecs/SOURCES
@@ -5,25 +5,25 @@ mpa.c
5flac.c 5flac.c
6wav.c 6wav.c
7a52.c 7a52.c
8mpc.c
9wavpack.c 8wavpack.c
10#ifndef RB_PROFILE 9#ifndef RB_PROFILE
11alac.c 10alac.c
12#endif 11#endif
12#if MEMORYSIZE > 2
13mpc.c
13wma.c 14wma.c
14#if MEMORYSIZE > 1
15aac.c 15aac.c
16#endif 16sid.c
17ape.c 17ape.c
18nsf.c
19#endif
20spc.c
21asap.c
18mod.c 22mod.c
19shorten.c 23shorten.c
20aiff.c 24aiff.c
21speex.c 25speex.c
22sid.c
23adx.c 26adx.c
24nsf.c
25spc.c
26asap.c
27#if defined(HAVE_RECORDING) && !defined(SIMULATOR) 27#if defined(HAVE_RECORDING) && !defined(SIMULATOR)
28/* encoders */ 28/* encoders */
29aiff_enc.c 29aiff_enc.c
diff --git a/apps/keymaps/keymap-logikdax.c b/apps/keymaps/keymap-logikdax.c
new file mode 100644
index 0000000000..fdf51e1652
--- /dev/null
+++ b/apps/keymaps/keymap-logikdax.c
@@ -0,0 +1,319 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 Dave Chapman
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/* Button Code Definitions for Sandisk c200 target */
22
23#include "config.h"
24#include "action.h"
25#include "button.h"
26#include "settings.h"
27
28/* {Action Code, Button code, Prereq button code } */
29
30/*
31 * The format of the list is as follows
32 * { Action Code, Button code, Prereq button code }
33 * if there's no need to check the previous button's value, use BUTTON_NONE
34 * Insert LAST_ITEM_IN_LIST at the end of each mapping
35 */
36static const struct button_mapping button_context_standard[] = {
37 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
38 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
39
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42
43 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
45 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
46
47 { ACTION_STD_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
48 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
49// { ACTION_STD_QUICKSCREEN, BUTTON_REC|BUTTON_SELECT, BUTTON_NONE },
50
51 LAST_ITEM_IN_LIST
52}; /* button_context_standard */
53
54
55static const struct button_mapping button_context_wps[] = {
56 { ACTION_WPS_PLAY, BUTTON_POWERPLAY|BUTTON_REL, BUTTON_POWERPLAY },
57 { ACTION_WPS_STOP, BUTTON_POWERPLAY|BUTTON_REPEAT, BUTTON_POWERPLAY },
58
59 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
60 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
61 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
62
63 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
64 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
66
67 { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_MODE|BUTTON_RIGHT, BUTTON_MODE },
68 { ACTION_WPS_ABSETA_PREVDIR,BUTTON_MODE|BUTTON_LEFT, BUTTON_MODE },
69 { ACTION_WPS_ABRESET, BUTTON_MODE|BUTTON_UP, BUTTON_MODE },
70
71 { ACTION_WPS_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
72 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
73#if 0
74 { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT },
75 { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT },
76 { ACTION_WPS_CONTEXT, BUTTON_VOLDOWN|BUTTON_REL, BUTTON_VOLDOWN },
77 { ACTION_WPS_QUICKSCREEN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_VOLDOWN },
78#endif
79
80 LAST_ITEM_IN_LIST
81}; /* button_context_wps */
82
83static const struct button_mapping button_context_settings[] = {
84 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE },
85 { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE },
86
87 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
88 { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
89
90 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
91 { ACTION_SETTINGS_DECREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
92
93 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
94 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
95
96 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
97 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
98
99 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
100}; /* button_context_settings */
101
102static const struct button_mapping button_context_list[] = {
103 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
104}; /* button_context_list */
105
106static const struct button_mapping button_context_tree[] = {
107 // { ACTION_TREE_WPS, BUTTON_REC|BUTTON_VOLUP, BUTTON_REC },
108 // { ACTION_TREE_STOP, BUTTON_REC|BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_REC|BUTTON_VOLUP },
109
110 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
111}; /* button_context_tree */
112
113static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
114 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
115 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
116 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
117 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
118 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
119
120 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
121 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
122 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
123 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
124
125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
126}; /* button_context_listtree_scroll_without_combo */
127
128static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
129 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
130
131// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_REC },
132// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
133
134// { ACTION_TREE_PGRIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_REC },
135// { ACTION_TREE_PGRIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE },
136
137 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
138}; /* button_context_listtree_scroll_with_combo */
139
140static const struct button_mapping button_context_yesno[] = {
141 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
142
143 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
144}; /* button_context_settings_yesno */
145
146static const struct button_mapping button_context_quickscreen[] = {
147 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
148 { ACTION_STD_CANCEL, BUTTON_MODE|BUTTON_REL, BUTTON_NONE },
149
150 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
151 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
152
153 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
154 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
155
156 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
157 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
158
159 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
160 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
161
162 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
163}; /* button_context_quickscreen */
164
165static const struct button_mapping button_context_settings_right_is_inc[] = {
166 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
167 { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
168
169 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
170 { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
171
172 { ACTION_STD_CANCEL, BUTTON_MODE, BUTTON_NONE },
173
174 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
175}; /* button_context_settings_right_is_inc */
176
177static const struct button_mapping button_context_pitchscreen[] = {
178 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
179 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
180
181 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
182 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
183
184 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
185 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
186
187 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
188 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
189
190 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE },
191 { ACTION_PS_EXIT, BUTTON_MODE, BUTTON_NONE },
192
193 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
194}; /* button_context_pitchscreen */
195
196/** Recording Screen **/
197#ifdef HAVE_RECORDING
198static const struct button_mapping button_context_recscreen[] = {
199 { ACTION_STD_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
200 { ACTION_REC_PAUSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
201 { ACTION_STD_CANCEL, BUTTON_MODE|BUTTON_REPEAT, BUTTON_NONE },
202 { ACTION_REC_NEWFILE, BUTTON_REC|BUTTON_REL, BUTTON_REC },
203
204 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
205 { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
206 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
207 { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
208
209 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
210}; /* button_context_recscreen */
211#endif
212
213/** FM Radio Screen **/
214#if CONFIG_TUNER
215static const struct button_mapping button_context_radio[] = {
216 { ACTION_NONE, BUTTON_UP, BUTTON_NONE },
217 { ACTION_FM_MENU, BUTTON_DOWN, BUTTON_NONE },
218 { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE },
219 { ACTION_FM_STOP, BUTTON_POWERPLAY|BUTTON_REPEAT, BUTTON_POWERPLAY },
220 { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE },
221 { ACTION_FM_EXIT, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
222 { ACTION_FM_PLAY, BUTTON_POWERPLAY|BUTTON_REL, BUTTON_POWERPLAY },
223 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
224 { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
225 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
226 { ACTION_SETTINGS_DECREPEAT,BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
227
228 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
229}; /* button_context_radio */
230#endif
231
232static const struct button_mapping button_context_keyboard[] = {
233 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
234 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
235 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
236 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
237
238// { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_NONE },
239// { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT,BUTTON_NONE },
240// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE },
241// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE },
242
243 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
244 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
245 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
246 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
247
248// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN, BUTTON_NONE },
249// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN|BUTTON_REPEAT,BUTTON_NONE },
250
251// { ACTION_KBD_PAGE_FLIP, BUTTON_REC|BUTTON_SELECT, BUTTON_REC },
252
253 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
254 { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
255 { ACTION_KBD_ABORT, BUTTON_MODE, BUTTON_NONE },
256
257 LAST_ITEM_IN_LIST
258}; /* button_context_keyboard */
259
260static const struct button_mapping button_context_bmark[] = {
261// { ACTION_BMS_DELETE, BUTTON_REC, BUTTON_NONE },
262
263 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
264}; /* button_context_bmark */
265
266/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
267const struct button_mapping* get_context_mapping(int context)
268{
269 switch (context)
270 {
271 case CONTEXT_STD:
272 return button_context_standard;
273
274 case CONTEXT_WPS:
275 return button_context_wps;
276
277 case CONTEXT_LIST:
278 return button_context_list;
279 case CONTEXT_TREE:
280 case CONTEXT_MAINMENU:
281 if (global_settings.hold_lr_for_scroll_in_list)
282 return button_context_listtree_scroll_without_combo;
283 else
284 return button_context_listtree_scroll_with_combo;
285 case CONTEXT_CUSTOM|CONTEXT_TREE:
286 return button_context_tree;
287
288 case CONTEXT_SETTINGS:
289 case CONTEXT_SETTINGS_TIME:
290 return button_context_settings;
291 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
292 case CONTEXT_SETTINGS_COLOURCHOOSER:
293 case CONTEXT_SETTINGS_EQ:
294 return button_context_settings_right_is_inc;
295
296 case CONTEXT_YESNOSCREEN:
297 return button_context_yesno;
298#if CONFIG_TUNER
299 case CONTEXT_FM:
300 return button_context_radio;
301#endif
302 case CONTEXT_BOOKMARKSCREEN:
303 return button_context_bmark;
304 case CONTEXT_QUICKSCREEN:
305 return button_context_quickscreen;
306 case CONTEXT_PITCHSCREEN:
307 return button_context_pitchscreen;
308#ifdef HAVE_RECORDING
309 case CONTEXT_RECSCREEN:
310 return button_context_recscreen;
311#endif
312 case CONTEXT_KEYBOARD:
313 return button_context_keyboard;
314
315 default:
316 return button_context_standard;
317 }
318 return button_context_standard;
319}
diff --git a/bootloader/telechips.c b/bootloader/telechips.c
index 7f9a3556c0..a4f4d36c11 100644
--- a/bootloader/telechips.c
+++ b/bootloader/telechips.c
@@ -44,16 +44,12 @@
44#include "file.h" 44#include "file.h"
45#include "common.h" 45#include "common.h"
46 46
47#if defined(COWON_D2) || defined(IAUDIO_7) && defined(TCCBOOT) 47#if defined(COWON_D2) || defined(IAUDIO_7)
48# define REAL_BOOT 48#include "pcf50606.h"
49#endif 49#endif
50 50
51#ifdef REAL_BOOT 51/* Address to load main Rockbox image to */
52# if defined(COWON_D2) || defined(IAUDIO_7) 52#define LOAD_ADDRESS 0x20000000 /* DRAM_START */
53# include "pcf50606.h"
54# endif
55# define LOAD_ADDRESS 0x20000000 /* DRAM_START */
56#endif
57 53
58char version[] = APPSVERSION; 54char version[] = APPSVERSION;
59 55
@@ -70,13 +66,12 @@ void show_debug_screen(void)
70 int count = 0; 66 int count = 0;
71 bool do_power_off = false; 67 bool do_power_off = false;
72 68
73 /*lcd_puts_scroll(0,0,"this is a very long line to test scrolling");*/ 69 lcd_puts_scroll(0,0,"this is a very long line to test scrolling");
74 while(!do_power_off) { 70 while (!do_power_off) {
75
76 line = 1; 71 line = 1;
77 button = button_get(false); 72 button = button_get(false);
78 73
79 /* Power-off if POWER button has been held for a time 74 /* Power-off if POWER button has been held for a time
80 This loop is currently running at about 100 iterations/second 75 This loop is currently running at about 100 iterations/second
81 */ 76 */
82 if (button & POWEROFF_BUTTON) { 77 if (button & POWEROFF_BUTTON) {
@@ -86,7 +81,7 @@ void show_debug_screen(void)
86 } else { 81 } else {
87 power_count = 0; 82 power_count = 0;
88 } 83 }
89#ifdef BUTTON_SELECT 84#if 0
90 if (button & BUTTON_SELECT){ 85 if (button & BUTTON_SELECT){
91 _backlight_off(); 86 _backlight_off();
92 } 87 }
@@ -94,17 +89,19 @@ void show_debug_screen(void)
94 _backlight_on(); 89 _backlight_on();
95 } 90 }
96#endif 91#endif
97 /*printf("Btn: 0x%08x",button); 92 printf("Btn: 0x%08x",button);
93#if 0
98 printf("Tick: %d",current_tick); 94 printf("Tick: %d",current_tick);
99 printf("GPIOA: 0x%08x",GPIOA); 95 printf("GPIOA: 0x%08x",GPIOA);
100 printf("GPIOB: 0x%08x",GPIOB); 96 printf("GPIOB: 0x%08x",GPIOB);
101 printf("GPIOC: 0x%08x",GPIOC); 97 printf("GPIOC: 0x%08x",GPIOC);
102 printf("GPIOD: 0x%08x",GPIOD); 98 printf("GPIOD: 0x%08x",GPIOD);
103 printf("GPIOE: 0x%08x",GPIOE);*/ 99 printf("GPIOE: 0x%08x",GPIOE);
100#endif
104 101
105#if 0 102#if 0
106 int i; 103 int i;
107 for (i = 1; i<4; i++) 104 for (i = 0; i<4; i++)
108 { 105 {
109 printf("ADC%d: 0x%04x",i,adc_read(i)); 106 printf("ADC%d: 0x%04x",i,adc_read(i));
110 } 107 }
@@ -124,9 +121,10 @@ void show_debug_screen(void)
124 121
125 printf("(NOT) POWERED OFF"); 122 printf("(NOT) POWERED OFF");
126 while (true); 123 while (true);
127
128} 124}
125
129#else /* !CPU_TCC77X */ 126#else /* !CPU_TCC77X */
127
130void show_debug_screen(void) 128void show_debug_screen(void)
131{ 129{
132 int button; 130 int button;
@@ -178,7 +176,7 @@ void show_debug_screen(void)
178 176
179void* main(void) 177void* main(void)
180{ 178{
181#ifdef REAL_BOOT 179#ifdef TCCBOOT
182 int rc; 180 int rc;
183 unsigned char* loadbuffer = (unsigned char*)LOAD_ADDRESS; 181 unsigned char* loadbuffer = (unsigned char*)LOAD_ADDRESS;
184#endif 182#endif
@@ -203,7 +201,7 @@ void* main(void)
203 201
204/* Only load the firmware if TCCBOOT is defined - this ensures SDRAM_START is 202/* Only load the firmware if TCCBOOT is defined - this ensures SDRAM_START is
205 available for loading the firmware. Otherwise display the debug screen. */ 203 available for loading the firmware. Otherwise display the debug screen. */
206#ifdef REAL_BOOT 204#ifdef TCCBOOT
207 printf("Rockbox boot loader"); 205 printf("Rockbox boot loader");
208 printf("Version %s", version); 206 printf("Version %s", version);
209 207
diff --git a/firmware/SOURCES b/firmware/SOURCES
index a120c88fa2..6717ccaf93 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -987,8 +987,10 @@ target/arm/tcc77x/usb-tcc77x.c
987target/arm/tcc77x/logikdax/button-logikdax.c 987target/arm/tcc77x/logikdax/button-logikdax.c
988target/arm/tcc77x/logikdax/power-logikdax.c 988target/arm/tcc77x/logikdax/power-logikdax.c
989#ifndef BOOTLOADER 989#ifndef BOOTLOADER
990target/arm/wmcodec-telechips.c
990target/arm/tcc77x/debug-tcc77x.c 991target/arm/tcc77x/debug-tcc77x.c
991target/arm/pcm-telechips.c 992target/arm/pcm-telechips.c
993target/arm/tcc77x/logikdax/audio-logikdax.c
992#endif /* BOOTLOADER */ 994#endif /* BOOTLOADER */
993#endif /* SIMULATOR */ 995#endif /* SIMULATOR */
994#endif /* LOGIK_DAX */ 996#endif /* LOGIK_DAX */
@@ -1007,8 +1009,10 @@ target/arm/tcc77x/usb-tcc77x.c
1007target/arm/tcc77x/m200/button-m200.c 1009target/arm/tcc77x/m200/button-m200.c
1008target/arm/tcc77x/m200/power-m200.c 1010target/arm/tcc77x/m200/power-m200.c
1009#ifndef BOOTLOADER 1011#ifndef BOOTLOADER
1012target/arm/wmcodec-telechips.c
1010target/arm/tcc77x/debug-tcc77x.c 1013target/arm/tcc77x/debug-tcc77x.c
1011target/arm/pcm-telechips.c 1014target/arm/pcm-telechips.c
1015target/arm/tcc77x/m200/audio-m200.c
1012#endif /* BOOTLOADER */ 1016#endif /* BOOTLOADER */
1013#endif /* SIMULATOR */ 1017#endif /* SIMULATOR */
1014#endif /* SANSA_M200 */ 1018#endif /* SANSA_M200 */
diff --git a/firmware/export/config-logikdax.h b/firmware/export/config-logikdax.h
index c66a2ab581..4b205de425 100644
--- a/firmware/export/config-logikdax.h
+++ b/firmware/export/config-logikdax.h
@@ -32,6 +32,8 @@
32/* define this if you would like tagcache to build on this target */ 32/* define this if you would like tagcache to build on this target */
33#define HAVE_TAGCACHE 33#define HAVE_TAGCACHE
34 34
35#define HAVE_FAT16SUPPORT
36
35/* define this if you have a flash memory storage */ 37/* define this if you have a flash memory storage */
36#define HAVE_FLASH_STORAGE 38#define HAVE_FLASH_STORAGE
37 39
@@ -54,14 +56,22 @@
54/* Define this if you have a software controlled poweroff */ 56/* Define this if you have a software controlled poweroff */
55#define HAVE_SW_POWEROFF 57#define HAVE_SW_POWEROFF
56 58
59/* The number of bytes reserved for loadable codecs */
60#define CODEC_SIZE 0x9c000
61
57/* The number of bytes reserved for loadable plugins */ 62/* The number of bytes reserved for loadable plugins */
58#define PLUGIN_BUFFER_SIZE 0x8000 63#define PLUGIN_BUFFER_SIZE 0x8c000
59 64
60#define AB_REPEAT_ENABLE 1 65#define AB_REPEAT_ENABLE 1
61 66
62/* Define this if you do software codec */ 67/* Define this if you do software codec */
63#define CONFIG_CODEC SWCODEC 68#define CONFIG_CODEC SWCODEC
64 69
70/* The DAX uses built-in WM8731 codec */
71#define HAVE_WM8731
72/* Codec is slave on serial bus */
73#define CODEC_SLAVE
74
65/* Define this for LCD backlight available */ 75/* Define this for LCD backlight available */
66#define HAVE_BACKLIGHT 76#define HAVE_BACKLIGHT
67 77
@@ -109,4 +119,14 @@
109#define BOOTFILE "rockbox." BOOTFILE_EXT 119#define BOOTFILE "rockbox." BOOTFILE_EXT
110#define BOOTDIR "/" 120#define BOOTDIR "/"
111 121
122#define IBSS_ATTR_VOICE_STACK
123#define ICODE_ATTR_TREMOR_NOT_MDCT
124#define ICODE_ATTR_TREMOR_MDCT
125#define ICODE_ATTR_FLAC
126#define IBSS_ATTR_FLAC_DECODED0
127#define ICONST_ATTR_MPA_HUFFMAN
128#define IBSS_ATTR_MPC_SAMPLE_BUF
129#define ICODE_ATTR_ALAC
130#define IBSS_ATTR_SHORTEN_DECODED0
131
112#endif /* SIMULATOR */ 132#endif /* SIMULATOR */
diff --git a/firmware/export/config-m200.h b/firmware/export/config-m200.h
index f7ab78d87e..eeac509970 100644
--- a/firmware/export/config-m200.h
+++ b/firmware/export/config-m200.h
@@ -57,8 +57,11 @@
57/* Define this if you have a software controlled poweroff */ 57/* Define this if you have a software controlled poweroff */
58#define HAVE_SW_POWEROFF 58#define HAVE_SW_POWEROFF
59 59
60/* The number of bytes reserved for loadable codecs */
61#define CODEC_SIZE 0x20000
62
60/* The number of bytes reserved for loadable plugins */ 63/* The number of bytes reserved for loadable plugins */
61#define PLUGIN_BUFFER_SIZE 0x8000 64#define PLUGIN_BUFFER_SIZE 0x10000
62 65
63#define AB_REPEAT_ENABLE 1 66#define AB_REPEAT_ENABLE 1
64 67
@@ -118,4 +121,14 @@
118#define BOOTFILE "rockbox." BOOTFILE_EXT 121#define BOOTFILE "rockbox." BOOTFILE_EXT
119#define BOOTDIR "/" 122#define BOOTDIR "/"
120 123
124#define IBSS_ATTR_VOICE_STACK
125#define ICODE_ATTR_TREMOR_NOT_MDCT
126#define ICODE_ATTR_TREMOR_MDCT
127#define ICODE_ATTR_FLAC
128#define IBSS_ATTR_FLAC_DECODED0
129#define ICONST_ATTR_MPA_HUFFMAN
130#define IBSS_ATTR_MPC_SAMPLE_BUF
131#define ICODE_ATTR_ALAC
132#define IBSS_ATTR_SHORTEN_DECODED0
133
121#endif /* SIMULATOR */ 134#endif /* SIMULATOR */
diff --git a/firmware/target/arm/pcm-telechips.c b/firmware/target/arm/pcm-telechips.c
index 63f50f7d78..b3fd9216dc 100644
--- a/firmware/target/arm/pcm-telechips.c
+++ b/firmware/target/arm/pcm-telechips.c
@@ -94,6 +94,10 @@ void pcm_play_dma_init(void)
94 BCLKCTR |= DEV_DAI; 94 BCLKCTR |= DEV_DAI;
95 /* Master mode, 256->64fs, 16bit LSB*/ 95 /* Master mode, 256->64fs, 16bit LSB*/
96 DAMR = 0x3cce20; 96 DAMR = 0x3cce20;
97#elif defined(LOGIK_DAX)
98 /* TODO */
99#elif defined(SANSA_M200)
100 /* TODO */
97#else 101#else
98#error "Target isn't supported" 102#error "Target isn't supported"
99#endif 103#endif
diff --git a/firmware/target/arm/tcc77x/lcd-ssd1815.c b/firmware/target/arm/tcc77x/lcd-ssd1815.c
index a6e4481fb2..b41c8d26ef 100644
--- a/firmware/target/arm/tcc77x/lcd-ssd1815.c
+++ b/firmware/target/arm/tcc77x/lcd-ssd1815.c
@@ -129,21 +129,8 @@ void lcd_set_invert_display(bool yesno)
129/* turn the display upside down (call lcd_update() afterwards) */ 129/* turn the display upside down (call lcd_update() afterwards) */
130void lcd_set_flip(bool yesno) 130void lcd_set_flip(bool yesno)
131{ 131{
132 /* TODO: flip mode isn't working. The commands in the else part of 132 (void)yesno;
133 this function are how the original firmware inits the LCD */ 133 /* TODO */
134
135 if (yesno)
136 {
137 lcd_write_command(LCD_SET_SEGMENT_REMAP | 0x01);
138 lcd_write_command(LCD_SET_COM_OUTPUT_SCAN_DIRECTION);
139 xoffset = 132 - LCD_WIDTH; /* 132 colums minus the 128 we have */
140 }
141 else
142 {
143 lcd_write_command(LCD_SET_SEGMENT_REMAP);
144 lcd_write_command(LCD_SET_COM_OUTPUT_SCAN_DIRECTION | 0x08);
145 xoffset = 0;
146 }
147} 134}
148 135
149 136
diff --git a/firmware/target/arm/tcc77x/logikdax/audio-logikdax.c b/firmware/target/arm/tcc77x/logikdax/audio-logikdax.c
new file mode 100644
index 0000000000..bd85e0b573
--- /dev/null
+++ b/firmware/target/arm/tcc77x/logikdax/audio-logikdax.c
@@ -0,0 +1,43 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 by Michael Sevakis
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#include "system.h"
22#include "cpu.h"
23#include "audio.h"
24#include "sound.h"
25
26int audio_channels = 2;
27int audio_output_source = AUDIO_SRC_PLAYBACK;
28
29void audiohw_enable_output(bool on)
30{
31 (void)on;
32}
33
34void audio_set_output_source(int source)
35{
36 (void)source;
37}
38
39void audio_input_mux(int source, unsigned flags)
40{
41 (void)source;
42 (void)flags;
43}
diff --git a/firmware/target/arm/tcc77x/m200/audio-m200.c b/firmware/target/arm/tcc77x/m200/audio-m200.c
new file mode 100644
index 0000000000..bd85e0b573
--- /dev/null
+++ b/firmware/target/arm/tcc77x/m200/audio-m200.c
@@ -0,0 +1,43 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 by Michael Sevakis
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#include "system.h"
22#include "cpu.h"
23#include "audio.h"
24#include "sound.h"
25
26int audio_channels = 2;
27int audio_output_source = AUDIO_SRC_PLAYBACK;
28
29void audiohw_enable_output(bool on)
30{
31 (void)on;
32}
33
34void audio_set_output_source(int source)
35{
36 (void)source;
37}
38
39void audio_input_mux(int source, unsigned flags)
40{
41 (void)source;
42 (void)flags;
43}
diff --git a/firmware/target/arm/wmcodec-telechips.c b/firmware/target/arm/wmcodec-telechips.c
index 5fcc46154b..de3a29c8c7 100644
--- a/firmware/target/arm/wmcodec-telechips.c
+++ b/firmware/target/arm/wmcodec-telechips.c
@@ -34,7 +34,7 @@
34#if defined(COWON_D2) 34#if defined(COWON_D2)
35/* The D2's audio codec uses an I2C address of 0x34 */ 35/* The D2's audio codec uses an I2C address of 0x34 */
36#define I2C_AUDIO_ADDRESS 0x34 36#define I2C_AUDIO_ADDRESS 0x34
37#elif defined (IAUDIO_7) 37#elif defined (IAUDIO_7) || defined(LOGIK_DAX) || defined(SANSA_M200)
38#define I2C_AUDIO_ADDRESS 0x34 38#define I2C_AUDIO_ADDRESS 0x34
39#else 39#else
40#error wmcodec not implemented for this target! 40#error wmcodec not implemented for this target!
diff --git a/tools/scramble.c b/tools/scramble.c
index ffcde9328b..3b2ff67291 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -122,7 +122,7 @@ void usage(void)
122 "\t (X values: h100, h120, h140, h300, ipco, nano, ipvd, mn2g\n" 122 "\t (X values: h100, h120, h140, h300, ipco, nano, ipvd, mn2g\n"
123 "\t ip3g, ip4g, mini, iax5, iam5, iam3, h10, h10_5gb,\n" 123 "\t ip3g, ip4g, mini, iax5, iam5, iam3, h10, h10_5gb,\n"
124 "\t tpj2, c200, e200, giga, gigs, m100, m500, d2,\n"); 124 "\t tpj2, c200, e200, giga, gigs, m100, m500, d2,\n");
125 printf("\t 9200, 1630)\n"); 125 printf("\t 9200, 1630, ldax, m200)\n");
126 printf("\nNo option results in Archos standard player/recorder format.\n"); 126 printf("\nNo option results in Archos standard player/recorder format.\n");
127 127
128 exit(1); 128 exit(1);
@@ -277,6 +277,10 @@ int main (int argc, char** argv)
277 modelnum = 25; 277 modelnum = 25;
278 else if(!strcmp(&argv[1][5], "9200")) /* Philips SA9200 */ 278 else if(!strcmp(&argv[1][5], "9200")) /* Philips SA9200 */
279 modelnum = 26; 279 modelnum = 26;
280 else if (!strcmp(&argv[1][5], "ldax"))
281 modelnum = 27;
282 else if (!strcmp(&argv[1][5], "m200"))
283 modelnum = 29;
280 else if(!strcmp(&argv[1][5], "1630")) /* Philips HDD1630 */ 284 else if(!strcmp(&argv[1][5], "1630")) /* Philips HDD1630 */
281 modelnum = 31; 285 modelnum = 31;
282 else if (!strcmp(&argv[1][5], "i7")) 286 else if (!strcmp(&argv[1][5], "i7"))