2013-07-14 17:17:39 -04:00
/*
* PM domain driver for Keystone2 devices
*
* Copyright 2013 Texas Instruments , Inc .
* Santosh Shilimkar < santosh . shillimkar @ ti . com >
*
* Based on Kevins work on DAVINCI SOCs
* Kevin Hilman < khilman @ linaro . org >
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms and conditions of the GNU General Public License ,
* version 2 , as published by the Free Software Foundation .
*/
# include <linux/init.h>
# include <linux/pm_runtime.h>
# include <linux/pm_clock.h>
# include <linux/platform_device.h>
2013-10-14 10:30:11 -07:00
# include <linux/of.h>
2013-07-14 17:17:39 -04:00
2016-06-21 09:31:15 -07:00
# include "keystone.h"
2013-07-14 17:17:39 -04:00
static struct dev_pm_domain keystone_pm_domain = {
. ops = {
2015-04-23 14:03:10 +05:30
USE_PM_CLK_RUNTIME_OPS
2013-07-14 17:17:39 -04:00
USE_PLATFORM_PM_SLEEP_OPS
} ,
} ;
static struct pm_clk_notifier_block platform_domain_notifier = {
. pm_domain = & keystone_pm_domain ,
} ;
2015-02-18 21:19:56 +01:00
static const struct of_device_id of_keystone_table [ ] = {
2017-04-04 08:59:28 -07:00
{ . compatible = " ti,k2hk " } ,
{ . compatible = " ti,k2e " } ,
{ . compatible = " ti,k2l " } ,
2013-10-14 10:30:11 -07:00
{ /* end of list */ } ,
} ;
2013-07-14 17:17:39 -04:00
int __init keystone_pm_runtime_init ( void )
{
2013-10-14 10:30:11 -07:00
struct device_node * np ;
np = of_find_matching_node ( NULL , of_keystone_table ) ;
if ( ! np )
return 0 ;
2013-07-14 17:17:39 -04:00
pm_clk_add_notifier ( & platform_bus_type , & platform_domain_notifier ) ;
return 0 ;
}