Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / input / serio / i8042-io.h
index 9b36485..cc21914 100644 (file)
@@ -3,7 +3,7 @@
 
 /*
  * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by 
+ * under the terms of the GNU General Public License version 2 as published by
  * the Free Software Foundation.
  */
 
 #ifdef __alpha__
 # define I8042_KBD_IRQ 1
 # define I8042_AUX_IRQ (RTC_PORT(0) == 0x170 ? 9 : 12) /* Jensen is special */
-#elif defined(__ia64__)
-# define I8042_KBD_IRQ isa_irq_to_vector(1)
-# define I8042_AUX_IRQ isa_irq_to_vector(12)
 #elif defined(__arm__)
 /* defined in include/asm-arm/arch-xxx/irqs.h */
 #include <asm/irq.h>
+#elif defined(CONFIG_SUPERH64)
+#include <asm/irq.h>
 #else
 # define I8042_KBD_IRQ 1
 # define I8042_AUX_IRQ 12
 #endif
 
+
 /*
  * Register numbers.
  */
 
-#define I8042_COMMAND_REG      0x64    
-#define I8042_STATUS_REG       0x64    
+#define I8042_COMMAND_REG      0x64
+#define I8042_STATUS_REG       0x64
 #define I8042_DATA_REG         0x60
 
 static inline int i8042_read_data(void)
@@ -54,35 +54,38 @@ static inline int i8042_read_status(void)
 static inline void i8042_write_data(int val)
 {
        outb(val, I8042_DATA_REG);
-       return;
 }
 
 static inline void i8042_write_command(int val)
 {
        outb(val, I8042_COMMAND_REG);
-       return;
 }
 
 static inline int i8042_platform_init(void)
 {
 /*
- * On ix86 platforms touching the i8042 data register region can do really
- * bad things. Because of this the region is always reserved on ix86 boxes.
+ * On some platforms touching the i8042 data register region can do really
+ * bad things. Because of this the region is always reserved on such boxes.
  */
-#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__) && !defined(__x86_64__) && !defined(__mips__)
+#if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC_MERGE)
        if (!request_region(I8042_DATA_REG, 16, "i8042"))
-               return -1;
+               return -EBUSY;
 #endif
 
-#if !defined(__i386__) && !defined(__x86_64__)
         i8042_reset = 1;
+
+#if defined(CONFIG_PPC_MERGE)
+       if (check_legacy_ioport(I8042_DATA_REG))
+               return -EBUSY;
+       if (!request_region(I8042_DATA_REG, 16, "i8042"))
+               return -EBUSY;
 #endif
        return 0;
 }
 
 static inline void i8042_platform_exit(void)
 {
-#if !defined(__i386__) && !defined(__sh__) && !defined(__alpha__) && !defined(__x86_64__)
+#if !defined(__sh__) && !defined(__alpha__) && !defined(CONFIG_PPC64)
        release_region(I8042_DATA_REG, 16);
 #endif
 }