? build ? tools/codepages ? tools/rdf2binary Index: apps/debug_menu.c =================================================================== RCS file: /cvsroot/rockbox/apps/debug_menu.c,v retrieving revision 1.167 diff -u -r1.167 debug_menu.c --- apps/debug_menu.c 17 Feb 2006 22:38:38 -0000 1.167 +++ apps/debug_menu.c 20 Feb 2006 00:18:29 -0000 @@ -1192,7 +1192,8 @@ break; #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ - (CONFIG_KEYPAD == IRIVER_H300_PAD) + (CONFIG_KEYPAD == IRIVER_H300_PAD) || \ + (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) case BUTTON_SELECT: #else case BUTTON_PLAY: Index: apps/logfdisp.c =================================================================== RCS file: /cvsroot/rockbox/apps/logfdisp.c,v retrieving revision 1.7 diff -u -r1.7 logfdisp.c --- apps/logfdisp.c 30 Jan 2006 21:12:27 -0000 1.7 +++ apps/logfdisp.c 20 Feb 2006 00:18:29 -0000 @@ -32,6 +32,8 @@ #if CONFIG_KEYPAD == IPOD_4G_PAD #define LOGF_BUTTON_QUIT BUTTON_MENU +#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD +#define LOGF_BUTTON_QUIT BUTTON_PLAY #else #define LOGF_BUTTON_QUIT BUTTON_OFF #endif Index: apps/pcmbuf.c =================================================================== RCS file: /cvsroot/rockbox/apps/pcmbuf.c,v retrieving revision 1.30 diff -u -r1.30 pcmbuf.c --- apps/pcmbuf.c 13 Feb 2006 17:08:53 -0000 1.30 +++ apps/pcmbuf.c 20 Feb 2006 00:18:29 -0000 @@ -729,7 +729,7 @@ pcmbuf_boost(true); crossfade_active = false; /* Pre-buffer 1s. */ - if (!LOW_DATA(4)) + if (!LOW_DATA(1)) { logf("pcm starting"); pcmbuf_play_start(); Index: apps/pcmbuf.h =================================================================== RCS file: /cvsroot/rockbox/apps/pcmbuf.h,v retrieving revision 1.11 diff -u -r1.11 pcmbuf.h --- apps/pcmbuf.h 7 Feb 2006 20:38:55 -0000 1.11 +++ apps/pcmbuf.h 20 Feb 2006 00:18:29 -0000 @@ -19,9 +19,9 @@ #ifndef PCMBUF_H #define PCMBUF_H -#define PCMBUF_TARGET_CHUNK 32768 /* This is the target fill size of chunks +#define PCMBUF_TARGET_CHUNK 16384 /* This is the target fill size of chunks on the pcm buffer */ -#define PCMBUF_MINAVG_CHUNK 24576 /* This is the minimum average size of +#define PCMBUF_MINAVG_CHUNK 12288 /* This is the minimum average size of chunks on the pcm buffer (or we run out of buffer descriptors, which is non-fatal) */ Index: apps/playback.c =================================================================== RCS file: /cvsroot/rockbox/apps/playback.c,v retrieving revision 1.213 diff -u -r1.213 playback.c --- apps/playback.c 7 Feb 2006 20:38:55 -0000 1.213 +++ apps/playback.c 20 Feb 2006 00:18:29 -0000 @@ -110,8 +110,8 @@ }; /* As defined in plugins/lib/xxx2wav.h */ -#define MALLOC_BUFSIZE (512*1024) -#define GUARD_BUFSIZE (32*1024) +#define MALLOC_BUFSIZE (40*1024) +#define GUARD_BUFSIZE (8*1024) /* As defined in plugin.lds */ #define CODEC_IRAM_ORIGIN 0x1000c000 @@ -132,7 +132,7 @@ /* Voice codec thread. */ static struct event_queue voice_codec_queue; /* Not enough IRAM for this. */ -static long voice_codec_stack[(DEFAULT_STACK_SIZE + 0x2000)/sizeof(long)] IBSS_ATTR; +static long voice_codec_stack[(DEFAULT_STACK_SIZE + 0x2000)/sizeof(long)]; static const char voice_codec_thread_name[] = "voice codec"; static struct mutex mutex_bufferfill; @@ -2462,7 +2462,8 @@ /* Buffer has to be at least 2s long. */ seconds += 2; logf("buf len: %d", seconds); - size = seconds * (NATIVE_FREQUENCY*4); + /* size = seconds * (NATIVE_FREQUENCY*4); */ + size = NATIVE_FREQUENCY*2; if (pcmbuf_get_bufsize() == size) return ; Index: apps/settings.c =================================================================== RCS file: /cvsroot/rockbox/apps/settings.c,v retrieving revision 1.363 diff -u -r1.363 settings.c --- apps/settings.c 19 Feb 2006 12:45:32 -0000 1.363 +++ apps/settings.c 20 Feb 2006 00:18:30 -0000 @@ -816,6 +816,8 @@ { int i; + return; + { int elapsed_secs; Index: apps/settings.h =================================================================== RCS file: /cvsroot/rockbox/apps/settings.h,v retrieving revision 1.202 diff -u -r1.202 settings.h --- apps/settings.h 17 Feb 2006 22:47:56 -0000 1.202 +++ apps/settings.h 20 Feb 2006 00:18:30 -0000 @@ -106,6 +106,7 @@ #define SETTINGS_INC BUTTON_UP #define SETTINGS_DEC BUTTON_DOWN #define SETTINGS_OK BUTTON_SELECT +#define SETTINGS_OK2 BUTTON_LEFT #define SETTINGS_CANCEL BUTTON_PLAY #define SETTINGS_PREV BUTTON_LEFT #define SETTINGS_NEXT BUTTON_RIGHT Index: apps/codecs/SOURCES =================================================================== RCS file: /cvsroot/rockbox/apps/codecs/SOURCES,v retrieving revision 1.8 diff -u -r1.8 SOURCES --- apps/codecs/SOURCES 1 Feb 2006 16:42:01 -0000 1.8 +++ apps/codecs/SOURCES 20 Feb 2006 00:18:30 -0000 @@ -1,15 +1,15 @@ #if CONFIG_CODEC == SWCODEC vorbis.c mpa.c -flac.c wav.c +/* flac.c */ a52.c -mpc.c +/* mpc.c */ wavpack.c -alac.c +/* alac.c */ #if MEMORYSIZE > 1 aac.c #endif -shorten.c +/* shorten.c */ aiff.c #endif Index: apps/plugins/plugin.lds =================================================================== RCS file: /cvsroot/rockbox/apps/plugins/plugin.lds,v retrieving revision 1.32 diff -u -r1.32 plugin.lds --- apps/plugins/plugin.lds 12 Feb 2006 23:16:05 -0000 1.32 +++ apps/plugins/plugin.lds 20 Feb 2006 00:18:30 -0000 @@ -34,8 +34,8 @@ #define IRAMSIZE 0xc000 #elif CONFIG_CPU == PNX0101 #define DRAMORIG 0xc00000 + STUBOFFSET -#define IRAMORIG 0x408000 -#define IRAMSIZE 0x8000 +#define IRAMORIG 0x407000 +#define IRAMSIZE 0x9000 #else #define DRAMORIG 0x09000000 + STUBOFFSET #endif Index: firmware/app.lds =================================================================== RCS file: /cvsroot/rockbox/firmware/app.lds,v retrieving revision 1.66 diff -u -r1.66 app.lds --- firmware/app.lds 12 Feb 2006 23:16:05 -0000 1.66 +++ firmware/app.lds 20 Feb 2006 00:18:30 -0000 @@ -129,7 +129,7 @@ #elif CONFIG_CPU==PNX0101 #define DRAMORIG 0xc00000 + STUBOFFSET #define IRAMORIG 0x400000 -#define IRAMSIZE 0x8000 +#define IRAMSIZE 0x7000 #else #define DRAMORIG 0x09000000 + STUBOFFSET #define IRAMORIG 0x0f000000 @@ -146,6 +146,9 @@ { DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE +#if CONFIG_CPU==PNX0101 + IRAM0 : ORIGIN = 0x0, LENGTH = IRAMSIZE +#endif } SECTIONS @@ -213,7 +216,12 @@ _vectorsstart = .; *(.vectors); _vectorsend = .; + *(.dmabuf) +#if CONFIG_CPU==PNX0101 + } >IRAM0 AT> DRAM +#else } AT> DRAM +#endif _vectorscopy = LOADADDR(.vectors); #endif Index: firmware/pcm_playback.c =================================================================== RCS file: /cvsroot/rockbox/firmware/pcm_playback.c,v retrieving revision 1.95 diff -u -r1.95 pcm_playback.c --- firmware/pcm_playback.c 19 Feb 2006 01:05:06 -0000 1.95 +++ firmware/pcm_playback.c 20 Feb 2006 00:18:30 -0000 @@ -33,6 +33,8 @@ #include "tlv320.h" #elif defined(HAVE_WM8731L) #include "wm8731l.h" +#elif CONFIG_CPU == PNX0101 +#include "pnx0101.h" #endif #include "system.h" #include "logf.h" @@ -627,13 +629,114 @@ #elif CONFIG_CPU == PNX0101 -/* TODO: Implement for iFP7xx - For now, just implement some dummy functions. -*/ +static bool pcm_playing; +static bool pcm_paused; + +unsigned short* p; +long p_size; + +/* the registered callback function to ask for more PCM data */ +static void (*callback_for_more)(unsigned char**, size_t*) IDATA_ATTR = NULL; + +#define DMA_BUF_SAMPLES 0x80 + +short __attribute__((section(".dmabuf"))) dma_buf_left[DMA_BUF_SAMPLES]; +short __attribute__((section(".dmabuf"))) dma_buf_right[DMA_BUF_SAMPLES]; + +static void fill_dma_buf(int offset) +{ + short *l, *r; + int i; + l = dma_buf_left + offset; + r = dma_buf_right + offset; + i = 0; + if (pcm_playing && !pcm_paused) + { + do + { + while (p_size) + { + if (i >= DMA_BUF_SAMPLES / 2) + return; + l[i] = *p++; + r[i] = *p++; + i++; + p_size -= 4; + } + if (callback_for_more) + callback_for_more((unsigned char**)&p,&p_size); + } + while (p_size); + pcm_playing = false; + } + + if (i < DMA_BUF_SAMPLES / 2) + { + memset(l + i, 0, sizeof(short) * (DMA_BUF_SAMPLES / 2 - i)); + memset(r + i, 0, sizeof(short) * (DMA_BUF_SAMPLES / 2 - i)); + } +} + +static void audio_irq(void) +{ + unsigned long st = DMAINTSTAT & ~DMAINTEN; + int i; + for (i = 0; i < 2; i++) + if (st & (1 << i)) { + fill_dma_buf((i == 1) ? 0 : DMA_BUF_SAMPLES / 2); + DMAINTSTAT = 1 << i; + } +} + +unsigned long physical_address(void *p) +{ + unsigned long adr = (unsigned long)p; + return (MMUBLOCK((adr >> 21) & 0xf) << 21) | (adr & ((1 << 21) - 1)); +} void pcm_init(void) { + int i; + pcm_playing = false; + pcm_paused = false; + + memset(dma_buf_left, 0, sizeof(dma_buf_left)); + memset(dma_buf_right, 0, sizeof(dma_buf_right)); + + for (i = 0; i < 8; i++) + { + DMASRC(i) = 0; + DMADEST(i) = 0; + DMALEN(i) = 0x1ffff; + DMAR0C(i) = 0; + DMAR10(i) = 0; + DMAR1C(i) = 0; + } + DMAINTSTAT = 0xc000ffff; + DMAINTEN = 0xc000ffff; + + DMASRC(0) = physical_address(dma_buf_left); + DMADEST(0) = 0x80200280; + DMALEN(0) = 0x7f; + DMAR1C(0) = 0; + DMAR0C(0) = 0x40408; + + DMASRC(1) = physical_address(dma_buf_right); + DMADEST(1) = 0x80200284; + DMALEN(1) = 0x7f; + DMAR1C(1) = 0; + DMAR0C(1) = 0x40409; + + pcm_playing = 0; + irq_set_int_handler(0x1b, audio_irq); + irq_enable_int(0x1b); + + DMAINTSTAT = 1; + DMAINTSTAT = 2; + DMAINTEN &= ~3; + DMAR10(0) |= 1; + DMAR10(1) |= 1; } void pcm_set_frequency(unsigned int frequency) @@ -644,13 +747,15 @@ void pcm_play_data(void (*get_more)(unsigned char** start, size_t* size), unsigned char* start, size_t size) { - (void)get_more; - (void)start; - (void)size; + callback_for_more = get_more; + p = (unsigned short *)start; + p_size = size; + pcm_playing = true; } void pcm_play_stop(void) { + pcm_playing = false; } void pcm_mute(bool mute) @@ -660,33 +765,28 @@ void pcm_play_pause(bool play) { - (void)play; + if (!pcm_playing) + return; + pcm_paused = !play; } bool pcm_is_paused(void) { - return false; + return pcm_paused; } bool pcm_is_playing(void) { - return false; -} - -void pcm_calculate_peaks(int *left, int *right) -{ - (void)left; - (void)right; + return pcm_playing; } size_t pcm_get_bytes_waiting(void) { - return 0; + return p_size; } #endif -#if CONFIG_CPU != PNX0101 /* * This function goes directly into the DMA buffer to calculate the left and * right peak values. To avoid missing peaks it tries to look forward two full @@ -713,6 +813,9 @@ #elif defined(HAVE_TLV320) long samples = 4; /* TODO X5 */ short *addr = NULL; +#elif CONFIG_CPU == PNX0101 + long samples = p_size / 4; + short *addr = p; #endif if (samples > PEAK_SAMPLES) @@ -761,5 +864,3 @@ *right = peak_value; } } - -#endif Index: firmware/sound.c =================================================================== RCS file: /cvsroot/rockbox/firmware/sound.c,v retrieving revision 1.27 diff -u -r1.27 sound.c --- firmware/sound.c 13 Feb 2006 13:48:08 -0000 1.27 +++ firmware/sound.c 20 Feb 2006 00:18:30 -0000 @@ -32,6 +32,8 @@ #include "wm8758.h" #elif defined(HAVE_TLV320) #include "tlv320.h" +#elif CONFIG_CPU == PNX0101 +#include "pnx0101.h" #endif #include "dac.h" #include "system.h" @@ -515,8 +517,10 @@ current_volume = value * 10; /* tenth of dB */ set_prescaled_volume(); #elif CONFIG_CPU == PNX0101 - /* TODO: implement for iFP */ - (void)value; + int tmp = 0xff - (value + 78); + if (tmp < 0x10) tmp = 0x10; + if (tmp > 0xfc) tmp = 0xfc; + CODECVOL = tmp | (tmp << 8); #endif } Index: firmware/system.c =================================================================== RCS file: /cvsroot/rockbox/firmware/system.c,v retrieving revision 1.88 diff -u -r1.88 system.c --- firmware/system.c 5 Feb 2006 17:34:49 -0000 1.88 +++ firmware/system.c 20 Feb 2006 00:18:30 -0000 @@ -1367,6 +1367,239 @@ interrupt_vector[n + 1] = handler; } +static struct +{ + unsigned char freq; + unsigned char freq_idx; + unsigned char div; + unsigned char mem_conf[9]; +} +perf_modes[3] = + { + {12, 3, 4, {2, 1, 1, 1, 1, 1, 1, 1, 1}}, + {48, 3, 1, {5, 4, 1, 4, 4, 1, 3, 3, 1}}, + {60, 4, 1, {6, 5, 1, 5, 5, 1, 4, 3, 1}} + }; + +static unsigned char group_first_clkout[12] = + {0, 28, 37, 41, 57, 58, 59, 60, 61, 62, 71, 72}; + +static struct +{ + unsigned char first; + unsigned char n; +} +clkout_group_div_conns[12] = + { + {0, 7}, + {7, 2}, + {9, 1}, + {10, 1}, + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {11, 1}, + {12, 6}, + {0, 0}, + {0, 0} + }; + +static unsigned char bus_divider; +static unsigned char performance_mode; + +static int clkout_group(int n) +{ + int g = 0; + while (g < 11 && group_first_clkout[g + 1] <= n) + g++; + return g; +} + +static int clkout_conn_reg(int n) +{ + if (n <= 56) + return n; + else if (n <= 60) + return -1; + else if (n <= 70) + return n - 4; + else + return -1; +} + +static int clocks_divider_size(int n) +{ + return (n == 16) ? 10 : 8; +} + +static void clocks_set_divider(int n, int a, int b) +{ + if (a == b) + CLK_DIVIDER_REG(n) &= ~1; + else + { + int c = -a; + int d = b - a; + int div_size = clocks_divider_size(n); + int max_n = 1 << div_size; + while ((d << 1) < max_n && (c << 1) >= -max_n) + { + d <<= 1; + c <<= 1; + } + CLK_DIVIDER_REG(n) = 5 | ((c << div_size) | d) << 3; + } +} + +static int clocks_clkout_connected(int n) +{ + int r = clkout_conn_reg(n); + if (r >= 0) + return CLK_CLKOUT_CONN_REG(r) & 1; + else + return 0; +} + +static int clocks_clkout_divider(int n) +{ + int r = clkout_conn_reg(n); + if (r >= 0) + return (CLK_CLKOUT_CONN_REG(r) >> 1) + + clkout_group_div_conns[clkout_group(n)].first; + else + return -1; +} + +static void clocks_set_arm_perf_mode(int mode) +{ + MEM_CLK_REG(0x0c) = perf_modes[mode].mem_conf[0]; + MEM_CLK_REG(0x14) = perf_modes[mode].mem_conf[1]; + MEM_CLK_REG(0x2c) = perf_modes[mode].mem_conf[3]; + MEM_CLK_REG(0x34) = perf_modes[mode].mem_conf[4]; + MEM_CLK_REG(0x4c) = perf_modes[mode].mem_conf[6]; + MEM_CLK_REG(0x54) = perf_modes[mode].mem_conf[7]; + MEM_CLK_REG(0x08) = perf_modes[mode].mem_conf[2]; + MEM_CLK_REG(0x28) = perf_modes[mode].mem_conf[5]; + MEM_CLK_REG(0x48) = perf_modes[mode].mem_conf[8]; +} + +static void clocks_set_reg30_60(int n, int a) +{ + int r90 = CLKREG90(n); + int t = CLKREG0(n); + if (r90 & 1) + { + CLKREG60(n) = a; + CLKREG0(n) = (t & 4) | 2; + } + else + { + CLKREG30(n) = a; + CLKREG0(n) = (t & 4) | 1; + } +} + +static void nop_f(void) {} + +static void clocks_busy_wait(int n) +{ + while (n > 0) + { + nop_f(); + n--; + } +} + +static void clocks_set_bus_freq(int i) +{ + clocks_set_reg30_60(0, 1); + clocks_set_reg30_60(3, 1); + + BUS_PLL_REG(4) = 1; + BUS_PLL_REG(0) = 1; + BUS_PLL_REG(8) = 0; + BUS_PLL_REG(0x10) = 0; + BUS_PLL_REG(0x18) = 1; + BUS_PLL_REG(0x14) = i; + BUS_PLL_REG(4) = 0; + + clocks_busy_wait(1000); + if (i == 4) { + CLK_DIVIDER_REG(1) = 0xffffc385; + CLK_DIVIDER_REG(1) = 0xffffc384; + CLK_CLKOUT_CONN_REG(0x11) = 3; + CLK_DIVIDER_REG(1) = 0xffffc385; + CLKREGC0(0x11) = 1; + CLKREG0(0) = 1; + (*(volatile unsigned long *)0x80004414) = 1; + clocks_set_reg30_60(0, 9); + } + + clocks_set_reg30_60(0, 9); + clocks_set_reg30_60(3, 9); +} + +static void clocks_set_bus_div(int div) +{ + clocks_set_divider(bus_divider, 1, div); +} + +static void clocks_set_performance_mode(int mode) +{ + int old = performance_mode; + if (perf_modes[old].freq < perf_modes[mode].freq) + { + clocks_set_arm_perf_mode(mode); + if (perf_modes[old].freq_idx != perf_modes[mode].freq_idx) + clocks_set_bus_freq(perf_modes[mode].freq_idx); + if (perf_modes[old].div != perf_modes[mode].div) + clocks_set_bus_div(perf_modes[mode].div); + } + else if (perf_modes[old].freq > perf_modes[mode].freq) + { + if (perf_modes[old].freq_idx != perf_modes[mode].freq_idx) + clocks_set_bus_freq(perf_modes[mode].freq_idx); + if (perf_modes[old].div != perf_modes[mode].div) + clocks_set_bus_div(perf_modes[mode].div); + clocks_set_arm_perf_mode(mode); + } + performance_mode = mode; +} + +static void clocks_init(void) +{ + bus_divider = clocks_clkout_divider(0); + performance_mode = 0; + clocks_set_performance_mode(2); + + (*(volatile unsigned long *)0x80105064) = 1; + CLKREGC0(0x14) = 1; + CLKREG0(0) = 1; + (*(volatile unsigned long *)0x80004414) = 1; + clocks_set_reg30_60(0, 9); + +} + +#ifdef HAVE_ADJUSTABLE_CPU_FREQ +void set_cpu_frequency(long frequency) +{ + switch (frequency) + { + case CPUFREQ_MAX: + clocks_set_performance_mode(2); + break; + case CPUFREQ_NORMAL: + clocks_set_performance_mode(1); + break; + case CPUFREQ_DEFAULT: + clocks_set_performance_mode(0); + break; + } + +} +#endif + void system_init(void) { int i; @@ -1389,6 +1622,8 @@ interrupt_vector[i + 1] = undefined_int; } interrupt_vector[0] = undefined_int; + + clocks_init(); } Index: firmware/drivers/ata_flash.c =================================================================== RCS file: /cvsroot/rockbox/firmware/drivers/ata_flash.c,v retrieving revision 1.1 diff -u -r1.1 ata_flash.c --- firmware/drivers/ata_flash.c 18 Jan 2006 10:01:35 -0000 1.1 +++ firmware/drivers/ata_flash.c 20 Feb 2006 00:18:30 -0000 @@ -362,6 +362,7 @@ int done = flash_disk_read_sectors(start, incount, inbuf); if (done < 0) return -1; + start += done; incount -= done; inbuf += SECTOR_SIZE * done; } Index: firmware/export/config-ifp7xx.h =================================================================== RCS file: /cvsroot/rockbox/firmware/export/config-ifp7xx.h,v retrieving revision 1.2 diff -u -r1.2 config-ifp7xx.h --- firmware/export/config-ifp7xx.h 4 Feb 2006 00:04:02 -0000 1.2 +++ firmware/export/config-ifp7xx.h 20 Feb 2006 00:18:30 -0000 @@ -33,10 +33,10 @@ #define HAVE_SW_POWEROFF /* The number of bytes reserved for loadable codecs */ -#define CODEC_SIZE 0x30000 +#define CODEC_SIZE 0x29000 /* The number of bytes reserved for loadable plugins */ -#define PLUGIN_BUFFER_SIZE 0x20000 +#define PLUGIN_BUFFER_SIZE 0x10000 /* Define this if you have the WM8975 audio codec */ /* #define HAVE_WM8975 */ @@ -90,7 +90,7 @@ #define CONFIG_LED LED_VIRTUAL /* Define this if you have adjustable CPU frequency */ -//#define HAVE_ADJUSTABLE_CPU_FREQ +/* #define HAVE_ADJUSTABLE_CPU_FREQ */ #define BOOTFILE_EXT "iriver" #define BOOTFILE "rockbox." BOOTFILE_EXT Index: firmware/export/config.h =================================================================== RCS file: /cvsroot/rockbox/firmware/export/config.h,v retrieving revision 1.57 diff -u -r1.57 config.h --- firmware/export/config.h 9 Feb 2006 00:47:49 -0000 1.57 +++ firmware/export/config.h 20 Feb 2006 00:18:30 -0000 @@ -204,7 +204,8 @@ (CONFIG_CPU == MCF5249) || /* Coldfire: core, plugins, codecs */ \ (CONFIG_CPU == PP5020) || /* iPod: core, plugins, codecs */ \ (CONFIG_CPU == PP5002) || /* iPod: core, plugins, codecs */ \ - (CONFIG_CPU == TCC730)) /* CalmRISC16: core, (plugins, codecs) */ + (CONFIG_CPU == TCC730) || /* CalmRISC16: core, (plugins, codecs) */ \ + (CONFIG_CPU == PNX0101)) #define ICODE_ATTR __attribute__ ((section(".icode"))) #define ICONST_ATTR __attribute__ ((section(".irodata"))) #define IDATA_ATTR __attribute__ ((section(".idata"))) Index: firmware/export/pnx0101.h =================================================================== RCS file: /cvsroot/rockbox/firmware/export/pnx0101.h,v retrieving revision 1.1 diff -u -r1.1 pnx0101.h --- firmware/export/pnx0101.h 12 Jan 2006 00:35:50 -0000 1.1 +++ firmware/export/pnx0101.h 20 Feb 2006 00:18:31 -0000 @@ -64,4 +64,30 @@ #define ADCR24 (*(volatile unsigned long *)0x80002424) #define ADCR28 (*(volatile unsigned long *)0x80002428) +#define DMAINTSTAT (*(volatile unsigned long *)0x80104c04) +#define DMAINTEN (*(volatile unsigned long *)0x80104c08) + +#define DMASRC(n) (*(volatile unsigned long *)(0x80104800 + (n) * 0x20)) +#define DMADEST(n) (*(volatile unsigned long *)(0x80104804 + (n) * 0x20)) +#define DMALEN(n) (*(volatile unsigned long *)(0x80104808 + (n) * 0x20)) +#define DMAR0C(n) (*(volatile unsigned long *)(0x8010480c + (n) * 0x20)) +#define DMAR10(n) (*(volatile unsigned long *)(0x80104810 + (n) * 0x20)) +#define DMAR1C(n) (*(volatile unsigned long *)(0x8010481c + (n) * 0x20)) + +#define MMUBLOCK(n) (*(volatile unsigned long *)(0x80105018 + (n) * 4)) + +#define CODECVOL (*(volatile unsigned long *)0x80200398) + +#define CLK_DIVIDER_REG(n) (*(volatile unsigned long *)(0x80004420 + 4 * (n))) +#define CLK_CLKOUT_CONN_REG(n) (*(volatile unsigned long *)(0x80004308 \ + + 4 * (n))) +#define MEM_CLK_REG(n) (*(volatile unsigned long *)(0x80008200 + (n))) +#define BUS_PLL_REG(n) (*(volatile unsigned long *)(0x80004ce4 + (n))) + +#define CLKREG0(n) (*(volatile unsigned long *)(0x80004000 + 4 * (n))) +#define CLKREG30(n) (*(volatile unsigned long *)(0x80004030 + 4 * (n))) +#define CLKREG60(n) (*(volatile unsigned long *)(0x80004060 + 4 * (n))) +#define CLKREG90(n) (*(volatile unsigned long *)(0x80004090 + 4 * (n))) +#define CLKREGC0(n) (*(volatile unsigned long *)(0x800040C0 + 4 * (n))) + #endif Index: tools/configure =================================================================== RCS file: /cvsroot/rockbox/tools/configure,v retrieving revision 1.174 diff -u -r1.174 configure --- tools/configure 16 Feb 2006 20:03:07 -0000 1.174 +++ tools/configure 20 Feb 2006 00:18:31 -0000 @@ -207,7 +207,10 @@ arm7tdmicc () { prefixtools arm-elf- - GCCOPTS="$CCOPTS -mcpu=arm7tdmi -ffunction-sections -mlong-calls" + GCCOPTS="$CCOPTS -mcpu=arm7tdmi" + if test "X$1" != "Xshort"; then + GCCOPTS="$GCCOPTS -ffunction-sections -mlong-calls" + fi GCCOPTIMIZE="-fomit-frame-pointer" endian="little" } @@ -801,7 +804,7 @@ archos="ifp7xx" target="-DIRIVER_IFP7XX" memory=1 - arm7tdmicc + arm7tdmicc short tool="cp" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0"