mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mx27_pm_init() uses its own initcall, unlike all of the other functions like it. Replacing the initcall with a .init_late() callback makes imx27 more like the others and lets us remove the last caller of cpu_is_mx27(). Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			893 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			893 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * 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);
 | 
						|
}
 |