From 61a83c02a3f0812c54cc9c41d2c1002af4c63f9e Mon Sep 17 00:00:00 2001 From: Mark Arigo Date: Thu, 27 Sep 2007 02:50:50 +0000 Subject: Sansa c200: fix system_reboot with some magic from the OF. Reboot to the OF when usb is inserted. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14862 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/sandisk/ata-c200_e200.c | 4 ++++ firmware/target/arm/system-pp502x.c | 9 +++++++++ firmware/target/arm/usb-fw-pp502x.c | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/firmware/target/arm/sandisk/ata-c200_e200.c b/firmware/target/arm/sandisk/ata-c200_e200.c index addc490417..7cf317109e 100644 --- a/firmware/target/arm/sandisk/ata-c200_e200.c +++ b/firmware/target/arm/sandisk/ata-c200_e200.c @@ -1087,6 +1087,10 @@ void ata_sleep(void) { } +void ata_sleepnow(void) +{ +} + void ata_spin(void) { } diff --git a/firmware/target/arm/system-pp502x.c b/firmware/target/arm/system-pp502x.c index 64153eefc4..a234edab8c 100644 --- a/firmware/target/arm/system-pp502x.c +++ b/firmware/target/arm/system-pp502x.c @@ -255,7 +255,16 @@ void system_init(void) void system_reboot(void) { /* Reboot */ +#ifdef SANSA_C200 + CACHE_CTL &= ~0x10; + + /* Magic used by the c200 OF. The BL uses a magic value of 0x23066b7b. + In both cases, the OF executes these 2 commands from iram. */ + outl(0x23066000, 0x70000008); + DEV_RS = DEV_SYSTEM; +#else DEV_RS |= DEV_SYSTEM; +#endif } int system_memory_guard(int newmode) diff --git a/firmware/target/arm/usb-fw-pp502x.c b/firmware/target/arm/usb-fw-pp502x.c index be37b8b710..a5afc20056 100644 --- a/firmware/target/arm/usb-fw-pp502x.c +++ b/firmware/target/arm/usb-fw-pp502x.c @@ -100,7 +100,8 @@ void usb_enable(bool on) handling, which should be the same for all PP502x targets. */ if (on) { -#if defined(IPOD_ARCH) || defined(IRIVER_H10) || defined (IRIVER_H10_5GB) +#if defined(IPOD_ARCH) || defined(IRIVER_H10) || defined (IRIVER_H10_5GB) ||\ + defined(SANSA_C200) /* For the H10 and iPod, we can only do one thing with USB mode - reboot into the flash-based disk-mode. This does not return. */ -- cgit v1.2.3