summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-11-09 00:38:10 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-11-09 00:38:10 +0000
commit2a93cee8e28ad88c848b378fb10551cf5597bb81 (patch)
tree1e6d242496692c92bd23fcd4802dc05b6ac68e23
parenta721007e3956af8ac872237b5371466caf5a75e2 (diff)
downloadrockbox-2a93cee8e28ad88c848b378fb10551cf5597bb81.tar.gz
rockbox-2a93cee8e28ad88c848b378fb10551cf5597bb81.zip
M:Robe 500 - Enable ASM optimized ATA interface improving disk access speed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23572 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/SOURCES1
-rw-r--r--firmware/target/arm/ata-as-arm.S6
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/ata-target.h9
3 files changed, 16 insertions, 0 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index adb54c7a35..18106df2cf 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -881,6 +881,7 @@ target/arm/tms320dm320/uart-dm320.c
881 881
882#ifdef MROBE_500 882#ifdef MROBE_500
883#ifndef SIMULATOR 883#ifndef SIMULATOR
884target/arm/ata-as-arm.S
884target/arm/lcd-as-memframe.S 885target/arm/lcd-as-memframe.S
885target/arm/mmu-arm.S 886target/arm/mmu-arm.S
886target/arm/tms320dm320/mrobe-500/adc-mr500.c 887target/arm/tms320dm320/mrobe-500/adc-mr500.c
diff --git a/firmware/target/arm/ata-as-arm.S b/firmware/target/arm/ata-as-arm.S
index c1475c0a5a..b1cafc2221 100644
--- a/firmware/target/arm/ata-as-arm.S
+++ b/firmware/target/arm/ata-as-arm.S
@@ -38,6 +38,12 @@
38#elif defined(CREATIVE_ZVx) /* Zen Vision could have an other address */ 38#elif defined(CREATIVE_ZVx) /* Zen Vision could have an other address */
39 .text 39 .text
40 .equ .ata_port, 0x50FEE000 40 .equ .ata_port, 0x50FEE000
41#elif defined(MROBE_500)
42 .text
43 .equ .ata_port, 0x50400000
44#else
45 /* This isn't vaild, but it does it's job, not sure what this should be */
46 #error ata_port undefined!
41#endif 47#endif
42 48
43 .align 2 49 .align 2
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h b/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h
index 4d0e0433c5..2a9d3e8010 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h
+++ b/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h
@@ -22,9 +22,18 @@
22#ifndef ATA_TARGET_H 22#ifndef ATA_TARGET_H
23#define ATA_TARGET_H 23#define ATA_TARGET_H
24 24
25#if 0
25/* Plain C read & write loops */ 26/* Plain C read & write loops */
26#define PREFER_C_READING 27#define PREFER_C_READING
27#define PREFER_C_WRITING 28#define PREFER_C_WRITING
29#else
30/* ASM optimized reading and writing */
31#define ATA_OPTIMIZED_READING
32#define ATA_OPTIMIZED_WRITING
33
34void copy_read_sectors(const unsigned char* buf, int wordcount);
35void copy_write_sectors(const unsigned char* buf, int wordcount);
36#endif
28 37
29#define ATA_IOBASE 0x50000000 38#define ATA_IOBASE 0x50000000
30#define REGISTER_OFFSET (ATA_IOBASE+0x00400000) /* A21 = High */ 39#define REGISTER_OFFSET (ATA_IOBASE+0x00400000) /* A21 = High */