17ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli/* 27ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * Carsten Langgaard, carstenl@mips.com 37ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. 47ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * 57ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * This program is free software; you can distribute it and/or modify it 67ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * under the terms of the GNU General Public License (Version 2) as 77ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * published by the Free Software Foundation. 87ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * 97ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * This program is distributed in the hope it will be useful, but WITHOUT 107ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 117ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 127ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * for more details. 137ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * 147ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * You should have received a copy of the GNU General Public License along 157ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * with this program; if not, write to the Free Software Foundation, Inc., 167ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 177ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * 187ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli * Setting up the clock on the MIPS boards. 197ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli */ 207ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli 217ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli#include <linux/init.h> 227ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli#include <linux/time.h> 23780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli#include <linux/err.h> 24780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli#include <linux/clk.h> 257ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli 267ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli#include <asm/time.h> 277ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli#include <asm/mach-ar7/ar7.h> 287ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli 297ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainellivoid __init plat_time_init(void) 307ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli{ 31780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli struct clk *cpu_clk; 32780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli 330bc6791707694c77b3543de39f77972a65de917aFlorian Fainelli /* Initialize ar7 clocks so the CPU clock frequency is correct */ 340bc6791707694c77b3543de39f77972a65de917aFlorian Fainelli ar7_init_clocks(); 350bc6791707694c77b3543de39f77972a65de917aFlorian Fainelli 36780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli cpu_clk = clk_get(NULL, "cpu"); 37780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli if (IS_ERR(cpu_clk)) { 38780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli printk(KERN_ERR "unable to get cpu clock\n"); 39780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli return; 40780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli } 41780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli 42780019ddf02f214ad61e641b57b8ac30c837e2a7Florian Fainelli mips_hpt_frequency = clk_get_rate(cpu_clk) / 2; 437ca5dc145bc7daddd8aed8bbda46b74af9cebefcFlorian Fainelli} 44