linux/arch/arm/kernel/arch_timer.c
<<
>>
Prefs
   1/*
   2 *  linux/arch/arm/kernel/arch_timer.c
   3 *
   4 *  Copyright (C) 2011 ARM Ltd.
   5 *  All Rights Reserved
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License version 2 as
   9 * published by the Free Software Foundation.
  10 */
  11#include <linux/init.h>
  12#include <linux/types.h>
  13#include <linux/errno.h>
  14
  15#include <asm/delay.h>
  16
  17#include <clocksource/arm_arch_timer.h>
  18
  19static unsigned long arch_timer_read_counter_long(void)
  20{
  21        return arch_timer_read_counter();
  22}
  23
  24static struct delay_timer arch_delay_timer;
  25
  26static void __init arch_timer_delay_timer_register(void)
  27{
  28        /* Use the architected timer for the delay loop. */
  29        arch_delay_timer.read_current_timer = arch_timer_read_counter_long;
  30        arch_delay_timer.freq = arch_timer_get_rate();
  31        register_current_timer_delay(&arch_delay_timer);
  32}
  33
  34int __init arch_timer_arch_init(void)
  35{
  36        u32 arch_timer_rate = arch_timer_get_rate();
  37
  38        if (arch_timer_rate == 0)
  39                return -ENXIO;
  40
  41        arch_timer_delay_timer_register();
  42
  43        return 0;
  44}
  45