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