Branch data Line data Source code
1 : : // SPDX-License-Identifier: GPL-2.0-only 2 : : /* 3 : : * linux/arch/arm/kernel/arch_timer.c 4 : : * 5 : : * Copyright (C) 2011 ARM Ltd. 6 : : * All Rights Reserved 7 : : */ 8 : : #include <linux/init.h> 9 : : #include <linux/types.h> 10 : : #include <linux/errno.h> 11 : : 12 : : #include <asm/delay.h> 13 : : 14 : : #include <clocksource/arm_arch_timer.h> 15 : : 16 : 1451636674 : static unsigned long arch_timer_read_counter_long(void) 17 : : { 18 : 1451636674 : return arch_timer_read_counter(); 19 : : } 20 : : 21 : : static struct delay_timer arch_delay_timer; 22 : : 23 : 404 : static void __init arch_timer_delay_timer_register(void) 24 : : { 25 : : /* Use the architected timer for the delay loop. */ 26 : 404 : arch_delay_timer.read_current_timer = arch_timer_read_counter_long; 27 : 404 : arch_delay_timer.freq = arch_timer_get_rate(); 28 : 404 : register_current_timer_delay(&arch_delay_timer); 29 : 404 : } 30 : : 31 : 404 : int __init arch_timer_arch_init(void) 32 : : { 33 : 404 : u32 arch_timer_rate = arch_timer_get_rate(); 34 : : 35 [ + - ]: 404 : if (arch_timer_rate == 0) 36 : : return -ENXIO; 37 : : 38 : 404 : arch_timer_delay_timer_register(); 39 : : 40 : 404 : return 0; 41 : : }