diff options
Diffstat (limited to 'firmware/target/arm/sandisk/power-c200_e200.c')
-rw-r--r-- | firmware/target/arm/sandisk/power-c200_e200.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/firmware/target/arm/sandisk/power-c200_e200.c b/firmware/target/arm/sandisk/power-c200_e200.c index d23754a478..6b3f295e07 100644 --- a/firmware/target/arm/sandisk/power-c200_e200.c +++ b/firmware/target/arm/sandisk/power-c200_e200.c | |||
@@ -32,23 +32,21 @@ void power_off(void) | |||
32 | { | 32 | { |
33 | char byte; | 33 | char byte; |
34 | 34 | ||
35 | /* Disable interrupts on this core */ | ||
36 | disable_interrupt(IRQ_FIQ_STATUS); | ||
37 | |||
38 | /* Mask them on both cores */ | ||
39 | CPU_INT_CLR = -1; | ||
40 | COP_INT_CLR = -1; | ||
41 | |||
42 | /* Send shutdown command to PMU */ | 35 | /* Send shutdown command to PMU */ |
43 | byte = i2c_readbyte(AS3514_I2C_ADDR, SYSTEM); | 36 | byte = i2c_readbyte(AS3514_I2C_ADDR, SYSTEM); |
44 | byte &= ~0x1; | 37 | byte &= ~0x1; |
45 | pp_i2c_send(AS3514_I2C_ADDR, SYSTEM, byte); | 38 | pp_i2c_send(AS3514_I2C_ADDR, SYSTEM, byte); |
46 | 39 | ||
40 | /* Stop interrupts on both cores */ | ||
41 | disable_irq(IRQ_FIQ_STATUS); | ||
42 | COP_INT_CLR = -1; | ||
43 | CPU_INT_CLR = -1; | ||
44 | |||
47 | /* Halt everything and wait for device to power off */ | 45 | /* Halt everything and wait for device to power off */ |
48 | while (1) | 46 | while (1) |
49 | { | 47 | { |
50 | CPU_CTL = PROC_SLEEP; | 48 | COP_CTL = 0x40000000; |
51 | COP_CTL = PROC_SLEEP; | 49 | CPU_CTL = 0x40000000; |
52 | } | 50 | } |
53 | } | 51 | } |
54 | 52 | ||