]> err.no Git - linux-2.6/blobdiff - include/asm-x86/i8259.h
Merge branch 'for-linus' of git://www.jni.nu/cris
[linux-2.6] / include / asm-x86 / i8259.h
index 67c319e0efc79f4975e1983e8a9f75e31465e434..2f98df91f1f2bef9e7fc7bc47b3a42bbe14403d3 100644 (file)
@@ -1,9 +1,11 @@
 #ifndef __ASM_I8259_H__
 #define __ASM_I8259_H__
 
+#include <linux/delay.h>
+
 extern unsigned int cached_irq_mask;
 
-#define __byte(x,y)            (((unsigned char *) &(y))[x])
+#define __byte(x, y)           (((unsigned char *)&(y))[x])
 #define cached_master_mask     (__byte(0, cached_irq_mask))
 #define cached_slave_mask      (__byte(1, cached_irq_mask))
 
@@ -29,7 +31,30 @@ extern void enable_8259A_irq(unsigned int irq);
 extern void disable_8259A_irq(unsigned int irq);
 extern unsigned int startup_8259A_irq(unsigned int irq);
 
-#define inb_pic                inb_p
-#define outb_pic       outb_p
+/* the PIC may need a careful delay on some platforms, hence specific calls */
+static inline unsigned char inb_pic(unsigned int port)
+{
+       unsigned char value = inb(port);
+
+       /*
+        * delay for some accesses to PIC on motherboard or in chipset
+        * must be at least one microsecond, so be safe here:
+        */
+       udelay(2);
+
+       return value;
+}
+
+static inline void outb_pic(unsigned char value, unsigned int port)
+{
+       outb(value, port);
+       /*
+        * delay for some accesses to PIC on motherboard or in chipset
+        * must be at least one microsecond, so be safe here:
+        */
+       udelay(2);
+}
+
+extern struct irq_chip i8259A_chip;
 
 #endif /* __ASM_I8259_H__ */