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;
printf("POWER-OFF");
#if defined(COWON_D2)
lcd_enable(false);
#endif
/* TODO: Power-off */
while(1);
/* Power-off */
power_off();
return 0;
}

View file

@ -16,9 +16,7 @@
* KIND, either express or implied.
*
****************************************************************************/
#include "config.h"
#include "cpu.h"
#include <stdbool.h>
#include "kernel.h"
#include "system.h"
#include "power.h"
@ -61,6 +59,22 @@ void charger_enable(bool on)
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)