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. */