From d88c5667d9bef918259b2e1719315a4e948be30a Mon Sep 17 00:00:00 2001 From: Rob Purchase Date: Tue, 15 Apr 2008 20:02:24 +0000 Subject: Kill some D2 yellows with a simplistic Rolo implementation and NAND driver cleanup. Correct some comments in crt0.s and remove two erroneous null words from rockbox.bin git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17127 a1c6a512-1295-4272-9138-f99709370657 --- firmware/rolo.c | 12 +++++++++++- firmware/target/arm/tcc780x/ata-nand-tcc780x.c | 9 +++++---- firmware/target/arm/tcc780x/crt0.S | 8 +++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/firmware/rolo.c b/firmware/rolo.c index eb49a18c01..848b35b056 100644 --- a/firmware/rolo.c +++ b/firmware/rolo.c @@ -167,6 +167,15 @@ void rolo_restart(const unsigned char* source, unsigned char* dest, "mov r0, #0x10000000 \n" "mov pc, r0 \n" ); + +#elif defined(CPU_TCC780X) + /* Flush cache */ + flush_icache(); + + asm volatile( + "mov pc, %0 \n" + : : "r"(dest) + ); #endif } #endif @@ -216,7 +225,8 @@ int rolo_load(const char* filename) length = filesize(fd) - FIRMWARE_OFFSET_FILE_DATA; -#if defined(CPU_COLDFIRE) || defined(CPU_PP) || (CONFIG_CPU==DM320) +#if defined(CPU_COLDFIRE) || defined(CPU_PP) || (CONFIG_CPU==DM320) \ + || defined(CPU_TCC780X) /* Read and save checksum */ lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET); if (read(fd, &file_checksum, 4) != 4) { diff --git a/firmware/target/arm/tcc780x/ata-nand-tcc780x.c b/firmware/target/arm/tcc780x/ata-nand-tcc780x.c index b47444f3a8..4cf55c0c3c 100644 --- a/firmware/target/arm/tcc780x/ata-nand-tcc780x.c +++ b/firmware/target/arm/tcc780x/ata-nand-tcc780x.c @@ -39,9 +39,6 @@ long last_disk_activity = -1; /** static, private data **/ static bool initialized = false; -static long next_yield = 0; -#define MIN_YIELD_PERIOD 2000 - static struct mutex ata_mtx SHAREDBSS_ATTR; #define SECTOR_SIZE 512 @@ -740,7 +737,11 @@ int ata_read_sectors(IF_MV2(int drive,) unsigned long start, int incount, int ata_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const void* outbuf) { - #warning function not implemented +#ifdef HAVE_MULTIVOLUME + (void)drive; /* unused for now */ +#endif + + /* TODO: Learn more about TNFTL and implement this one day... */ (void)start; (void)count; (void)outbuf; diff --git a/firmware/target/arm/tcc780x/crt0.S b/firmware/target/arm/tcc780x/crt0.S index d328291a26..af5bd44192 100644 --- a/firmware/target/arm/tcc780x/crt0.S +++ b/firmware/target/arm/tcc780x/crt0.S @@ -35,18 +35,16 @@ start: #ifdef TCCBOOT +#ifdef BOOTLOADER /* Add -DTCCBOOT to EXTRA_DEFINES in the bootloader Makefile to enable building the bootloader to be appended to the end of the original firmware, dual-booting based on a key-press. - NB: On the D2 TCCBOOT currently only works in USB boot mode (via tcctool) - When flashed to the device, the OF will boot as normal - but holding a - key to boot Rockbox results in a blank screen and crashed player. - The following two values are filled in by mktccboot. */ .word 0 /* Saved entrypoint of original firmware*/ .word 0 /* Location in RAM of the start of our bootloader */ +#endif #else ldr pc, =start_loc /* jump to the main entry point */ @@ -79,7 +77,7 @@ start_loc: #error No bootup key detection implemented for this target #endif - /* Copy bootloader to safe area - 0x21000000 (DRAM) */ + /* Copy bootloader to safe area - 0x21F00000 (end of DRAM) */ /* TODO: Adjust this for other targets - DRAM + DRAMSIZE - 0x100000 */ ldr r0, [pc, #-28] mov r1, #0x22000000 -- cgit v1.2.3