home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-ia64 / iosapic.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.9 KB  |  113 lines

  1. #ifndef __ASM_IA64_IOSAPIC_H
  2. #define __ASM_IA64_IOSAPIC_H
  3.  
  4. #define    IOSAPIC_REG_SELECT    0x0
  5. #define    IOSAPIC_WINDOW        0x10
  6. #define    IOSAPIC_EOI        0x40
  7.  
  8. #define    IOSAPIC_VERSION        0x1
  9.  
  10. /*
  11.  * Redirection table entry
  12.  */
  13. #define    IOSAPIC_RTE_LOW(i)    (0x10+i*2)
  14. #define    IOSAPIC_RTE_HIGH(i)    (0x11+i*2)
  15.  
  16. #define    IOSAPIC_DEST_SHIFT        16
  17.  
  18. /*
  19.  * Delivery mode
  20.  */
  21. #define    IOSAPIC_DELIVERY_SHIFT        8
  22. #define    IOSAPIC_FIXED            0x0
  23. #define    IOSAPIC_LOWEST_PRIORITY    0x1
  24. #define    IOSAPIC_PMI            0x2
  25. #define    IOSAPIC_NMI            0x4
  26. #define    IOSAPIC_INIT            0x5
  27. #define    IOSAPIC_EXTINT            0x7
  28.  
  29. /*
  30.  * Interrupt polarity
  31.  */
  32. #define    IOSAPIC_POLARITY_SHIFT        13
  33. #define    IOSAPIC_POL_HIGH        0
  34. #define    IOSAPIC_POL_LOW        1
  35.  
  36. /*
  37.  * Trigger mode
  38.  */
  39. #define    IOSAPIC_TRIGGER_SHIFT        15
  40. #define    IOSAPIC_EDGE            0
  41. #define    IOSAPIC_LEVEL            1
  42.  
  43. /*
  44.  * Mask bit
  45.  */
  46.  
  47. #define    IOSAPIC_MASK_SHIFT        16
  48. #define    IOSAPIC_MASK            (1<<IOSAPIC_MASK_SHIFT)
  49.  
  50. #ifndef __ASSEMBLY__
  51.  
  52. #ifdef CONFIG_IOSAPIC
  53.  
  54. #define NR_IOSAPICS            256
  55.  
  56. static inline unsigned int iosapic_read(char __iomem *iosapic, unsigned int reg)
  57. {
  58.     writel(reg, iosapic + IOSAPIC_REG_SELECT);
  59.     return readl(iosapic + IOSAPIC_WINDOW);
  60. }
  61.  
  62. static inline void iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val)
  63. {
  64.     writel(reg, iosapic + IOSAPIC_REG_SELECT);
  65.     writel(val, iosapic + IOSAPIC_WINDOW);
  66. }
  67.  
  68. static inline void iosapic_eoi(char __iomem *iosapic, u32 vector)
  69. {
  70.     writel(vector, iosapic + IOSAPIC_EOI);
  71. }
  72.  
  73. extern void __init iosapic_system_init (int pcat_compat);
  74. extern int __devinit iosapic_init (unsigned long address,
  75.                     unsigned int gsi_base);
  76. #ifdef CONFIG_HOTPLUG
  77. extern int iosapic_remove (unsigned int gsi_base);
  78. #else
  79. #define iosapic_remove(gsi_base)                (-EINVAL)
  80. #endif /* CONFIG_HOTPLUG */
  81. extern int gsi_to_vector (unsigned int gsi);
  82. extern int gsi_to_irq (unsigned int gsi);
  83. extern int iosapic_register_intr (unsigned int gsi, unsigned long polarity,
  84.                   unsigned long trigger);
  85. extern void iosapic_unregister_intr (unsigned int irq);
  86. extern void __init iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
  87.                       unsigned long polarity,
  88.                       unsigned long trigger);
  89. extern int __init iosapic_register_platform_intr (u32 int_type,
  90.                        unsigned int gsi,
  91.                        int pmi_vector,
  92.                        u16 eid, u16 id,
  93.                        unsigned long polarity,
  94.                        unsigned long trigger);
  95. extern unsigned int iosapic_version (char __iomem *addr);
  96.  
  97. #ifdef CONFIG_NUMA
  98. extern void __devinit map_iosapic_to_node (unsigned int, int);
  99. #endif
  100. #else
  101. #define iosapic_system_init(pcat_compat)            do { } while (0)
  102. #define iosapic_init(address,gsi_base)                (-EINVAL)
  103. #define iosapic_remove(gsi_base)                (-ENODEV)
  104. #define iosapic_register_intr(gsi,polarity,trigger)        (gsi)
  105. #define iosapic_unregister_intr(irq)                do { } while (0)
  106. #define iosapic_override_isa_irq(isa_irq,gsi,polarity,trigger)    do { } while (0)
  107. #define iosapic_register_platform_intr(type,gsi,pmi,eid,id, \
  108.     polarity,trigger)                    (gsi)
  109. #endif
  110.  
  111. # endif /* !__ASSEMBLY__ */
  112. #endif /* __ASM_IA64_IOSAPIC_H */
  113.