diff --git a/include/arm11/hardware/mcu.h b/include/arm11/hardware/mcu.h index 6ed172b..89ff014 100644 --- a/include/arm11/hardware/mcu.h +++ b/include/arm11/hardware/mcu.h @@ -20,6 +20,8 @@ #include "types.h" + + void MCU_disableLEDs(void); void MCU_powerOnLCDs(void); void MCU_powerOffLCDs(void); diff --git a/include/arm11/hardware/timer.h b/include/arm11/hardware/timer.h index dccd092..45ad588 100644 --- a/include/arm11/hardware/timer.h +++ b/include/arm11/hardware/timer.h @@ -72,5 +72,5 @@ // Sleeps ms milliseconds. ms can be up to 32000. static inline void TIMER_sleepMs(u32 ms) { - TIMER_sleepTicks(TIMER_FREQ(0, 1000.0) * ms); + TIMER_sleepTicks(TIMER_FREQ(1, 1000.0) * ms); } diff --git a/source/arm11/hardware/mcu.c b/source/arm11/hardware/mcu.c index fe41ff9..81bb220 100644 --- a/source/arm11/hardware/mcu.c +++ b/source/arm11/hardware/mcu.c @@ -24,6 +24,7 @@ #include "arm11/hardware/i2c.h" #include "arm11/hardware/mcu.h" + enum McuRegisters { RegBattery = 0x0B, RegExHW = 0x0F, @@ -35,6 +36,8 @@ RegSysModel = 0x7F }; + + void MCU_disableLEDs(void) { // disable wifi LED diff --git a/source/arm11/power.c b/source/arm11/power.c index 6e55343..0070f1b 100644 --- a/source/arm11/power.c +++ b/source/arm11/power.c @@ -24,13 +24,15 @@ #include "ipc_handler.h" #include "hardware/pxi.h" + + noreturn void power_off(void) { PXI_sendCmd(IPC_CMD9_PREPARE_POWER, NULL, 0); MCU_powerOffLCDs(); flushDCache(); - __asm__ __volatile__("cpsid aif" : :); + __asm__ __volatile__("cpsid aif" : : : "memory"); MCU_triggerPowerOff(); @@ -43,7 +45,7 @@ MCU_powerOffLCDs(); flushDCache(); - __asm__ __volatile__("cpsid aif" : :); + __asm__ __volatile__("cpsid aif" : : : "memory"); MCU_triggerReboot(); diff --git a/source/arm11/system.c b/source/arm11/system.c index 79e1b1e..02c5ad5 100644 --- a/source/arm11/system.c +++ b/source/arm11/system.c @@ -25,6 +25,8 @@ #include "arm11/hardware/mcu.h" #include "arm11/hardware/hid.h" + + static void systemRestoreHwState(void) { MCU_disableLEDs(); @@ -51,4 +53,3 @@ __asm__ __volatile__("cpsie i" : : : "memory"); // Enables interrupts } -