diff options
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r-- | arch/arm/mach-pxa/Makefile | 4 | ||||
-rw-r--r-- | arch/arm/mach-pxa/corgi.c | 42 | ||||
-rw-r--r-- | arch/arm/mach-pxa/idp.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-pxa/lubbock.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-pxa/mainstone.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-pxa/poodle.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa27x.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-pxa/standby.S | 32 |
8 files changed, 97 insertions, 40 deletions
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index c4e6d2523585..efc2f657184e 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -24,3 +24,7 @@ obj-$(CONFIG_LEDS) += $(led-y) | |||
24 | 24 | ||
25 | # Misc features | 25 | # Misc features |
26 | obj-$(CONFIG_PM) += pm.o sleep.o | 26 | obj-$(CONFIG_PM) += pm.o sleep.o |
27 | |||
28 | ifeq ($(CONFIG_PXA27x),y) | ||
29 | obj-$(CONFIG_PM) += standby.o | ||
30 | endif | ||
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index f691cf77d390..86b862f56e7e 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -287,34 +287,40 @@ static void __init corgi_map_io(void) | |||
287 | 287 | ||
288 | #ifdef CONFIG_MACH_CORGI | 288 | #ifdef CONFIG_MACH_CORGI |
289 | MACHINE_START(CORGI, "SHARP Corgi") | 289 | MACHINE_START(CORGI, "SHARP Corgi") |
290 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 290 | .phys_ram = 0xa0000000, |
291 | FIXUP(fixup_corgi) | 291 | .phys_io = 0x40000000, |
292 | MAPIO(corgi_map_io) | 292 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
293 | INITIRQ(corgi_init_irq) | 293 | .fixup = fixup_corgi, |
294 | .init_machine = corgi_init, | 294 | .map_io = corgi_map_io, |
295 | .timer = &pxa_timer, | 295 | .init_irq = corgi_init_irq, |
296 | .init_machine = corgi_init, | ||
297 | .timer = &pxa_timer, | ||
296 | MACHINE_END | 298 | MACHINE_END |
297 | #endif | 299 | #endif |
298 | 300 | ||
299 | #ifdef CONFIG_MACH_SHEPHERD | 301 | #ifdef CONFIG_MACH_SHEPHERD |
300 | MACHINE_START(SHEPHERD, "SHARP Shepherd") | 302 | MACHINE_START(SHEPHERD, "SHARP Shepherd") |
301 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 303 | .phys_ram = 0xa0000000, |
302 | FIXUP(fixup_corgi) | 304 | .phys_io = 0x40000000, |
303 | MAPIO(corgi_map_io) | 305 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
304 | INITIRQ(corgi_init_irq) | 306 | .fixup = fixup_corgi, |
305 | .init_machine = corgi_init, | 307 | .map_io = corgi_map_io, |
306 | .timer = &pxa_timer, | 308 | .init_irq = corgi_init_irq, |
309 | .init_machine = corgi_init, | ||
310 | .timer = &pxa_timer, | ||
307 | MACHINE_END | 311 | MACHINE_END |
308 | #endif | 312 | #endif |
309 | 313 | ||
310 | #ifdef CONFIG_MACH_HUSKY | 314 | #ifdef CONFIG_MACH_HUSKY |
311 | MACHINE_START(HUSKY, "SHARP Husky") | 315 | MACHINE_START(HUSKY, "SHARP Husky") |
312 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 316 | .phys_ram = 0xa0000000, |
313 | FIXUP(fixup_corgi) | 317 | .phys_io = 0x40000000, |
314 | MAPIO(corgi_map_io) | 318 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
315 | INITIRQ(corgi_init_irq) | 319 | .fixup = fixup_corgi, |
316 | .init_machine = corgi_init, | 320 | .map_io = corgi_map_io, |
317 | .timer = &pxa_timer, | 321 | .init_irq = corgi_init_irq, |
322 | .init_machine = corgi_init, | ||
323 | .timer = &pxa_timer, | ||
318 | MACHINE_END | 324 | MACHINE_END |
319 | #endif | 325 | #endif |
320 | 326 | ||
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c index c5a66bf4d3d5..386e107b53cc 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c | |||
@@ -181,10 +181,12 @@ static void __init idp_map_io(void) | |||
181 | 181 | ||
182 | 182 | ||
183 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") | 183 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") |
184 | MAINTAINER("Vibren Technologies") | 184 | /* Maintainer: Vibren Technologies */ |
185 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 185 | .phys_ram = 0xa0000000, |
186 | MAPIO(idp_map_io) | 186 | .phys_io = 0x40000000, |
187 | INITIRQ(idp_init_irq) | 187 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
188 | .map_io = idp_map_io, | ||
189 | .init_irq = idp_init_irq, | ||
188 | .timer = &pxa_timer, | 190 | .timer = &pxa_timer, |
189 | INIT_MACHINE(idp_init) | 191 | .init_machine = idp_init, |
190 | MACHINE_END | 192 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index f2c9e0d2b24b..6309853b59be 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -268,10 +268,12 @@ static void __init lubbock_map_io(void) | |||
268 | } | 268 | } |
269 | 269 | ||
270 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") | 270 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") |
271 | MAINTAINER("MontaVista Software Inc.") | 271 | /* Maintainer: MontaVista Software Inc. */ |
272 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 272 | .phys_ram = 0xa0000000, |
273 | MAPIO(lubbock_map_io) | 273 | .phys_io = 0x40000000, |
274 | INITIRQ(lubbock_init_irq) | 274 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
275 | .map_io = lubbock_map_io, | ||
276 | .init_irq = lubbock_init_irq, | ||
275 | .timer = &pxa_timer, | 277 | .timer = &pxa_timer, |
276 | INIT_MACHINE(lubbock_init) | 278 | .init_machine = lubbock_init, |
277 | MACHINE_END | 279 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 9896afca751f..827b7b5a5be8 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -345,10 +345,12 @@ static void __init mainstone_map_io(void) | |||
345 | } | 345 | } |
346 | 346 | ||
347 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | 347 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") |
348 | MAINTAINER("MontaVista Software Inc.") | 348 | /* Maintainer: MontaVista Software Inc. */ |
349 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 349 | .phys_ram = 0xa0000000, |
350 | MAPIO(mainstone_map_io) | 350 | .phys_io = 0x40000000, |
351 | INITIRQ(mainstone_init_irq) | 351 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
352 | .map_io = mainstone_map_io, | ||
353 | .init_irq = mainstone_init_irq, | ||
352 | .timer = &pxa_timer, | 354 | .timer = &pxa_timer, |
353 | INIT_MACHINE(mainstone_init) | 355 | .init_machine = mainstone_init, |
354 | MACHINE_END | 356 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index b6c746ea3830..0e4f6fab100a 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -180,10 +180,12 @@ static void __init poodle_map_io(void) | |||
180 | } | 180 | } |
181 | 181 | ||
182 | MACHINE_START(POODLE, "SHARP Poodle") | 182 | MACHINE_START(POODLE, "SHARP Poodle") |
183 | BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) | 183 | .phys_ram = 0xa0000000, |
184 | FIXUP(fixup_poodle) | 184 | .phys_io = 0x40000000, |
185 | MAPIO(poodle_map_io) | 185 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
186 | INITIRQ(pxa_init_irq) | 186 | .fixup = fixup_poodle, |
187 | .timer = &pxa_timer, | 187 | .map_io = poodle_map_io, |
188 | .init_machine = poodle_init, | 188 | .init_irq = pxa_init_irq, |
189 | .timer = &pxa_timer, | ||
190 | .init_machine = poodle_init, | ||
189 | MACHINE_END | 191 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 893964fb9659..9a791b07118d 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -126,6 +126,7 @@ int pxa_cpu_pm_prepare(suspend_state_t state) | |||
126 | { | 126 | { |
127 | switch (state) { | 127 | switch (state) { |
128 | case PM_SUSPEND_MEM: | 128 | case PM_SUSPEND_MEM: |
129 | case PM_SUSPEND_STANDBY: | ||
129 | return 0; | 130 | return 0; |
130 | default: | 131 | default: |
131 | return -EINVAL; | 132 | return -EINVAL; |
@@ -138,7 +139,10 @@ void pxa_cpu_pm_enter(suspend_state_t state) | |||
138 | extern void pxa_cpu_suspend(unsigned int); | 139 | extern void pxa_cpu_suspend(unsigned int); |
139 | extern void pxa_cpu_resume(void); | 140 | extern void pxa_cpu_resume(void); |
140 | 141 | ||
141 | CKEN = CKEN22_MEMC | CKEN9_OSTIMER; | 142 | if (state == PM_SUSPEND_STANDBY) |
143 | CKEN = CKEN22_MEMC | CKEN9_OSTIMER | CKEN16_LCD |CKEN0_PWM0; | ||
144 | else | ||
145 | CKEN = CKEN22_MEMC | CKEN9_OSTIMER; | ||
142 | 146 | ||
143 | /* ensure voltage-change sequencer not initiated, which hangs */ | 147 | /* ensure voltage-change sequencer not initiated, which hangs */ |
144 | PCFR &= ~PCFR_FVC; | 148 | PCFR &= ~PCFR_FVC; |
@@ -147,6 +151,9 @@ void pxa_cpu_pm_enter(suspend_state_t state) | |||
147 | PEDR = 0xDF12FE1B; | 151 | PEDR = 0xDF12FE1B; |
148 | 152 | ||
149 | switch (state) { | 153 | switch (state) { |
154 | case PM_SUSPEND_STANDBY: | ||
155 | pxa_cpu_standby(); | ||
156 | break; | ||
150 | case PM_SUSPEND_MEM: | 157 | case PM_SUSPEND_MEM: |
151 | /* set resume return address */ | 158 | /* set resume return address */ |
152 | PSPR = virt_to_phys(pxa_cpu_resume); | 159 | PSPR = virt_to_phys(pxa_cpu_resume); |
diff --git a/arch/arm/mach-pxa/standby.S b/arch/arm/mach-pxa/standby.S new file mode 100644 index 000000000000..8a3f27b76784 --- /dev/null +++ b/arch/arm/mach-pxa/standby.S | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * PXA27x standby mode | ||
3 | * | ||
4 | * Author: David Burrage | ||
5 | * | ||
6 | * 2005 (c) MontaVista Software, Inc. This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | */ | ||
11 | |||
12 | #include <linux/config.h> | ||
13 | #include <linux/linkage.h> | ||
14 | #include <asm/assembler.h> | ||
15 | #include <asm/hardware.h> | ||
16 | |||
17 | #include <asm/arch/pxa-regs.h> | ||
18 | |||
19 | .text | ||
20 | |||
21 | ENTRY(pxa_cpu_standby) | ||
22 | ldr r0, =PSSR | ||
23 | mov r1, #(PSSR_PH | PSSR_STS) | ||
24 | mov r2, #2 | ||
25 | mov r3, #UNCACHED_PHYS_0 @ Read mem context in. | ||
26 | ldr ip, [r3] | ||
27 | b 1f | ||
28 | |||
29 | .align 5 | ||
30 | 1: mcr p14, 0, r2, c7, c0, 0 @ put the system into Standby | ||
31 | str r1, [r0] @ make sure PSSR_PH/STS are clear | ||
32 | mov pc, lr | ||