1 /* 2 * Copyright (C) 2010 Freescale Semiconductor, Inc. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 */ 14 15 #include <linux/kernel.h> 16 #include <linux/suspend.h> 17 #include <linux/io.h> 18 19 static int mxs_suspend_enter(suspend_state_t state) 20 { 21 switch (state) { 22 case PM_SUSPEND_MEM: 23 cpu_do_idle(); 24 break; 25 26 default: 27 return -EINVAL; 28 } 29 return 0; 30 } 31 32 static struct platform_suspend_ops mxs_suspend_ops = { 33 .enter = mxs_suspend_enter, 34 .valid = suspend_valid_only_mem, 35 }; 36 37 static int __init mxs_pm_init(void) 38 { 39 suspend_set_ops(&mxs_suspend_ops); 40 return 0; 41 } 42 device_initcall(mxs_pm_init); 43