> -----Original Message-----
> From: [email protected] [mailto:linux-omap-
> [email protected]] On Behalf Of Kevin Hilman
> Sent: Friday, June 18, 2010 4:38 AM
> To: [email protected]
> 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 <[email protected]>
> ---
> 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 [email protected]
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html