2012-11-20 03:41:20 +04:00
/*
* Copyright ( c ) 2012 , NVIDIA CORPORATION . All rights reserved .
*
* 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 .
*
* This program is distributed in the hope it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for
* more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# include <linux/init.h>
# include <linux/of.h>
2013-03-19 18:38:50 +04:00
# include <linux/clocksource.h>
2012-11-20 03:41:20 +04:00
extern struct of_device_id __clksrc_of_table [ ] ;
static const struct of_device_id __clksrc_of_table_sentinel
__used __section ( __clksrc_of_table_end ) ;
void __init clocksource_of_init ( void )
{
struct device_node * np ;
const struct of_device_id * match ;
2014-05-09 01:09:24 +04:00
of_init_fn_1 init_func ;
2013-11-20 12:58:56 +04:00
unsigned clocksources = 0 ;
2012-11-20 03:41:20 +04:00
for_each_matching_node_and_match ( np , __clksrc_of_table , & match ) {
2013-09-26 04:08:17 +04:00
if ( ! of_device_is_available ( np ) )
continue ;
2012-11-20 03:41:20 +04:00
init_func = match - > data ;
2013-02-07 00:40:22 +04:00
init_func ( np ) ;
2013-11-20 12:58:56 +04:00
clocksources + + ;
2012-11-20 03:41:20 +04:00
}
2013-11-20 12:58:56 +04:00
if ( ! clocksources )
pr_crit ( " %s: no matching clocksources found \n " , __func__ ) ;
2012-11-20 03:41:20 +04:00
}