diff options
author | Paul Walmsley <paul@pwsan.com> | 2010-12-21 23:05:16 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-12-21 23:05:16 -0500 |
commit | 72e06d087204f3bc9acf281717b90ebf0b9731f7 (patch) | |
tree | 358524d58e5fdb906507ffc9549758c14fce9fbe /arch/arm/mach-omap2 | |
parent | 1540f214065982e6cbc6b8da1fe65a15e358f7c5 (diff) |
OMAP2+: powerdomain: move header file from plat-omap to mach-omap2
The OMAP powerdomain code and data is all OMAP2+-specific. This seems
unlikely to change any time soon. Move plat-omap/include/plat/powerdomain.h
to mach-omap2/powerdomain.h. The primary point of doing this is to remove
the temptation for unrelated upper-layer code to access powerdomain code
and data directly.
As part of this process, remove the references to powerdomain data
from the GPIO "driver" and the OMAP PM no-op layer, both in plat-omap.
Change the DSPBridge code to point to the new location for the
powerdomain headers. The DSPBridge code should not be including the
powerdomain headers; these should be removed.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Omar Ramirez Luna <omar.ramirez@ti.com>
Cc: Felipe Contreras <felipe.contreras@gmail.com>
Cc: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'arch/arm/mach-omap2')
22 files changed, 255 insertions, 58 deletions
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index 650bf685dd99..e20b98636ab4 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include "prcm44xx.h" | 34 | #include "prcm44xx.h" |
35 | 35 | ||
36 | #include <plat/clock.h> | 36 | #include <plat/clock.h> |
37 | #include <plat/powerdomain.h> | 37 | #include "powerdomain.h" |
38 | #include "clockdomain.h" | 38 | #include "clockdomain.h" |
39 | #include <plat/prcm.h> | 39 | #include <plat/prcm.h> |
40 | 40 | ||
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h index 372c64669868..de3faa20b46b 100644 --- a/arch/arm/mach-omap2/clockdomain.h +++ b/arch/arm/mach-omap2/clockdomain.h | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | 20 | ||
21 | #include <plat/powerdomain.h> | 21 | #include "powerdomain.h" |
22 | #include <plat/clock.h> | 22 | #include <plat/clock.h> |
23 | #include <plat/cpu.h> | 23 | #include <plat/cpu.h> |
24 | 24 | ||
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index f518270b3e83..f3e043fe5eb8 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c | |||
@@ -27,7 +27,7 @@ | |||
27 | 27 | ||
28 | #include <plat/prcm.h> | 28 | #include <plat/prcm.h> |
29 | #include <plat/irqs.h> | 29 | #include <plat/irqs.h> |
30 | #include <plat/powerdomain.h> | 30 | #include "powerdomain.h" |
31 | #include "clockdomain.h" | 31 | #include "clockdomain.h" |
32 | #include <plat/serial.h> | 32 | #include <plat/serial.h> |
33 | 33 | ||
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 545182d9faa6..e66687b0b9de 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include "io.h" | 39 | #include "io.h" |
40 | 40 | ||
41 | #include <plat/omap-pm.h> | 41 | #include <plat/omap-pm.h> |
42 | #include <plat/powerdomain.h> | 42 | #include "powerdomain.h" |
43 | 43 | ||
44 | #include "clockdomain.h" | 44 | #include "clockdomain.h" |
45 | #include <plat/omap_hwmod.h> | 45 | #include <plat/omap_hwmod.h> |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index e1358ba51395..12856eb7b179 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -140,7 +140,7 @@ | |||
140 | #include <plat/common.h> | 140 | #include <plat/common.h> |
141 | #include <plat/cpu.h> | 141 | #include <plat/cpu.h> |
142 | #include "clockdomain.h" | 142 | #include "clockdomain.h" |
143 | #include <plat/powerdomain.h> | 143 | #include "powerdomain.h" |
144 | #include <plat/clock.h> | 144 | #include <plat/clock.h> |
145 | #include <plat/omap_hwmod.h> | 145 | #include <plat/omap_hwmod.h> |
146 | #include <plat/prcm.h> | 146 | #include <plat/prcm.h> |
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 3f989896a36c..e535082b0c2e 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c | |||
@@ -29,7 +29,7 @@ | |||
29 | 29 | ||
30 | #include <plat/clock.h> | 30 | #include <plat/clock.h> |
31 | #include <plat/board.h> | 31 | #include <plat/board.h> |
32 | #include <plat/powerdomain.h> | 32 | #include "powerdomain.h" |
33 | #include "clockdomain.h" | 33 | #include "clockdomain.h" |
34 | #include <plat/dmtimer.h> | 34 | #include <plat/dmtimer.h> |
35 | 35 | ||
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 24228e9dd496..227a211921c3 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <plat/omap_device.h> | 18 | #include <plat/omap_device.h> |
19 | #include <plat/common.h> | 19 | #include <plat/common.h> |
20 | 20 | ||
21 | #include <plat/powerdomain.h> | 21 | #include "powerdomain.h" |
22 | #include "clockdomain.h" | 22 | #include "clockdomain.h" |
23 | 23 | ||
24 | static struct omap_device_pm_latency *pm_lats; | 24 | static struct omap_device_pm_latency *pm_lats; |
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index 8b4f45eba1b5..482df7fc1585 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -11,7 +11,7 @@ | |||
11 | #ifndef __ARCH_ARM_MACH_OMAP2_PM_H | 11 | #ifndef __ARCH_ARM_MACH_OMAP2_PM_H |
12 | #define __ARCH_ARM_MACH_OMAP2_PM_H | 12 | #define __ARCH_ARM_MACH_OMAP2_PM_H |
13 | 13 | ||
14 | #include <plat/powerdomain.h> | 14 | #include "powerdomain.h" |
15 | 15 | ||
16 | extern void *omap3_secure_ram_storage; | 16 | extern void *omap3_secure_ram_storage; |
17 | extern void omap3_pm_off_mode_enable(int); | 17 | extern void omap3_pm_off_mode_enable(int); |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index f6aef7687b8a..2844b84f8d46 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -50,7 +50,7 @@ | |||
50 | #include "pm.h" | 50 | #include "pm.h" |
51 | #include "control.h" | 51 | #include "control.h" |
52 | 52 | ||
53 | #include <plat/powerdomain.h> | 53 | #include "powerdomain.h" |
54 | #include "clockdomain.h" | 54 | #include "clockdomain.h" |
55 | 55 | ||
56 | #ifdef CONFIG_SUSPEND | 56 | #ifdef CONFIG_SUSPEND |
@@ -120,7 +120,7 @@ static void omap2_enter_full_retention(void) | |||
120 | l = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0) | OMAP24XX_USBSTANDBYCTRL; | 120 | l = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0) | OMAP24XX_USBSTANDBYCTRL; |
121 | omap_ctrl_writel(l, OMAP2_CONTROL_DEVCONF0); | 121 | omap_ctrl_writel(l, OMAP2_CONTROL_DEVCONF0); |
122 | 122 | ||
123 | omap2_gpio_prepare_for_idle(PWRDM_POWER_RET); | 123 | omap2_gpio_prepare_for_idle(0); |
124 | 124 | ||
125 | if (omap2_pm_debug) { | 125 | if (omap2_pm_debug) { |
126 | omap2_pm_dump(0, 0, 0); | 126 | omap2_pm_dump(0, 0, 0); |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 0fae3d6b76e8..5efd1fb8c640 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | #include <plat/sram.h> | 33 | #include <plat/sram.h> |
34 | #include "clockdomain.h" | 34 | #include "clockdomain.h" |
35 | #include <plat/powerdomain.h> | 35 | #include "powerdomain.h" |
36 | #include <plat/serial.h> | 36 | #include <plat/serial.h> |
37 | #include <plat/sdrc.h> | 37 | #include <plat/sdrc.h> |
38 | #include <plat/prcm.h> | 38 | #include <plat/prcm.h> |
@@ -360,6 +360,7 @@ void omap_sram_idle(void) | |||
360 | int mpu_next_state = PWRDM_POWER_ON; | 360 | int mpu_next_state = PWRDM_POWER_ON; |
361 | int per_next_state = PWRDM_POWER_ON; | 361 | int per_next_state = PWRDM_POWER_ON; |
362 | int core_next_state = PWRDM_POWER_ON; | 362 | int core_next_state = PWRDM_POWER_ON; |
363 | int per_going_off; | ||
363 | int core_prev_state, per_prev_state; | 364 | int core_prev_state, per_prev_state; |
364 | u32 sdrc_pwr = 0; | 365 | u32 sdrc_pwr = 0; |
365 | 366 | ||
@@ -411,9 +412,10 @@ void omap_sram_idle(void) | |||
411 | 412 | ||
412 | /* PER */ | 413 | /* PER */ |
413 | if (per_next_state < PWRDM_POWER_ON) { | 414 | if (per_next_state < PWRDM_POWER_ON) { |
415 | per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0; | ||
414 | omap_uart_prepare_idle(2); | 416 | omap_uart_prepare_idle(2); |
415 | omap_uart_prepare_idle(3); | 417 | omap_uart_prepare_idle(3); |
416 | omap2_gpio_prepare_for_idle(per_next_state); | 418 | omap2_gpio_prepare_for_idle(per_going_off); |
417 | if (per_next_state == PWRDM_POWER_OFF) | 419 | if (per_next_state == PWRDM_POWER_OFF) |
418 | omap3_per_save_context(); | 420 | omap3_per_save_context(); |
419 | } | 421 | } |
diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c index 6aff9961e35d..e9f4862c4de4 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/err.h> | 16 | #include <linux/err.h> |
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | 18 | ||
19 | #include <plat/powerdomain.h> | 19 | #include "powerdomain.h" |
20 | #include <mach/omap4-common.h> | 20 | #include <mach/omap4-common.h> |
21 | 21 | ||
22 | struct power_state { | 22 | struct power_state { |
diff --git a/arch/arm/mach-omap2/powerdomain-common.c b/arch/arm/mach-omap2/powerdomain-common.c index cb01c7a3689a..171fccd208c7 100644 --- a/arch/arm/mach-omap2/powerdomain-common.c +++ b/arch/arm/mach-omap2/powerdomain-common.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include "cm-regbits-44xx.h" | 20 | #include "cm-regbits-44xx.h" |
21 | #include "prm-regbits-34xx.h" | 21 | #include "prm-regbits-34xx.h" |
22 | #include "prm-regbits-44xx.h" | 22 | #include "prm-regbits-44xx.h" |
23 | #include "powerdomains.h" | ||
24 | 23 | ||
25 | /* | 24 | /* |
26 | * OMAP3 and OMAP4 specific register bit initialisations | 25 | * OMAP3 and OMAP4 specific register bit initialisations |
diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 7eb7ba49d6bf..06ef60eebebd 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "prm44xx.h" | 26 | #include "prm44xx.h" |
27 | 27 | ||
28 | #include <plat/cpu.h> | 28 | #include <plat/cpu.h> |
29 | #include <plat/powerdomain.h> | 29 | #include "powerdomain.h" |
30 | #include "clockdomain.h" | 30 | #include "clockdomain.h" |
31 | #include <plat/prcm.h> | 31 | #include <plat/prcm.h> |
32 | 32 | ||
diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h new file mode 100644 index 000000000000..35b5b4800a43 --- /dev/null +++ b/arch/arm/mach-omap2/powerdomain.h | |||
@@ -0,0 +1,232 @@ | |||
1 | /* | ||
2 | * OMAP2/3/4 powerdomain control | ||
3 | * | ||
4 | * Copyright (C) 2007-2008, 2010 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2007-2010 Nokia Corporation | ||
6 | * | ||
7 | * Paul Walmsley | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * XXX This should be moved to the mach-omap2/ directory at the earliest | ||
14 | * opportunity. | ||
15 | */ | ||
16 | |||
17 | #ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAIN_H | ||
18 | #define __ARCH_ARM_MACH_OMAP2_POWERDOMAIN_H | ||
19 | |||
20 | #include <linux/types.h> | ||
21 | #include <linux/list.h> | ||
22 | |||
23 | #include <linux/atomic.h> | ||
24 | |||
25 | #include <plat/cpu.h> | ||
26 | |||
27 | /* Powerdomain basic power states */ | ||
28 | #define PWRDM_POWER_OFF 0x0 | ||
29 | #define PWRDM_POWER_RET 0x1 | ||
30 | #define PWRDM_POWER_INACTIVE 0x2 | ||
31 | #define PWRDM_POWER_ON 0x3 | ||
32 | |||
33 | #define PWRDM_MAX_PWRSTS 4 | ||
34 | |||
35 | /* Powerdomain allowable state bitfields */ | ||
36 | #define PWRSTS_ON (1 << PWRDM_POWER_ON) | ||
37 | #define PWRSTS_OFF (1 << PWRDM_POWER_OFF) | ||
38 | #define PWRSTS_OFF_ON ((1 << PWRDM_POWER_OFF) | \ | ||
39 | (1 << PWRDM_POWER_ON)) | ||
40 | |||
41 | #define PWRSTS_OFF_RET ((1 << PWRDM_POWER_OFF) | \ | ||
42 | (1 << PWRDM_POWER_RET)) | ||
43 | |||
44 | #define PWRSTS_RET_ON ((1 << PWRDM_POWER_RET) | \ | ||
45 | (1 << PWRDM_POWER_ON)) | ||
46 | |||
47 | #define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | (1 << PWRDM_POWER_ON)) | ||
48 | |||
49 | |||
50 | /* Powerdomain flags */ | ||
51 | #define PWRDM_HAS_HDWR_SAR (1 << 0) /* hardware save-and-restore support */ | ||
52 | #define PWRDM_HAS_MPU_QUIRK (1 << 1) /* MPU pwr domain has MEM bank 0 bits | ||
53 | * in MEM bank 1 position. This is | ||
54 | * true for OMAP3430 | ||
55 | */ | ||
56 | #define PWRDM_HAS_LOWPOWERSTATECHANGE (1 << 2) /* | ||
57 | * support to transition from a | ||
58 | * sleep state to a lower sleep | ||
59 | * state without waking up the | ||
60 | * powerdomain | ||
61 | */ | ||
62 | |||
63 | /* | ||
64 | * Number of memory banks that are power-controllable. On OMAP4430, the | ||
65 | * maximum is 5. | ||
66 | */ | ||
67 | #define PWRDM_MAX_MEM_BANKS 5 | ||
68 | |||
69 | /* | ||
70 | * Maximum number of clockdomains that can be associated with a powerdomain. | ||
71 | * CORE powerdomain on OMAP4 is the worst case | ||
72 | */ | ||
73 | #define PWRDM_MAX_CLKDMS 9 | ||
74 | |||
75 | /* XXX A completely arbitrary number. What is reasonable here? */ | ||
76 | #define PWRDM_TRANSITION_BAILOUT 100000 | ||
77 | |||
78 | struct clockdomain; | ||
79 | struct powerdomain; | ||
80 | |||
81 | /** | ||
82 | * struct powerdomain - OMAP powerdomain | ||
83 | * @name: Powerdomain name | ||
84 | * @omap_chip: represents the OMAP chip types containing this pwrdm | ||
85 | * @prcm_offs: the address offset from CM_BASE/PRM_BASE | ||
86 | * @prcm_partition: (OMAP4 only) the PRCM partition ID containing @prcm_offs | ||
87 | * @pwrsts: Possible powerdomain power states | ||
88 | * @pwrsts_logic_ret: Possible logic power states when pwrdm in RETENTION | ||
89 | * @flags: Powerdomain flags | ||
90 | * @banks: Number of software-controllable memory banks in this powerdomain | ||
91 | * @pwrsts_mem_ret: Possible memory bank pwrstates when pwrdm in RETENTION | ||
92 | * @pwrsts_mem_on: Possible memory bank pwrstates when pwrdm in ON | ||
93 | * @pwrdm_clkdms: Clockdomains in this powerdomain | ||
94 | * @node: list_head linking all powerdomains | ||
95 | * @state: | ||
96 | * @state_counter: | ||
97 | * @timer: | ||
98 | * @state_timer: | ||
99 | * | ||
100 | * @prcm_partition possible values are defined in mach-omap2/prcm44xx.h. | ||
101 | */ | ||
102 | struct powerdomain { | ||
103 | const char *name; | ||
104 | const struct omap_chip_id omap_chip; | ||
105 | const s16 prcm_offs; | ||
106 | const u8 pwrsts; | ||
107 | const u8 pwrsts_logic_ret; | ||
108 | const u8 flags; | ||
109 | const u8 banks; | ||
110 | const u8 pwrsts_mem_ret[PWRDM_MAX_MEM_BANKS]; | ||
111 | const u8 pwrsts_mem_on[PWRDM_MAX_MEM_BANKS]; | ||
112 | const u8 prcm_partition; | ||
113 | struct clockdomain *pwrdm_clkdms[PWRDM_MAX_CLKDMS]; | ||
114 | struct list_head node; | ||
115 | int state; | ||
116 | unsigned state_counter[PWRDM_MAX_PWRSTS]; | ||
117 | unsigned ret_logic_off_counter; | ||
118 | unsigned ret_mem_off_counter[PWRDM_MAX_MEM_BANKS]; | ||
119 | |||
120 | #ifdef CONFIG_PM_DEBUG | ||
121 | s64 timer; | ||
122 | s64 state_timer[PWRDM_MAX_PWRSTS]; | ||
123 | #endif | ||
124 | }; | ||
125 | |||
126 | /** | ||
127 | * struct pwrdm_ops - Arch specfic function implementations | ||
128 | * @pwrdm_set_next_pwrst: Set the target power state for a pd | ||
129 | * @pwrdm_read_next_pwrst: Read the target power state set for a pd | ||
130 | * @pwrdm_read_pwrst: Read the current power state of a pd | ||
131 | * @pwrdm_read_prev_pwrst: Read the prev power state entered by the pd | ||
132 | * @pwrdm_set_logic_retst: Set the logic state in RET for a pd | ||
133 | * @pwrdm_set_mem_onst: Set the Memory state in ON for a pd | ||
134 | * @pwrdm_set_mem_retst: Set the Memory state in RET for a pd | ||
135 | * @pwrdm_read_logic_pwrst: Read the current logic state of a pd | ||
136 | * @pwrdm_read_prev_logic_pwrst: Read the previous logic state entered by a pd | ||
137 | * @pwrdm_read_logic_retst: Read the logic state in RET for a pd | ||
138 | * @pwrdm_read_mem_pwrst: Read the current memory state of a pd | ||
139 | * @pwrdm_read_prev_mem_pwrst: Read the previous memory state entered by a pd | ||
140 | * @pwrdm_read_mem_retst: Read the memory state in RET for a pd | ||
141 | * @pwrdm_clear_all_prev_pwrst: Clear all previous power states logged for a pd | ||
142 | * @pwrdm_enable_hdwr_sar: Enable Hardware Save-Restore feature for the pd | ||
143 | * @pwrdm_disable_hdwr_sar: Disable Hardware Save-Restore feature for a pd | ||
144 | * @pwrdm_set_lowpwrstchange: Enable pd transitions from a shallow to deep sleep | ||
145 | * @pwrdm_wait_transition: Wait for a pd state transition to complete | ||
146 | */ | ||
147 | struct pwrdm_ops { | ||
148 | int (*pwrdm_set_next_pwrst)(struct powerdomain *pwrdm, u8 pwrst); | ||
149 | int (*pwrdm_read_next_pwrst)(struct powerdomain *pwrdm); | ||
150 | int (*pwrdm_read_pwrst)(struct powerdomain *pwrdm); | ||
151 | int (*pwrdm_read_prev_pwrst)(struct powerdomain *pwrdm); | ||
152 | int (*pwrdm_set_logic_retst)(struct powerdomain *pwrdm, u8 pwrst); | ||
153 | int (*pwrdm_set_mem_onst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst); | ||
154 | int (*pwrdm_set_mem_retst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst); | ||
155 | int (*pwrdm_read_logic_pwrst)(struct powerdomain *pwrdm); | ||
156 | int (*pwrdm_read_prev_logic_pwrst)(struct powerdomain *pwrdm); | ||
157 | int (*pwrdm_read_logic_retst)(struct powerdomain *pwrdm); | ||
158 | int (*pwrdm_read_mem_pwrst)(struct powerdomain *pwrdm, u8 bank); | ||
159 | int (*pwrdm_read_prev_mem_pwrst)(struct powerdomain *pwrdm, u8 bank); | ||
160 | int (*pwrdm_read_mem_retst)(struct powerdomain *pwrdm, u8 bank); | ||
161 | int (*pwrdm_clear_all_prev_pwrst)(struct powerdomain *pwrdm); | ||
162 | int (*pwrdm_enable_hdwr_sar)(struct powerdomain *pwrdm); | ||
163 | int (*pwrdm_disable_hdwr_sar)(struct powerdomain *pwrdm); | ||
164 | int (*pwrdm_set_lowpwrstchange)(struct powerdomain *pwrdm); | ||
165 | int (*pwrdm_wait_transition)(struct powerdomain *pwrdm); | ||
166 | }; | ||
167 | |||
168 | void pwrdm_fw_init(void); | ||
169 | void pwrdm_init(struct powerdomain **pwrdm_list, struct pwrdm_ops *custom_funcs); | ||
170 | |||
171 | struct powerdomain *pwrdm_lookup(const char *name); | ||
172 | |||
173 | int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user), | ||
174 | void *user); | ||
175 | int pwrdm_for_each_nolock(int (*fn)(struct powerdomain *pwrdm, void *user), | ||
176 | void *user); | ||
177 | |||
178 | int pwrdm_add_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); | ||
179 | int pwrdm_del_clkdm(struct powerdomain *pwrdm, struct clockdomain *clkdm); | ||
180 | int pwrdm_for_each_clkdm(struct powerdomain *pwrdm, | ||
181 | int (*fn)(struct powerdomain *pwrdm, | ||
182 | struct clockdomain *clkdm)); | ||
183 | |||
184 | int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm); | ||
185 | |||
186 | int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst); | ||
187 | int pwrdm_read_next_pwrst(struct powerdomain *pwrdm); | ||
188 | int pwrdm_read_pwrst(struct powerdomain *pwrdm); | ||
189 | int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm); | ||
190 | int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm); | ||
191 | |||
192 | int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst); | ||
193 | int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst); | ||
194 | int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst); | ||
195 | |||
196 | int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm); | ||
197 | int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm); | ||
198 | int pwrdm_read_logic_retst(struct powerdomain *pwrdm); | ||
199 | int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank); | ||
200 | int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank); | ||
201 | int pwrdm_read_mem_retst(struct powerdomain *pwrdm, u8 bank); | ||
202 | |||
203 | int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm); | ||
204 | int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm); | ||
205 | bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm); | ||
206 | |||
207 | int pwrdm_wait_transition(struct powerdomain *pwrdm); | ||
208 | |||
209 | int pwrdm_state_switch(struct powerdomain *pwrdm); | ||
210 | int pwrdm_clkdm_state_switch(struct clockdomain *clkdm); | ||
211 | int pwrdm_pre_transition(void); | ||
212 | int pwrdm_post_transition(void); | ||
213 | int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm); | ||
214 | |||
215 | extern void omap2xxx_powerdomains_init(void); | ||
216 | extern void omap3xxx_powerdomains_init(void); | ||
217 | extern void omap44xx_powerdomains_init(void); | ||
218 | |||
219 | extern struct pwrdm_ops omap2_pwrdm_operations; | ||
220 | extern struct pwrdm_ops omap3_pwrdm_operations; | ||
221 | extern struct pwrdm_ops omap4_pwrdm_operations; | ||
222 | |||
223 | /* Common Internal functions used across OMAP rev's */ | ||
224 | extern u32 omap2_pwrdm_get_mem_bank_onstate_mask(u8 bank); | ||
225 | extern u32 omap2_pwrdm_get_mem_bank_retst_mask(u8 bank); | ||
226 | extern u32 omap2_pwrdm_get_mem_bank_stst_mask(u8 bank); | ||
227 | |||
228 | extern struct powerdomain wkup_omap2_pwrdm; | ||
229 | extern struct powerdomain gfx_omap2_pwrdm; | ||
230 | |||
231 | |||
232 | #endif | ||
diff --git a/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c b/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c index b5e9e4d18b8c..d5233890370c 100644 --- a/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c | |||
@@ -18,8 +18,8 @@ | |||
18 | 18 | ||
19 | #include <plat/prcm.h> | 19 | #include <plat/prcm.h> |
20 | 20 | ||
21 | #include "powerdomain.h" | ||
21 | #include "prm-regbits-34xx.h" | 22 | #include "prm-regbits-34xx.h" |
22 | #include "powerdomains.h" | ||
23 | #include "prm.h" | 23 | #include "prm.h" |
24 | #include "prm-regbits-24xx.h" | 24 | #include "prm-regbits-24xx.h" |
25 | #include "prm-regbits-34xx.h" | 25 | #include "prm-regbits-34xx.h" |
diff --git a/arch/arm/mach-omap2/powerdomain44xx.c b/arch/arm/mach-omap2/powerdomain44xx.c index 28bf5e3b000c..a7880af4b3d9 100644 --- a/arch/arm/mach-omap2/powerdomain44xx.c +++ b/arch/arm/mach-omap2/powerdomain44xx.c | |||
@@ -16,13 +16,12 @@ | |||
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | 18 | ||
19 | #include <plat/powerdomain.h> | 19 | #include "powerdomain.h" |
20 | #include <plat/prcm.h> | 20 | #include <plat/prcm.h> |
21 | #include "prm2xxx_3xxx.h" | 21 | #include "prm2xxx_3xxx.h" |
22 | #include "prm44xx.h" | 22 | #include "prm44xx.h" |
23 | #include "prminst44xx.h" | 23 | #include "prminst44xx.h" |
24 | #include "prm-regbits-44xx.h" | 24 | #include "prm-regbits-44xx.h" |
25 | #include "powerdomains.h" | ||
26 | 25 | ||
27 | static int omap4_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | 26 | static int omap4_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) |
28 | { | 27 | { |
diff --git a/arch/arm/mach-omap2/powerdomains.h b/arch/arm/mach-omap2/powerdomains.h deleted file mode 100644 index f83adaf889ee..000000000000 --- a/arch/arm/mach-omap2/powerdomains.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | /* | ||
2 | * OMAP2+ powerdomain prototypes | ||
3 | * | ||
4 | * Copyright (C) 2010 Texas Instruments, Inc. | ||
5 | * | ||
6 | * Rajendra Nayak <rnayak@ti.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS_H | ||
14 | #define ARCH_ARM_MACH_OMAP2_POWERDOMAINS_H | ||
15 | |||
16 | #include <plat/powerdomain.h> | ||
17 | |||
18 | extern struct pwrdm_ops omap2_pwrdm_operations; | ||
19 | extern struct pwrdm_ops omap3_pwrdm_operations; | ||
20 | extern struct pwrdm_ops omap4_pwrdm_operations; | ||
21 | |||
22 | /* Common Internal functions used across OMAP rev's */ | ||
23 | extern u32 omap2_pwrdm_get_mem_bank_onstate_mask(u8 bank); | ||
24 | extern u32 omap2_pwrdm_get_mem_bank_retst_mask(u8 bank); | ||
25 | extern u32 omap2_pwrdm_get_mem_bank_stst_mask(u8 bank); | ||
26 | |||
27 | extern struct powerdomain wkup_omap2_pwrdm; | ||
28 | extern struct powerdomain gfx_omap2_pwrdm; | ||
29 | |||
30 | #endif | ||
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c index 14c6ef7e01e3..5b4dd971320a 100644 --- a/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c +++ b/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c | |||
@@ -45,13 +45,11 @@ | |||
45 | * address offset is different between the C55 and C64 DSPs. | 45 | * address offset is different between the C55 and C64 DSPs. |
46 | */ | 46 | */ |
47 | 47 | ||
48 | #include <plat/powerdomain.h> | 48 | #include "powerdomain.h" |
49 | 49 | ||
50 | #include "prcm-common.h" | 50 | #include "prcm-common.h" |
51 | #include "prm.h" | 51 | #include "prm.h" |
52 | 52 | ||
53 | #include "powerdomains.h" | ||
54 | |||
55 | /* OMAP2/3-common powerdomains */ | 53 | /* OMAP2/3-common powerdomains */ |
56 | 54 | ||
57 | /* | 55 | /* |
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h b/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h index 45d684a3bf2b..fa311669d53d 100644 --- a/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h +++ b/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H | 14 | #ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H |
15 | #define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H | 15 | #define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H |
16 | 16 | ||
17 | #include <plat/powerdomain.h> | 17 | #include "powerdomain.h" |
18 | 18 | ||
19 | extern struct powerdomain gfx_omap2_pwrdm; | 19 | extern struct powerdomain gfx_omap2_pwrdm; |
20 | extern struct powerdomain wkup_omap2_pwrdm; | 20 | extern struct powerdomain wkup_omap2_pwrdm; |
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_data.c index e136895e0a37..9b1a33500577 100644 --- a/arch/arm/mach-omap2/powerdomains2xxx_data.c +++ b/arch/arm/mach-omap2/powerdomains2xxx_data.c | |||
@@ -14,9 +14,8 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | 16 | ||
17 | #include <plat/powerdomain.h> | 17 | #include "powerdomain.h" |
18 | #include "powerdomains2xxx_3xxx_data.h" | 18 | #include "powerdomains2xxx_3xxx_data.h" |
19 | #include "powerdomains.h" | ||
20 | 19 | ||
21 | #include "prcm-common.h" | 20 | #include "prcm-common.h" |
22 | #include "prm2xxx_3xxx.h" | 21 | #include "prm2xxx_3xxx.h" |
diff --git a/arch/arm/mach-omap2/powerdomains3xxx_data.c b/arch/arm/mach-omap2/powerdomains3xxx_data.c index 1830c63ae676..e1bec562625b 100644 --- a/arch/arm/mach-omap2/powerdomains3xxx_data.c +++ b/arch/arm/mach-omap2/powerdomains3xxx_data.c | |||
@@ -14,9 +14,8 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | 16 | ||
17 | #include <plat/powerdomain.h> | 17 | #include "powerdomain.h" |
18 | #include "powerdomains2xxx_3xxx_data.h" | 18 | #include "powerdomains2xxx_3xxx_data.h" |
19 | #include "powerdomains.h" | ||
20 | 19 | ||
21 | #include "prcm-common.h" | 20 | #include "prcm-common.h" |
22 | #include "prm2xxx_3xxx.h" | 21 | #include "prm2xxx_3xxx.h" |
diff --git a/arch/arm/mach-omap2/powerdomains44xx_data.c b/arch/arm/mach-omap2/powerdomains44xx_data.c index 823f4770f947..5fdf485a022a 100644 --- a/arch/arm/mach-omap2/powerdomains44xx_data.c +++ b/arch/arm/mach-omap2/powerdomains44xx_data.c | |||
@@ -22,8 +22,7 @@ | |||
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | 24 | ||
25 | #include <plat/powerdomain.h> | 25 | #include "powerdomain.h" |
26 | #include "powerdomains.h" | ||
27 | 26 | ||
28 | #include "prcm-common.h" | 27 | #include "prcm-common.h" |
29 | #include "prcm44xx.h" | 28 | #include "prcm44xx.h" |