summaryrefslogtreecommitdiff
path: root/firmware/system.c
diff options
context:
space:
mode:
authorJean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>2005-02-22 09:55:40 +0000
committerJean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>2005-02-22 09:55:40 +0000
commit376057d2b67bae0a7b24ae1715d3cbb0b540b7a9 (patch)
treef8740872907575e84dd52b62a25d0385186e1bbd /firmware/system.c
parente638eadaffe61143f0ded093936cbbafb1f569ce (diff)
downloadrockbox-376057d2b67bae0a7b24ae1715d3cbb0b540b7a9.zip
rockbox-376057d2b67bae0a7b24ae1715d3cbb0b540b7a9.tar.gz
rockbox-376057d2b67bae0a7b24ae1715d3cbb0b540b7a9.tar.bz2
rockbox-376057d2b67bae0a7b24ae1715d3cbb0b540b7a9.tar.xz
Gmini SMSC chip improvements
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6030 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/system.c')
-rw-r--r--firmware/system.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/firmware/system.c b/firmware/system.c
index 9d3e2a0..05f5f49 100644
--- a/firmware/system.c
+++ b/firmware/system.c
@@ -34,13 +34,13 @@ void ddma_wait_idle(void)
} while ((DDMACOM & 3) != 0);
}
-void ddma_transfer(int dir, int mem, long intAddr, long extAddr, int num)
+void ddma_transfer(int dir, int mem, void* intAddr, long extAddr, int num)
__attribute__ ((section (".icode")));
-void ddma_transfer(int dir, int mem, long intAddr, long extAddr, int num) {
+void ddma_transfer(int dir, int mem, void* intAddr, long extAddr, int num) {
int irq = set_irq_level(1);
ddma_wait_idle();
long externalAddress = (long) extAddr;
- long internalAddress = (long) intAddr;
+ long internalAddress = ((long) intAddr) & 0xFFFF;
/* HW wants those two in word units. */
num /= 2;
externalAddress /= 2;
@@ -130,10 +130,9 @@ void smsc_delay() {
}
static void extra_init(void) {
- /* Power on
- P1 |= 0x01;
- P1CON |= 0x01;
- */
+ /* Power on stuff */
+ P1 |= 0x07;
+ P1CON |= 0x1f;
/* SMSC chip config (?) */
P6CON |= 0x08;
@@ -147,7 +146,7 @@ static void extra_init(void) {
}
/* P5 conf
- * line 2 & 4 are digital, other analog. : P5CON = 0xec;
+ * lines 0, 1 & 4 are digital, other analog. : P5CON = 0xec;
*/
/* P7 conf