diff options
author | eric miao <eric.miao@marvell.com> | 2008-01-28 18:00:02 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-02-04 08:17:33 -0500 |
commit | 16dfdbf038706c12c56f327d14c6b901edc376a3 (patch) | |
tree | 1f761ae7ff1c4ba837d24c69521d5cbe0b2d7e72 /arch/arm/mach-pxa/pxa25x.c | |
parent | c016550490687c6bdbcdf06c7b4d874b6c7c6e4e (diff) |
[ARM] pxa: introduce sysdev for GPIO register saving/restoring
Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa/pxa25x.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 797635eec6b6..599e53fcc2c5 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -142,11 +142,6 @@ static struct clk pxa25x_clks[] = { | |||
142 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x | 142 | #define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x |
143 | #define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] | 143 | #define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x] |
144 | 144 | ||
145 | #define RESTORE_GPLEVEL(n) do { \ | ||
146 | GPSR##n = sleep_save[SLEEP_SAVE_GPLR##n]; \ | ||
147 | GPCR##n = ~sleep_save[SLEEP_SAVE_GPLR##n]; \ | ||
148 | } while (0) | ||
149 | |||
150 | /* | 145 | /* |
151 | * List of global PXA peripheral registers to preserve. | 146 | * List of global PXA peripheral registers to preserve. |
152 | * More ones like CP and general purpose register values are preserved | 147 | * More ones like CP and general purpose register values are preserved |
@@ -154,10 +149,6 @@ static struct clk pxa25x_clks[] = { | |||
154 | */ | 149 | */ |
155 | enum { SLEEP_SAVE_START = 0, | 150 | enum { SLEEP_SAVE_START = 0, |
156 | 151 | ||
157 | SLEEP_SAVE_GPLR0, SLEEP_SAVE_GPLR1, SLEEP_SAVE_GPLR2, | ||
158 | SLEEP_SAVE_GPDR0, SLEEP_SAVE_GPDR1, SLEEP_SAVE_GPDR2, | ||
159 | SLEEP_SAVE_GRER0, SLEEP_SAVE_GRER1, SLEEP_SAVE_GRER2, | ||
160 | SLEEP_SAVE_GFER0, SLEEP_SAVE_GFER1, SLEEP_SAVE_GFER2, | ||
161 | SLEEP_SAVE_PGSR0, SLEEP_SAVE_PGSR1, SLEEP_SAVE_PGSR2, | 152 | SLEEP_SAVE_PGSR0, SLEEP_SAVE_PGSR1, SLEEP_SAVE_PGSR2, |
162 | 153 | ||
163 | SLEEP_SAVE_GAFR0_L, SLEEP_SAVE_GAFR0_U, | 154 | SLEEP_SAVE_GAFR0_L, SLEEP_SAVE_GAFR0_U, |
@@ -174,10 +165,6 @@ enum { SLEEP_SAVE_START = 0, | |||
174 | 165 | ||
175 | static void pxa25x_cpu_pm_save(unsigned long *sleep_save) | 166 | static void pxa25x_cpu_pm_save(unsigned long *sleep_save) |
176 | { | 167 | { |
177 | SAVE(GPLR0); SAVE(GPLR1); SAVE(GPLR2); | ||
178 | SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2); | ||
179 | SAVE(GRER0); SAVE(GRER1); SAVE(GRER2); | ||
180 | SAVE(GFER0); SAVE(GFER1); SAVE(GFER2); | ||
181 | SAVE(PGSR0); SAVE(PGSR1); SAVE(PGSR2); | 168 | SAVE(PGSR0); SAVE(PGSR1); SAVE(PGSR2); |
182 | 169 | ||
183 | SAVE(GAFR0_L); SAVE(GAFR0_U); | 170 | SAVE(GAFR0_L); SAVE(GAFR0_U); |
@@ -197,13 +184,9 @@ static void pxa25x_cpu_pm_restore(unsigned long *sleep_save) | |||
197 | PSPR = 0; | 184 | PSPR = 0; |
198 | 185 | ||
199 | /* restore registers */ | 186 | /* restore registers */ |
200 | RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2); | ||
201 | RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2); | ||
202 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); | 187 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); |
203 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); | 188 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); |
204 | RESTORE(GAFR2_L); RESTORE(GAFR2_U); | 189 | RESTORE(GAFR2_L); RESTORE(GAFR2_U); |
205 | RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2); | ||
206 | RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2); | ||
207 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); | 190 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); |
208 | 191 | ||
209 | PSSR = PSSR_RDH | PSSR_PH; | 192 | PSSR = PSSR_RDH | PSSR_PH; |
@@ -302,6 +285,8 @@ static struct platform_device *pxa25x_devices[] __initdata = { | |||
302 | static struct sys_device pxa25x_sysdev[] = { | 285 | static struct sys_device pxa25x_sysdev[] = { |
303 | { | 286 | { |
304 | .cls = &pxa_irq_sysclass, | 287 | .cls = &pxa_irq_sysclass, |
288 | }, { | ||
289 | .cls = &pxa_gpio_sysclass, | ||
305 | }, | 290 | }, |
306 | }; | 291 | }; |
307 | 292 | ||