This source file includes following definitions.
- dec_ioasic_hpt_read
 
- dec_ioasic_read_sched_clock
 
- dec_ioasic_clocksource_init
 
   1 
   2 
   3 
   4 
   5 
   6 
   7 #include <linux/clocksource.h>
   8 #include <linux/sched_clock.h>
   9 #include <linux/init.h>
  10 
  11 #include <asm/ds1287.h>
  12 #include <asm/time.h>
  13 #include <asm/dec/ioasic.h>
  14 #include <asm/dec/ioasic_addrs.h>
  15 
  16 static u64 dec_ioasic_hpt_read(struct clocksource *cs)
  17 {
  18         return ioasic_read(IO_REG_FCTR);
  19 }
  20 
  21 static struct clocksource clocksource_dec = {
  22         .name           = "dec-ioasic",
  23         .read           = dec_ioasic_hpt_read,
  24         .mask           = CLOCKSOURCE_MASK(32),
  25         .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
  26 };
  27 
  28 static u64 notrace dec_ioasic_read_sched_clock(void)
  29 {
  30         return ioasic_read(IO_REG_FCTR);
  31 }
  32 
  33 int __init dec_ioasic_clocksource_init(void)
  34 {
  35         unsigned int freq;
  36         u32 start, end;
  37         int i = HZ / 8;
  38 
  39         ds1287_timer_state();
  40         while (!ds1287_timer_state())
  41                 ;
  42 
  43         start = dec_ioasic_hpt_read(&clocksource_dec);
  44 
  45         while (i--)
  46                 while (!ds1287_timer_state())
  47                         ;
  48 
  49         end = dec_ioasic_hpt_read(&clocksource_dec);
  50 
  51         freq = (end - start) * 8;
  52 
  53         
  54         if (!freq)
  55                 return -ENXIO;
  56 
  57         printk(KERN_INFO "I/O ASIC clock frequency %dHz\n", freq);
  58 
  59         clocksource_dec.rating = 200 + freq / 10000000;
  60         clocksource_register_hz(&clocksource_dec, freq);
  61 
  62         sched_clock_register(dec_ioasic_read_sched_clock, 32, freq);
  63 
  64         return 0;
  65 }