localtimer.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Dummy local timer
  3. *
  4. * Copyright (C) 2008 Paul Mundt
  5. *
  6. * cloned from:
  7. *
  8. * linux/arch/arm/mach-realview/localtimer.c
  9. *
  10. * Copyright (C) 2002 ARM Ltd.
  11. * All Rights Reserved
  12. *
  13. * This program is free software; you can redistribute it and/or modify
  14. * it under the terms of the GNU General Public License version 2 as
  15. * published by the Free Software Foundation.
  16. */
  17. #include <linux/init.h>
  18. #include <linux/kernel.h>
  19. #include <linux/delay.h>
  20. #include <linux/device.h>
  21. #include <linux/smp.h>
  22. #include <linux/jiffies.h>
  23. #include <linux/percpu.h>
  24. #include <linux/clockchips.h>
  25. #include <linux/hardirq.h>
  26. #include <linux/irq.h>
  27. static DEFINE_PER_CPU(struct clock_event_device, local_clockevent);
  28. /*
  29. * Used on SMP for either the local timer or SMP_MSG_TIMER
  30. */
  31. void local_timer_interrupt(void)
  32. {
  33. struct clock_event_device *clk = this_cpu_ptr(&local_clockevent);
  34. irq_enter();
  35. clk->event_handler(clk);
  36. irq_exit();
  37. }
  38. void local_timer_setup(unsigned int cpu)
  39. {
  40. struct clock_event_device *clk = &per_cpu(local_clockevent, cpu);
  41. clk->name = "dummy_timer";
  42. clk->features = CLOCK_EVT_FEAT_ONESHOT |
  43. CLOCK_EVT_FEAT_PERIODIC |
  44. CLOCK_EVT_FEAT_DUMMY;
  45. clk->rating = 400;
  46. clk->mult = 1;
  47. clk->broadcast = smp_timer_broadcast;
  48. clk->cpumask = cpumask_of(cpu);
  49. clockevents_register_device(clk);
  50. }
  51. void local_timer_stop(unsigned int cpu)
  52. {
  53. }