Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / clocksource / clksrc-of.c
1 /*
2  * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #include <linux/init.h>
18 #include <linux/of.h>
19 #include <linux/clocksource.h>
20
21 extern struct of_device_id __clksrc_of_table[];
22
23 static const struct of_device_id __clksrc_of_table_sentinel
24         __used __section(__clksrc_of_table_end);
25
26 void __init clocksource_of_init(void)
27 {
28         struct device_node *np;
29         const struct of_device_id *match;
30         clocksource_of_init_fn init_func;
31         unsigned clocksources = 0;
32
33         for_each_matching_node_and_match(np, __clksrc_of_table, &match) {
34                 if (!of_device_is_available(np))
35                         continue;
36
37                 init_func = match->data;
38                 init_func(np);
39                 clocksources++;
40         }
41         if (!clocksources)
42                 pr_crit("%s: no matching clocksources found\n", __func__);
43 }