1*c3dada18SMagnus Damm /* 2*c3dada18SMagnus Damm * Suspend-to-RAM support code for SH-Mobile ARM 3*c3dada18SMagnus Damm * 4*c3dada18SMagnus Damm * Copyright (C) 2011 Magnus Damm 5*c3dada18SMagnus Damm * 6*c3dada18SMagnus Damm * This file is subject to the terms and conditions of the GNU General Public 7*c3dada18SMagnus Damm * License. See the file "COPYING" in the main directory of this archive 8*c3dada18SMagnus Damm * for more details. 9*c3dada18SMagnus Damm */ 10*c3dada18SMagnus Damm 11*c3dada18SMagnus Damm #include <linux/pm.h> 12*c3dada18SMagnus Damm #include <linux/suspend.h> 13*c3dada18SMagnus Damm #include <linux/module.h> 14*c3dada18SMagnus Damm #include <linux/err.h> 15*c3dada18SMagnus Damm #include <asm/system.h> 16*c3dada18SMagnus Damm #include <asm/io.h> 17*c3dada18SMagnus Damm 18*c3dada18SMagnus Damm static int shmobile_suspend_default_enter(suspend_state_t suspend_state) 19*c3dada18SMagnus Damm { 20*c3dada18SMagnus Damm cpu_do_idle(); 21*c3dada18SMagnus Damm return 0; 22*c3dada18SMagnus Damm } 23*c3dada18SMagnus Damm 24*c3dada18SMagnus Damm static int shmobile_suspend_begin(suspend_state_t state) 25*c3dada18SMagnus Damm { 26*c3dada18SMagnus Damm disable_hlt(); 27*c3dada18SMagnus Damm return 0; 28*c3dada18SMagnus Damm } 29*c3dada18SMagnus Damm 30*c3dada18SMagnus Damm static void shmobile_suspend_end(void) 31*c3dada18SMagnus Damm { 32*c3dada18SMagnus Damm enable_hlt(); 33*c3dada18SMagnus Damm } 34*c3dada18SMagnus Damm 35*c3dada18SMagnus Damm struct platform_suspend_ops shmobile_suspend_ops = { 36*c3dada18SMagnus Damm .begin = shmobile_suspend_begin, 37*c3dada18SMagnus Damm .end = shmobile_suspend_end, 38*c3dada18SMagnus Damm .enter = shmobile_suspend_default_enter, 39*c3dada18SMagnus Damm .valid = suspend_valid_only_mem, 40*c3dada18SMagnus Damm }; 41*c3dada18SMagnus Damm 42*c3dada18SMagnus Damm static int __init shmobile_suspend_init(void) 43*c3dada18SMagnus Damm { 44*c3dada18SMagnus Damm suspend_set_ops(&shmobile_suspend_ops); 45*c3dada18SMagnus Damm return 0; 46*c3dada18SMagnus Damm } 47*c3dada18SMagnus Damm late_initcall(shmobile_suspend_init); 48