1/* 2 * Pistachio clocksource/timer setup 3 * 4 * Copyright (C) 2014 Google, Inc. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 */ 10 11#include <linux/clk.h> 12#include <linux/clk-provider.h> 13#include <linux/clocksource.h> 14#include <linux/init.h> 15#include <linux/irqchip/mips-gic.h> 16#include <linux/of.h> 17 18#include <asm/time.h> 19 20unsigned int get_c0_compare_int(void) 21{ 22 return gic_get_c0_compare_int(); 23} 24 25int get_c0_perfcount_int(void) 26{ 27 return gic_get_c0_perfcount_int(); 28} 29EXPORT_SYMBOL_GPL(get_c0_perfcount_int); 30 31void __init plat_time_init(void) 32{ 33 struct device_node *np; 34 struct clk *clk; 35 36 of_clk_init(NULL); 37 clocksource_of_init(); 38 39 np = of_get_cpu_node(0, NULL); 40 if (!np) { 41 pr_err("Failed to get CPU node\n"); 42 return; 43 } 44 45 clk = of_clk_get(np, 0); 46 if (IS_ERR(clk)) { 47 pr_err("Failed to get CPU clock: %ld\n", PTR_ERR(clk)); 48 return; 49 } 50 51 mips_hpt_frequency = clk_get_rate(clk) / 2; 52 clk_put(clk); 53} 54