From 4fe6963e4044fd25e5c6b14dea31b0e0b60910c6 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Mon, 26 Dec 2011 17:09:09 +0000 Subject: imx233: implement core_sleep git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31443 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/imx233/clkctrl-imx233.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'firmware/target/arm/imx233/clkctrl-imx233.h') diff --git a/firmware/target/arm/imx233/clkctrl-imx233.h b/firmware/target/arm/imx233/clkctrl-imx233.h index fc835c813a..8a52620f7e 100644 --- a/firmware/target/arm/imx233/clkctrl-imx233.h +++ b/firmware/target/arm/imx233/clkctrl-imx233.h @@ -98,6 +98,17 @@ #define HW_CLKCTRL_RESET_CHIP 0x2 #define HW_CLKCTRL_RESET_DIG 0x1 +static inline void core_sleep(void) +{ + __REG_SET(HW_CLKCTRL_CPU) = HW_CLKCTRL_CPU__INTERRUPT_WAIT; + asm volatile ( + "mcr p15, 0, %0, c7, c0, 4 \n" /* Wait for interrupt */ + "nop\n" /* Datasheet unclear: "The lr sent to handler points here after RTI"*/ + : : "r"(0) + ); + enable_irq(); +} + enum imx233_clock_t { CLK_PIX, /* freq, div, frac, bypass, enable */ -- cgit v1.2.3