linux/arch/mips/cobalt/time.c
<<
>>
Prefs
   1/*
   2 *  Cobalt time initialization.
   3 *
   4 *  Copyright (C) 2007  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
   5 *
   6 *  This program is free software; you can redistribute it and/or modify
   7 *  it under the terms of the GNU General Public License as published by
   8 *  the Free Software Foundation; either version 2 of the License, or
   9 *  (at your option) any later version.
  10 *
  11 *  This program is distributed in the hope that it will be useful,
  12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 *  GNU General Public License for more details.
  15 *
  16 *  You should have received a copy of the GNU General Public License
  17 *  along with this program; if not, write to the Free Software
  18 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19 */
  20#include <linux/init.h>
  21
  22#include <asm/gt64120.h>
  23#include <asm/i8253.h>
  24#include <asm/time.h>
  25
  26#define GT641XX_BASE_CLOCK      50000000        /* 50MHz */
  27
  28void __init plat_time_init(void)
  29{
  30        u32 start, end;
  31        int i = HZ / 10;
  32
  33        setup_pit_timer();
  34
  35        gt641xx_set_base_clock(GT641XX_BASE_CLOCK);
  36
  37        /*
  38         * MIPS counter frequency is measured during a 100msec interval
  39         * using GT64111 timer0.
  40         */
  41        while (!gt641xx_timer0_state())
  42                ;
  43
  44        start = read_c0_count();
  45
  46        while (i--)
  47                while (!gt641xx_timer0_state())
  48                        ;
  49
  50        end = read_c0_count();
  51
  52        mips_hpt_frequency = (end - start) * 10;
  53        printk(KERN_INFO "MIPS counter frequency %dHz\n", mips_hpt_frequency);
  54}
  55
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.