smp_twd.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef __ASMARM_SMP_TWD_H
  2. #define __ASMARM_SMP_TWD_H
  3. #define TWD_TIMER_LOAD 0x00
  4. #define TWD_TIMER_COUNTER 0x04
  5. #define TWD_TIMER_CONTROL 0x08
  6. #define TWD_TIMER_INTSTAT 0x0C
  7. #define TWD_WDOG_LOAD 0x20
  8. #define TWD_WDOG_COUNTER 0x24
  9. #define TWD_WDOG_CONTROL 0x28
  10. #define TWD_WDOG_INTSTAT 0x2C
  11. #define TWD_WDOG_RESETSTAT 0x30
  12. #define TWD_WDOG_DISABLE 0x34
  13. #define TWD_TIMER_CONTROL_ENABLE (1 << 0)
  14. #define TWD_TIMER_CONTROL_ONESHOT (0 << 1)
  15. #define TWD_TIMER_CONTROL_PERIODIC (1 << 1)
  16. #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2)
  17. #include <linux/ioport.h>
  18. struct clock_event_device;
  19. extern void __iomem *twd_base;
  20. int twd_timer_setup(struct clock_event_device *);
  21. struct twd_local_timer {
  22. struct resource res[2];
  23. };
  24. #define DEFINE_TWD_LOCAL_TIMER(name,base,irq) \
  25. struct twd_local_timer name __initdata = { \
  26. .res = { \
  27. DEFINE_RES_MEM(base, 0x10), \
  28. DEFINE_RES_IRQ(irq), \
  29. }, \
  30. };
  31. int twd_local_timer_register(struct twd_local_timer *);
  32. #ifdef CONFIG_HAVE_ARM_TWD
  33. void twd_local_timer_of_register(void);
  34. #else
  35. static inline void twd_local_timer_of_register(void)
  36. {
  37. }
  38. #endif
  39. #endif