Commit 3c437ffd authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

ARM / OMAP: Use struct syscore_ops for "core" power management

Replace the sysdev class and struct sys_device used for power
management in the OMAP's GPIO code with a struct syscore_ops object
which is simpler.
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Acked-by: default avatarKevin Hilman <khilman@ti.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 328f5cc3
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/sysdev.h> #include <linux/syscore_ops.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/io.h> #include <linux/io.h>
...@@ -1372,9 +1372,7 @@ static const struct dev_pm_ops omap_mpuio_dev_pm_ops = { ...@@ -1372,9 +1372,7 @@ static const struct dev_pm_ops omap_mpuio_dev_pm_ops = {
.resume_noirq = omap_mpuio_resume_noirq, .resume_noirq = omap_mpuio_resume_noirq,
}; };
/* use platform_driver for this, now that there's no longer any /* use platform_driver for this. */
* point to sys_device (other than not disturbing old code).
*/
static struct platform_driver omap_mpuio_driver = { static struct platform_driver omap_mpuio_driver = {
.driver = { .driver = {
.name = "mpuio", .name = "mpuio",
...@@ -1745,7 +1743,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) ...@@ -1745,7 +1743,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
} }
#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS) #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS)
static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg) static int omap_gpio_suspend(void)
{ {
int i; int i;
...@@ -1795,12 +1793,12 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg) ...@@ -1795,12 +1793,12 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
return 0; return 0;
} }
static int omap_gpio_resume(struct sys_device *dev) static void omap_gpio_resume(void)
{ {
int i; int i;
if (!cpu_class_is_omap2() && !cpu_is_omap16xx()) if (!cpu_class_is_omap2() && !cpu_is_omap16xx())
return 0; return;
for (i = 0; i < gpio_bank_count; i++) { for (i = 0; i < gpio_bank_count; i++) {
struct gpio_bank *bank = &gpio_bank[i]; struct gpio_bank *bank = &gpio_bank[i];
...@@ -1836,21 +1834,13 @@ static int omap_gpio_resume(struct sys_device *dev) ...@@ -1836,21 +1834,13 @@ static int omap_gpio_resume(struct sys_device *dev)
__raw_writel(bank->saved_wakeup, wake_set); __raw_writel(bank->saved_wakeup, wake_set);
spin_unlock_irqrestore(&bank->lock, flags); spin_unlock_irqrestore(&bank->lock, flags);
} }
return 0;
} }
static struct sysdev_class omap_gpio_sysclass = { static struct syscore_ops omap_gpio_syscore_ops = {
.name = "gpio",
.suspend = omap_gpio_suspend, .suspend = omap_gpio_suspend,
.resume = omap_gpio_resume, .resume = omap_gpio_resume,
}; };
static struct sys_device omap_gpio_device = {
.id = 0,
.cls = &omap_gpio_sysclass,
};
#endif #endif
#ifdef CONFIG_ARCH_OMAP2PLUS #ifdef CONFIG_ARCH_OMAP2PLUS
...@@ -2108,21 +2098,14 @@ postcore_initcall(omap_gpio_drv_reg); ...@@ -2108,21 +2098,14 @@ postcore_initcall(omap_gpio_drv_reg);
static int __init omap_gpio_sysinit(void) static int __init omap_gpio_sysinit(void)
{ {
int ret = 0;
mpuio_init(); mpuio_init();
#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS) #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS)
if (cpu_is_omap16xx() || cpu_class_is_omap2()) { if (cpu_is_omap16xx() || cpu_class_is_omap2())
if (ret == 0) { register_syscore_ops(&omap_gpio_syscore_ops);
ret = sysdev_class_register(&omap_gpio_sysclass);
if (ret == 0)
ret = sysdev_register(&omap_gpio_device);
}
}
#endif #endif
return ret; return 0;
} }
arch_initcall(omap_gpio_sysinit); arch_initcall(omap_gpio_sysinit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment