1
0
Fork 0
forked from len0rd/rockbox

Shutdown needs about 2 seconds, but it seems to work :)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16317 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Christian Gmeiner 2008-02-16 12:44:15 +00:00
parent b650bc592a
commit 868fcce96c
2 changed files with 18 additions and 8 deletions

View file

@ -197,12 +197,8 @@ void* main(void)
line = 0; line = 0;
printf("POWER-OFF"); printf("POWER-OFF");
#if defined(COWON_D2) /* Power-off */
lcd_enable(false); power_off();
#endif
/* TODO: Power-off */
while(1);
return 0; return 0;
} }

View file

@ -16,9 +16,7 @@
* KIND, either express or implied. * KIND, either express or implied.
* *
****************************************************************************/ ****************************************************************************/
#include "config.h"
#include "cpu.h" #include "cpu.h"
#include <stdbool.h>
#include "kernel.h" #include "kernel.h"
#include "system.h" #include "system.h"
#include "power.h" #include "power.h"
@ -61,6 +59,22 @@ void charger_enable(bool on)
void power_off(void) void power_off(void)
{ {
/* Disable interrupts on this core */
set_interrupt_status(IRQ_FIQ_DISABLED, IRQ_FIQ_STATUS);
/* Mask them on both cores */
CPU_INT_CLR = -1;
COP_INT_CLR = -1;
/* Shutdown: stop XIN oscillator */
CLKCTRL &= ~(1 << 31);
/* Halt everything and wait for device to power off */
while (1)
{
CPU_CTL = PROC_SLEEP;
COP_CTL = PROC_SLEEP;
}
} }
void ide_power_enable(bool on) void ide_power_enable(bool on)