Commit | Line | Data |
---|---|---|
4029813c EM |
1 | /* |
2 | * linux/arch/arm/mach-pxa/clock-pxa2xx.c | |
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 version 2 as | |
6 | * published by the Free Software Foundation. | |
7 | */ | |
8 | ||
9 | #include <linux/module.h> | |
10 | #include <linux/kernel.h> | |
11 | #include <linux/init.h> | |
23019a73 | 12 | #include <linux/io.h> |
2eaa03b5 | 13 | #include <linux/syscore_ops.h> |
4029813c EM |
14 | |
15 | #include <mach/pxa2xx-regs.h> | |
16 | ||
17 | #include "clock.h" | |
18 | ||
19 | void clk_pxa2xx_cken_enable(struct clk *clk) | |
20 | { | |
21 | CKEN |= 1 << clk->cken; | |
22 | } | |
23 | ||
24 | void clk_pxa2xx_cken_disable(struct clk *clk) | |
25 | { | |
26 | CKEN &= ~(1 << clk->cken); | |
27 | } | |
28 | ||
29 | const struct clkops clk_pxa2xx_cken_ops = { | |
30 | .enable = clk_pxa2xx_cken_enable, | |
31 | .disable = clk_pxa2xx_cken_disable, | |
32 | }; | |
f113fe4e EM |
33 | |
34 | #ifdef CONFIG_PM | |
35 | static uint32_t saved_cken; | |
36 | ||
2eaa03b5 | 37 | static int pxa2xx_clock_suspend(void) |
f113fe4e EM |
38 | { |
39 | saved_cken = CKEN; | |
40 | return 0; | |
41 | } | |
42 | ||
2eaa03b5 | 43 | static void pxa2xx_clock_resume(void) |
f113fe4e EM |
44 | { |
45 | CKEN = saved_cken; | |
f113fe4e EM |
46 | } |
47 | #else | |
48 | #define pxa2xx_clock_suspend NULL | |
49 | #define pxa2xx_clock_resume NULL | |
50 | #endif | |
51 | ||
2eaa03b5 | 52 | struct syscore_ops pxa2xx_clock_syscore_ops = { |
f113fe4e EM |
53 | .suspend = pxa2xx_clock_suspend, |
54 | .resume = pxa2xx_clock_resume, | |
55 | }; |