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 #include "pm.h" 19 20 static int mxs_suspend_enter(suspend_state_t state) 21 { 22 switch (state) { 23 case PM_SUSPEND_MEM: 24 cpu_do_idle(); 25 break; 26 27 default: 28 return -EINVAL; 29 } 30 return 0; 31 } 32 33 static struct platform_suspend_ops mxs_suspend_ops = { 34 .enter = mxs_suspend_enter, 35 .valid = suspend_valid_only_mem, 36 }; 37 38 void __init mxs_pm_init(void) 39 { 40 suspend_set_ops(&mxs_suspend_ops); 41 } 42