162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/acpi.h> 762306a36Sopenharmony_ci#include <linux/init.h> 862306a36Sopenharmony_ci#include <linux/of.h> 962306a36Sopenharmony_ci#include <linux/clocksource.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciextern struct of_device_id __timer_of_table[]; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistatic const struct of_device_id __timer_of_table_sentinel 1462306a36Sopenharmony_ci __used __section("__timer_of_table_end"); 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_civoid __init timer_probe(void) 1762306a36Sopenharmony_ci{ 1862306a36Sopenharmony_ci struct device_node *np; 1962306a36Sopenharmony_ci const struct of_device_id *match; 2062306a36Sopenharmony_ci of_init_fn_1_ret init_func_ret; 2162306a36Sopenharmony_ci unsigned timers = 0; 2262306a36Sopenharmony_ci int ret; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci for_each_matching_node_and_match(np, __timer_of_table, &match) { 2562306a36Sopenharmony_ci if (!of_device_is_available(np)) 2662306a36Sopenharmony_ci continue; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci init_func_ret = match->data; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci ret = init_func_ret(np); 3162306a36Sopenharmony_ci if (ret) { 3262306a36Sopenharmony_ci if (ret != -EPROBE_DEFER) 3362306a36Sopenharmony_ci pr_err("Failed to initialize '%pOF': %d\n", np, 3462306a36Sopenharmony_ci ret); 3562306a36Sopenharmony_ci continue; 3662306a36Sopenharmony_ci } 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci timers++; 3962306a36Sopenharmony_ci } 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci timers += acpi_probe_device_table(timer); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci if (!timers) 4462306a36Sopenharmony_ci pr_crit("%s: no matching timers found\n", __func__); 4562306a36Sopenharmony_ci} 46