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:
parent
b650bc592a
commit
868fcce96c
2 changed files with 18 additions and 8 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue