 c3dada1894
			
		
	
	
	c3dada1894
	
	
	
		
			
			This patch adds a simple Suspend-to-RAM implementation for SH-Mobile ARM. The struct shmobile_suspend_ops are kept global to allow cpu-specific code to override the callbacks if needed. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1,008 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1,008 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Suspend-to-RAM support code for SH-Mobile ARM
 | |
|  *
 | |
|  *  Copyright (C) 2011 Magnus Damm
 | |
|  *
 | |
|  * This file is subject to the terms and conditions of the GNU General Public
 | |
|  * License.  See the file "COPYING" in the main directory of this archive
 | |
|  * for more details.
 | |
|  */
 | |
| 
 | |
| #include <linux/pm.h>
 | |
| #include <linux/suspend.h>
 | |
| #include <linux/module.h>
 | |
| #include <linux/err.h>
 | |
| #include <asm/system.h>
 | |
| #include <asm/io.h>
 | |
| 
 | |
| static int shmobile_suspend_default_enter(suspend_state_t suspend_state)
 | |
| {
 | |
| 	cpu_do_idle();
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static int shmobile_suspend_begin(suspend_state_t state)
 | |
| {
 | |
| 	disable_hlt();
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static void shmobile_suspend_end(void)
 | |
| {
 | |
| 	enable_hlt();
 | |
| }
 | |
| 
 | |
| struct platform_suspend_ops shmobile_suspend_ops = {
 | |
| 	.begin		= shmobile_suspend_begin,
 | |
| 	.end		= shmobile_suspend_end,
 | |
| 	.enter		= shmobile_suspend_default_enter,
 | |
| 	.valid		= suspend_valid_only_mem,
 | |
| };
 | |
| 
 | |
| static int __init shmobile_suspend_init(void)
 | |
| {
 | |
| 	suspend_set_ops(&shmobile_suspend_ops);
 | |
| 	return 0;
 | |
| }
 | |
| late_initcall(shmobile_suspend_init);
 |