| /* | 
 |  * linux/arch/arm/mach-pxa/clock-pxa2xx.c | 
 |  * | 
 |  * This program is free software; you can redistribute it and/or modify | 
 |  * it under the terms of the GNU General Public License version 2 as | 
 |  * published by the Free Software Foundation. | 
 |  */ | 
 |  | 
 | #include <linux/module.h> | 
 | #include <linux/kernel.h> | 
 | #include <linux/init.h> | 
 | #include <linux/io.h> | 
 | #include <linux/syscore_ops.h> | 
 |  | 
 | #include <mach/pxa2xx-regs.h> | 
 |  | 
 | #include "clock.h" | 
 |  | 
 | void clk_pxa2xx_cken_enable(struct clk *clk) | 
 | { | 
 | 	CKEN |= 1 << clk->cken; | 
 | } | 
 |  | 
 | void clk_pxa2xx_cken_disable(struct clk *clk) | 
 | { | 
 | 	CKEN &= ~(1 << clk->cken); | 
 | } | 
 |  | 
 | const struct clkops clk_pxa2xx_cken_ops = { | 
 | 	.enable		= clk_pxa2xx_cken_enable, | 
 | 	.disable	= clk_pxa2xx_cken_disable, | 
 | }; | 
 |  | 
 | #ifdef CONFIG_PM | 
 | static uint32_t saved_cken; | 
 |  | 
 | static int pxa2xx_clock_suspend(void) | 
 | { | 
 | 	saved_cken = CKEN; | 
 | 	return 0; | 
 | } | 
 |  | 
 | static void pxa2xx_clock_resume(void) | 
 | { | 
 | 	CKEN = saved_cken; | 
 | } | 
 | #else | 
 | #define pxa2xx_clock_suspend	NULL | 
 | #define pxa2xx_clock_resume	NULL | 
 | #endif | 
 |  | 
 | struct syscore_ops pxa2xx_clock_syscore_ops = { | 
 | 	.suspend	= pxa2xx_clock_suspend, | 
 | 	.resume		= pxa2xx_clock_resume, | 
 | }; |