1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * 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 "hardware.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 = imx_readl(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR));
- cscr &= 0xFFFFFFFC;
- imx_writel(cscr, MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR));
- /* Executes WFI */
- cpu_do_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,
- };
- void __init imx27_pm_init(void)
- {
- suspend_set_ops(&mx27_suspend_ops);
- }
|