1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * Cobalt time initialization. 4 * 5 * Copyright (C) 2007 Yoichi Yuasa <yuasa@linux-mips.org> 6 */ 7 #include <linux/i8253.h> 8 #include <linux/init.h> 9 10 #include <asm/gt64120.h> 11 #include <asm/time.h> 12 13 #define GT641XX_BASE_CLOCK 50000000 /* 50MHz */ 14 15 void __init plat_time_init(void) 16 { 17 u32 start, end; 18 int i = HZ / 10; 19 20 setup_pit_timer(); 21 22 gt641xx_set_base_clock(GT641XX_BASE_CLOCK); 23 24 /* 25 * MIPS counter frequency is measured during a 100msec interval 26 * using GT64111 timer0. 27 */ 28 while (!gt641xx_timer0_state()) 29 ; 30 31 start = read_c0_count(); 32 33 while (i--) 34 while (!gt641xx_timer0_state()) 35 ; 36 37 end = read_c0_count(); 38 39 mips_hpt_frequency = (end - start) * 10; 40 printk(KERN_INFO "MIPS counter frequency %dHz\n", mips_hpt_frequency); 41 } 42