diff options
-rw-r--r-- | arch/arm/mach-pxa/include/mach/lubbock.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/pm.h | 10 | ||||
-rw-r--r-- | arch/arm/mach-pxa/lubbock.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pm.c | 13 |
4 files changed, 20 insertions, 11 deletions
diff --git a/arch/arm/mach-pxa/include/mach/lubbock.h b/arch/arm/mach-pxa/include/mach/lubbock.h index 4cb2415..751b748 100644 --- a/arch/arm/mach-pxa/include/mach/lubbock.h +++ b/arch/arm/mach-pxa/include/mach/lubbock.h @@ -25,7 +25,6 @@ /* FPGA register virtual addresses */ #define LUB_WHOAMI __LUB_REG(LUBBOCK_FPGA_PHYS + 0x000) -#define LUB_HEXLED __LUB_REG(LUBBOCK_FPGA_PHYS + 0x010) #define LUB_DISC_BLNK_LED __LUB_REG(LUBBOCK_FPGA_PHYS + 0x040) #define LUB_CONF_SWITCHES __LUB_REG(LUBBOCK_FPGA_PHYS + 0x050) #define LUB_USER_SWITCHES __LUB_REG(LUBBOCK_FPGA_PHYS + 0x060) diff --git a/arch/arm/mach-pxa/include/mach/pm.h b/arch/arm/mach-pxa/include/mach/pm.h index 8334246..a6eeef8 100644 --- a/arch/arm/mach-pxa/include/mach/pm.h +++ b/arch/arm/mach-pxa/include/mach/pm.h @@ -27,3 +27,13 @@ extern void pxa27x_cpu_suspend(unsigned int); extern void pxa_cpu_resume(void); extern int pxa_pm_enter(suspend_state_t state); + +/* NOTE: this is for PM debugging on Lubbock, it's really a big + * ugly, but let's keep the crap minimum here, instead of direct + * accessing the LUBBOCK CPLD registers in arch/arm/mach-pxa/pm.c + */ +#ifdef CONFIG_ARCH_LUBBOCK +extern void lubbock_set_hexled(uint32_t value); +#else +#define lubbock_set_hexled(x) +#endif diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 03a43ea..f04c833 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c @@ -49,6 +49,7 @@ #include <mach/irda.h> #include <mach/pxafb.h> #include <mach/mmc.h> +#include <mach/pm.h> #include "generic.h" #include "clock.h" @@ -112,8 +113,14 @@ static unsigned long lubbock_pin_config[] __initdata = { GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, }; +#define LUB_HEXLED __LUB_REG(LUBBOCK_FPGA_PHYS + 0x010) #define LUB_MISC_WR __LUB_REG(LUBBOCK_FPGA_PHYS + 0x080) +void lubbock_set_hexled(uint32_t value) +{ + LUB_HEXLED = value; +} + void lubbock_set_misc_wr(unsigned int mask, unsigned int set) { unsigned long flags; diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c index 164eb0b..884b174 100644 --- a/arch/arm/mach-pxa/pm.c +++ b/arch/arm/mach-pxa/pm.c @@ -14,15 +14,8 @@ #include <linux/module.h> #include <linux/suspend.h> #include <linux/errno.h> -#include <linux/time.h> -#include <mach/hardware.h> -#include <asm/memory.h> -#include <asm/system.h> #include <mach/pm.h> -#include <mach/pxa-regs.h> -#include <mach/lubbock.h> -#include <asm/mach/time.h> struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; static unsigned long *sleep_save; @@ -57,9 +50,9 @@ int pxa_pm_enter(suspend_state_t state) /* if invalid, display message and wait for a hardware reset */ if (checksum != sleep_save_checksum) { -#ifdef CONFIG_ARCH_LUBBOCK - LUB_HEXLED = 0xbadbadc5; -#endif + + lubbock_set_hexled(0xbadbadc5); + while (1) pxa_cpu_pm_fns->enter(state); } |