]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/input/keyboard/hilkbd.c
m68k: Some input drivers do not check the platform
[linux-2.6-omap-h63xx.git] / drivers / input / keyboard / hilkbd.c
index 4de4dc297d506b7b2d6f3d8ed9a1137324879e64..aacf71f3cd44b0557af0af0549a4fee2e81dfdf3 100644 (file)
@@ -3,7 +3,7 @@
  *
  *  Copyright (C) 1998 Philip Blundell <philb@gnu.org>
  *  Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>
- *  Copyright (C) 1999-2006 Helge Deller <deller@gmx.de>
+ *  Copyright (C) 1999-2007 Helge Deller <deller@gmx.de>
  *
  *  Very basic HP Human Interface Loop (HIL) driver.
  *  This driver handles the keyboard on HP300 (m68k) and on some
@@ -52,7 +52,7 @@ MODULE_LICENSE("GPL v2");
 
 #elif defined(CONFIG_HP300)
 
- #define HILBASE               0xf0428000 /* HP300 (m86k) port address */
+ #define HILBASE               0xf0428000UL /* HP300 (m68k) port address */
  #define HIL_DATA              0x1
  #define HIL_CMD               0x3
  #define HIL_IRQ               2
@@ -89,7 +89,7 @@ MODULE_LICENSE("GPL v2");
 #define        HIL_READKBDSADR         0xF9
 #define        HIL_WRITEKBDSADR        0xE9
 
-static unsigned int hphilkeyb_keycode[HIL_KEYCODES_SET1_TBLSIZE] =
+static unsigned int hphilkeyb_keycode[HIL_KEYCODES_SET1_TBLSIZE] __read_mostly =
        { HIL_KEYCODES_SET1 };
 
 /* HIL structure */
@@ -211,12 +211,16 @@ hil_keyb_init(void)
                return -ENODEV; /* already initialized */
        }
 
+       spin_lock_init(&hil_dev.lock);
        hil_dev.dev = input_allocate_device();
        if (!hil_dev.dev)
                return -ENOMEM;
-       hil_dev.dev->private = &hil_dev;
 
 #if defined(CONFIG_HP300)
+       if (!MACH_IS_HP300) {
+               err = -ENODEV;
+               goto err1;
+       }
        if (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
                printk(KERN_ERR "HIL: hardware register was not found\n");
                err = -ENODEV;
@@ -266,8 +270,9 @@ hil_keyb_init(void)
                if (hphilkeyb_keycode[i] != KEY_RESERVED)
                        set_bit(hphilkeyb_keycode[i], hil_dev.dev->keybit);
 
-       hil_dev.dev->evbit[0]   = BIT(EV_KEY) | BIT(EV_REP);
-       hil_dev.dev->ledbit[0]  = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL);
+       hil_dev.dev->evbit[0]   = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
+       hil_dev.dev->ledbit[0]  = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) |
+               BIT_MASK(LED_SCROLLL);
        hil_dev.dev->keycodemax = HIL_KEYCODES_SET1_TBLSIZE;
        hil_dev.dev->keycodesize= sizeof(hphilkeyb_keycode[0]);
        hil_dev.dev->keycode    = hphilkeyb_keycode;