x86: define outb_pic and inb_pic to stop using outb_p and inb_p
[sfrench/cifs-2.6.git] / include / asm-x86 / i8259.h
index 67c319e0efc79f4975e1983e8a9f75e31465e434..e2650f21ca8d30892c94747a4438921c27c65eae 100644 (file)
@@ -1,6 +1,8 @@
 #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])
@@ -29,7 +31,28 @@ 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);
+}
 
 #endif /* __ASM_I8259_H__ */