]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/input/keyboard/hilkbd.c
Input: fix ordering in joystick Makefile
[linux-2.6-omap-h63xx.git] / drivers / input / keyboard / hilkbd.c
index 255a6ec75a4826a66db9d630a0dbd51aa5fdfe69..50d80ecf0b80915ee81d2ab5c59b01be9cb1c4b7 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,10 +211,10 @@ 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 (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
@@ -266,8 +266,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;
@@ -294,8 +295,10 @@ err3:
        disable_irq(HIL_IRQ);
        free_irq(HIL_IRQ, hil_dev.dev_id);
 err2:
+#if defined(CONFIG_HP300)
        release_region(HILBASE + HIL_DATA, 2);
 err1:
+#endif
        input_free_device(hil_dev.dev);
        hil_dev.dev = NULL;
        return err;