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 31int get_c0_fdc_int(void) 32{ 33 return gic_get_c0_fdc_int(); 34} 35 36void __init plat_time_init(void) 37{ 38 struct device_node *np; 39 struct clk *clk; 40 41 of_clk_init(NULL); 42 clocksource_of_init(); 43 44 np = of_get_cpu_node(0, NULL); 45 if (!np) { 46 pr_err("Failed to get CPU node\n"); 47 return; 48 } 49 50 clk = of_clk_get(np, 0); 51 if (IS_ERR(clk)) { 52 pr_err("Failed to get CPU clock: %ld\n", PTR_ERR(clk)); 53 return; 54 } 55 56 mips_hpt_frequency = clk_get_rate(clk) / 2; 57 clk_put(clk); 58} 59