From 57f0f512b273f60d52568b8c6b77e17f5636edc0 Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Wed, 5 Aug 2015 17:04:01 -0300 Subject: Initial import --- arch/arm/mach-omap1/pm_bus.c | 79 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 arch/arm/mach-omap1/pm_bus.c (limited to 'arch/arm/mach-omap1/pm_bus.c') diff --git a/arch/arm/mach-omap1/pm_bus.c b/arch/arm/mach-omap1/pm_bus.c new file mode 100644 index 000000000..c40e209de --- /dev/null +++ b/arch/arm/mach-omap1/pm_bus.c @@ -0,0 +1,79 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#include "soc.h" + +#ifdef CONFIG_PM +static int omap1_pm_runtime_suspend(struct device *dev) +{ + int ret; + + dev_dbg(dev, "%s\n", __func__); + + ret = pm_generic_runtime_suspend(dev); + if (ret) + return ret; + + ret = pm_clk_suspend(dev); + if (ret) { + pm_generic_runtime_resume(dev); + return ret; + } + + return 0; +} + +static int omap1_pm_runtime_resume(struct device *dev) +{ + dev_dbg(dev, "%s\n", __func__); + + pm_clk_resume(dev); + return pm_generic_runtime_resume(dev); +} + +static struct dev_pm_domain default_pm_domain = { + .ops = { + .runtime_suspend = omap1_pm_runtime_suspend, + .runtime_resume = omap1_pm_runtime_resume, + USE_PLATFORM_PM_SLEEP_OPS + }, +}; +#define OMAP1_PM_DOMAIN (&default_pm_domain) +#else +#define OMAP1_PM_DOMAIN NULL +#endif /* CONFIG_PM */ + +static struct pm_clk_notifier_block platform_bus_notifier = { + .pm_domain = OMAP1_PM_DOMAIN, + .con_ids = { "ick", "fck", NULL, }, +}; + +static int __init omap1_pm_runtime_init(void) +{ + if (!cpu_class_is_omap1()) + return -ENODEV; + + pm_clk_add_notifier(&platform_bus_type, &platform_bus_notifier); + + return 0; +} +core_initcall(omap1_pm_runtime_init); + -- cgit v1.2.3-54-g00ecf