RE: [PATCH] OMAP1: PM: add simple runtime PM layer to manage clocks

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

 



> -----Original Message-----
> From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Kevin Hilman
> Sent: Friday, June 18, 2010 4:38 AM
> To: linux-omap@xxxxxxxxxxxxxxx
> Subject: [PATCH] OMAP1: PM: add simple runtime PM layer to manage clocks
> 
> On OMAP1, we do not have omap_device + omap_hwmod to manage the
> device-specific idle, enable and shutdown.  Instead, just
> enable/disable device clocks automatically at the runtime PM level.
> 
> This allows drivers to not have any OMAP1 specific clock management
> and allows them to simply use the runtime PM API to manage clocks.
> 
> Signed-off-by: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx>
> ---
> This patch applies on top of the initial runtime PM support series:
> 
>   [PATCH 0/4] runtime PM support at the bus level
> 
> posted to linux-omap on May 27th.  It is also now included in
> my pm-wip/runtime branch in my git tree.
> 
>  arch/arm/mach-omap1/Makefile |    2 +-
>  arch/arm/mach-omap1/pm_bus.c |   77
> ++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 78 insertions(+), 1 deletions(-)
>  create mode 100644 arch/arm/mach-omap1/pm_bus.c
> 
> diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile
> index ea231c7..fd4df71 100644
> --- a/arch/arm/mach-omap1/Makefile
> +++ b/arch/arm/mach-omap1/Makefile
> @@ -12,7 +12,7 @@ obj-$(CONFIG_OMAP_MPU_TIMER)	+= time.o
>  obj-$(CONFIG_OMAP_32K_TIMER)	+= timer32k.o
> 
>  # Power Management
> -obj-$(CONFIG_PM) += pm.o sleep.o
> +obj-$(CONFIG_PM) += pm.o sleep.o pm_bus.o
> 
>  # DSP
>  obj-$(CONFIG_OMAP_MBOX_FWK)	+= mailbox_mach.o
> diff --git a/arch/arm/mach-omap1/pm_bus.c b/arch/arm/mach-omap1/pm_bus.c
> new file mode 100644
> index 0000000..46a34fc
> --- /dev/null
> +++ b/arch/arm/mach-omap1/pm_bus.c
> @@ -0,0 +1,77 @@
> +/*
> + * Runtime PM support code for OMAP1
> + *
> + * Author: Kevin Hilman, Deep Root Systems, LLC
> + *
> + * Copyright (C) 2010 Texas Instruments, Inc.
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +#include <linux/init.h>
> +#include <linux/kernel.h>
> +#include <linux/io.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/platform_device.h>
> +#include <linux/mutex.h>
> +
> +#include <plat/omap_device.h>
> +#include <plat/omap-pm.h>
> +
> +#ifdef CONFIG_PM_RUNTIME
> +int platform_pm_runtime_suspend(struct device *dev)
> +{
> +	struct clk *iclk, *fclk;
> +
> +	dev_dbg(dev, "%s\n", __func__);
> +
> +	if (dev->driver->pm && dev->driver->pm->runtime_suspend)
> +		ret = dev->driver->pm->runtime_suspend(dev);
I do not see "ret" declaration. I hope this is not a global variable. 

> +
> +	fclk = clk_get(dev, "fck");
> +	if (!IS_ERR(fclk)) {
> +		clk_disable(fclk);
> +		clk_put(fclk);
> +	}
> +
> +	iclk = clk_get(dev, "ick");
> +	if (!IS_ERR(iclk)) {
> +		clk_disable(iclk);
> +		clk_put(iclk);
> +	}
> +
> +	return 0;
Why not return "ret" instead of 0? 

> +};
> +
> +int platform_pm_runtime_resume(struct device *dev)
> +{
> +	int r, ret = 0;
> +	struct clk *iclk, *fclk;
> +
> +	iclk = clk_get(dev, "fck");
> +	if (!IS_ERR(iclk)) {
> +		clk_enable(iclk);
> +		clk_put(iclk);
> +	}
> +
> +	fclk = clk_get(dev, "fck");
> +	if (!IS_ERR(fclk)) {
> +		clk_enable(fclk);
> +		clk_put(fclk);
> +	}
> +
> +	if (dev->driver->pm && dev->driver->pm->runtime_resume)
> +		ret = dev->driver->pm->runtime_resume(dev);
> +
> +	return ret;
> +};
> +
> +int platform_pm_runtime_idle(struct device *dev)
> +{
> +	ret = pm_runtime_suspend(dev);
Unless "ret" is global, we have to declare this locally?

> +	dev_dbg(dev, "%s [%d]\n", __func__, ret);
> +
> +	return 0;
How about returning "ret" instead of 0? 

> +};
> +#endif /* CONFIG_PM_RUNTIME */
> --
> 1.7.0.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux