2012-11-19 16:41:20 -07: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 15:38:50 +01:00
# include <linux/clocksource.h>
2012-11-19 16:41:20 -07: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 ;
2013-03-19 15:38:50 +01:00
clocksource_of_init_fn init_func ;
2013-11-20 09:58:56 +01:00
unsigned clocksources = 0 ;
2012-11-19 16:41:20 -07:00
for_each_matching_node_and_match ( np , __clksrc_of_table , & match ) {
2013-09-26 02:08:17 +02:00
if ( ! of_device_is_available ( np ) )
continue ;
2012-11-19 16:41:20 -07:00
init_func = match - > data ;
2013-02-06 14:40:22 -06:00
init_func ( np ) ;
2013-11-20 09:58:56 +01:00
clocksources + + ;
2012-11-19 16:41:20 -07:00
}
2013-11-20 09:58:56 +01:00
if ( ! clocksources )
pr_crit ( " %s: no matching clocksources found \n " , __func__ ) ;
2012-11-19 16:41:20 -07:00
}