008d23e485
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits) Documentation/trace/events.txt: Remove obsolete sched_signal_send. writeback: fix global_dirty_limits comment runtime -> real-time ppc: fix comment typo singal -> signal drivers: fix comment typo diable -> disable. m68k: fix comment typo diable -> disable. wireless: comment typo fix diable -> disable. media: comment typo fix diable -> disable. remove doc for obsolete dynamic-printk kernel-parameter remove extraneous 'is' from Documentation/iostats.txt Fix spelling milisec -> ms in snd_ps3 module parameter description Fix spelling mistakes in comments Revert conflicting V4L changes i7core_edac: fix typos in comments mm/rmap.c: fix comment sound, ca0106: Fix assignment to 'channel'. hrtimer: fix a typo in comment init/Kconfig: fix typo anon_inodes: fix wrong function name in comment fix comment typos concerning "consistent" poll: fix a typo in comment ... Fix up trivial conflicts in: - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c) - fs/ext4/ext4.h Also fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.
50 lines
1002 B
C
50 lines
1002 B
C
/*
|
|
* i.MX27 Power Management Routines
|
|
*
|
|
* Based on Freescale's BSP
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/suspend.h>
|
|
#include <linux/io.h>
|
|
#include <mach/system.h>
|
|
#include <mach/mx27.h>
|
|
|
|
static int mx27_suspend_enter(suspend_state_t state)
|
|
{
|
|
u32 cscr;
|
|
switch (state) {
|
|
case PM_SUSPEND_MEM:
|
|
/* Clear MPEN and SPEN to disable MPLL/SPLL */
|
|
cscr = __raw_readl(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR));
|
|
cscr &= 0xFFFFFFFC;
|
|
__raw_writel(cscr, MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR));
|
|
/* Executes WFI */
|
|
arch_idle();
|
|
break;
|
|
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static const struct platform_suspend_ops mx27_suspend_ops = {
|
|
.enter = mx27_suspend_enter,
|
|
.valid = suspend_valid_only_mem,
|
|
};
|
|
|
|
static int __init mx27_pm_init(void)
|
|
{
|
|
if (!cpu_is_mx27())
|
|
return 0;
|
|
|
|
suspend_set_ops(&mx27_suspend_ops);
|
|
return 0;
|
|
}
|
|
|
|
device_initcall(mx27_pm_init);
|