1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Runtime PM support code 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2009-2010 Magnus Damm 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 7*4882a593Smuzhiyun * License. See the file "COPYING" in the main directory of this archive 8*4882a593Smuzhiyun * for more details. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/init.h> 12*4882a593Smuzhiyun #include <linux/kernel.h> 13*4882a593Smuzhiyun #include <linux/io.h> 14*4882a593Smuzhiyun #include <linux/pm_runtime.h> 15*4882a593Smuzhiyun #include <linux/pm_domain.h> 16*4882a593Smuzhiyun #include <linux/pm_clock.h> 17*4882a593Smuzhiyun #include <linux/platform_device.h> 18*4882a593Smuzhiyun #include <linux/clk.h> 19*4882a593Smuzhiyun #include <linux/sh_clk.h> 20*4882a593Smuzhiyun #include <linux/bitmap.h> 21*4882a593Smuzhiyun #include <linux/slab.h> 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun static struct dev_pm_domain default_pm_domain = { 24*4882a593Smuzhiyun .ops = { 25*4882a593Smuzhiyun USE_PM_CLK_RUNTIME_OPS 26*4882a593Smuzhiyun USE_PLATFORM_PM_SLEEP_OPS 27*4882a593Smuzhiyun }, 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun static struct pm_clk_notifier_block platform_bus_notifier = { 31*4882a593Smuzhiyun .pm_domain = &default_pm_domain, 32*4882a593Smuzhiyun .con_ids = { NULL, }, 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun sh_pm_runtime_init(void)35*4882a593Smuzhiyunstatic int __init sh_pm_runtime_init(void) 36*4882a593Smuzhiyun { 37*4882a593Smuzhiyun pm_clk_add_notifier(&platform_bus_type, &platform_bus_notifier); 38*4882a593Smuzhiyun return 0; 39*4882a593Smuzhiyun } 40*4882a593Smuzhiyun core_initcall(sh_pm_runtime_init); 41