Re: [PATCH 2/7] ARM / OMAP: Use struct syscore_ops for "core" power management

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Rafael J. Wysocki" <rjw@xxxxxxx> writes:

> From: Rafael J. Wysocki <rjw@xxxxxxx>
>
> 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: Rafael J. Wysocki <rjw@xxxxxxx>

Acked-by: Kevin Hilman <khilman@xxxxxx>

Looks fine to me.  We're in the process of converting this driver to
runtime PM.  When that happens the syscore ops will be removed as well,
but I'm fine with this patch until we finish the runtime PM conversion.

Kevin

> ---
>  arch/arm/plat-omap/gpio.c |   35 +++++++++--------------------------
>  1 file changed, 9 insertions(+), 26 deletions(-)
>
> Index: linux-2.6/arch/arm/plat-omap/gpio.c
> ===================================================================
> --- linux-2.6.orig/arch/arm/plat-omap/gpio.c
> +++ linux-2.6/arch/arm/plat-omap/gpio.c
> @@ -17,7 +17,7 @@
>  #include <linux/init.h>
>  #include <linux/module.h>
>  #include <linux/interrupt.h>
> -#include <linux/sysdev.h>
> +#include <linux/syscore_ops.h>
>  #include <linux/err.h>
>  #include <linux/clk.h>
>  #include <linux/io.h>
> @@ -1379,9 +1379,7 @@ static const struct dev_pm_ops omap_mpui
>  	.resume_noirq = omap_mpuio_resume_noirq,
>  };
>  
> -/* use platform_driver for this, now that there's no longer any
> - * point to sys_device (other than not disturbing old code).
> - */
> +/* use platform_driver for this. */
>  static struct platform_driver omap_mpuio_driver = {
>  	.driver		= {
>  		.name	= "mpuio",
> @@ -1754,7 +1752,7 @@ static int __devinit omap_gpio_probe(str
>  }
>  
>  #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;
>  
> @@ -1804,12 +1802,12 @@ static int omap_gpio_suspend(struct sys_
>  	return 0;
>  }
>  
> -static int omap_gpio_resume(struct sys_device *dev)
> +static void omap_gpio_resume(void)
>  {
>  	int i;
>  
>  	if (!cpu_class_is_omap2() && !cpu_is_omap16xx())
> -		return 0;
> +		return;
>  
>  	for (i = 0; i < gpio_bank_count; i++) {
>  		struct gpio_bank *bank = &gpio_bank[i];
> @@ -1845,21 +1843,13 @@ static int omap_gpio_resume(struct sys_d
>  		__raw_writel(bank->saved_wakeup, wake_set);
>  		spin_unlock_irqrestore(&bank->lock, flags);
>  	}
> -
> -	return 0;
>  }
>  
> -static struct sysdev_class omap_gpio_sysclass = {
> -	.name		= "gpio",
> +static struct syscore_ops omap_gpio_syscore_ops = {
>  	.suspend	= omap_gpio_suspend,
>  	.resume		= omap_gpio_resume,
>  };
>  
> -static struct sys_device omap_gpio_device = {
> -	.id		= 0,
> -	.cls		= &omap_gpio_sysclass,
> -};
> -
>  #endif
>  
>  #ifdef CONFIG_ARCH_OMAP2PLUS
> @@ -2117,21 +2107,14 @@ postcore_initcall(omap_gpio_drv_reg);
>  
>  static int __init omap_gpio_sysinit(void)
>  {
> -	int ret = 0;
> -
>  	mpuio_init();
>  
>  #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS)
> -	if (cpu_is_omap16xx() || cpu_class_is_omap2()) {
> -		if (ret == 0) {
> -			ret = sysdev_class_register(&omap_gpio_sysclass);
> -			if (ret == 0)
> -				ret = sysdev_register(&omap_gpio_device);
> -		}
> -	}
> +	if (cpu_is_omap16xx() || cpu_class_is_omap2())
> +		register_syscore_ops(&omap_gpio_syscore_ops);
>  #endif
>  
> -	return ret;
> +	return 0;
>  }
>  
>  arch_initcall(omap_gpio_sysinit);
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux