diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2011-04-22 16:03:11 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2011-04-24 13:16:09 -0400 |
commit | 2eaa03b5bebd1e80014f780d7bf27c3e66daefd6 (patch) | |
tree | 9366c07d166eaede876cd7233cc30056f198a93f /arch/arm/plat-pxa/gpio.c | |
parent | 905339807bde7bb726001b69fbdf69ab0cf69a9e (diff) |
ARM / PXA: Use struct syscore_ops for "core" power management
Replace sysdev classes and struct sys_device objects used for "core"
power management by the PXA platform code with struct syscore_ops
objects that are simpler.
This reduces the code size and the kernel memory footprint. It also
is necessary for removing sysdevs entirely from the kernel in the
future.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/arm/plat-pxa/gpio.c')
-rw-r--r-- | arch/arm/plat-pxa/gpio.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/arch/arm/plat-pxa/gpio.c b/arch/arm/plat-pxa/gpio.c index dce088f45678..48ebb9479b61 100644 --- a/arch/arm/plat-pxa/gpio.c +++ b/arch/arm/plat-pxa/gpio.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/sysdev.h> | 18 | #include <linux/syscore_ops.h> |
19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
20 | 20 | ||
21 | #include <mach/gpio.h> | 21 | #include <mach/gpio.h> |
@@ -295,7 +295,7 @@ void __init pxa_init_gpio(int mux_irq, int start, int end, set_wake_t fn) | |||
295 | } | 295 | } |
296 | 296 | ||
297 | #ifdef CONFIG_PM | 297 | #ifdef CONFIG_PM |
298 | static int pxa_gpio_suspend(struct sys_device *dev, pm_message_t state) | 298 | static int pxa_gpio_suspend(void) |
299 | { | 299 | { |
300 | struct pxa_gpio_chip *c; | 300 | struct pxa_gpio_chip *c; |
301 | int gpio; | 301 | int gpio; |
@@ -312,7 +312,7 @@ static int pxa_gpio_suspend(struct sys_device *dev, pm_message_t state) | |||
312 | return 0; | 312 | return 0; |
313 | } | 313 | } |
314 | 314 | ||
315 | static int pxa_gpio_resume(struct sys_device *dev) | 315 | static void pxa_gpio_resume(void) |
316 | { | 316 | { |
317 | struct pxa_gpio_chip *c; | 317 | struct pxa_gpio_chip *c; |
318 | int gpio; | 318 | int gpio; |
@@ -326,22 +326,13 @@ static int pxa_gpio_resume(struct sys_device *dev) | |||
326 | __raw_writel(c->saved_gfer, c->regbase + GFER_OFFSET); | 326 | __raw_writel(c->saved_gfer, c->regbase + GFER_OFFSET); |
327 | __raw_writel(c->saved_gpdr, c->regbase + GPDR_OFFSET); | 327 | __raw_writel(c->saved_gpdr, c->regbase + GPDR_OFFSET); |
328 | } | 328 | } |
329 | return 0; | ||
330 | } | 329 | } |
331 | #else | 330 | #else |
332 | #define pxa_gpio_suspend NULL | 331 | #define pxa_gpio_suspend NULL |
333 | #define pxa_gpio_resume NULL | 332 | #define pxa_gpio_resume NULL |
334 | #endif | 333 | #endif |
335 | 334 | ||
336 | struct sysdev_class pxa_gpio_sysclass = { | 335 | struct syscore_ops pxa_gpio_syscore_ops = { |
337 | .name = "gpio", | ||
338 | .suspend = pxa_gpio_suspend, | 336 | .suspend = pxa_gpio_suspend, |
339 | .resume = pxa_gpio_resume, | 337 | .resume = pxa_gpio_resume, |
340 | }; | 338 | }; |
341 | |||
342 | static int __init pxa_gpio_init(void) | ||
343 | { | ||
344 | return sysdev_class_register(&pxa_gpio_sysclass); | ||
345 | } | ||
346 | |||
347 | core_initcall(pxa_gpio_init); | ||