Input: trackpoint - force 3 buttons if 0 button is reported
[pandora-kernel.git] / drivers / input / mouse / trackpoint.c
index 54b2fa8..46c6145 100644 (file)
@@ -186,7 +186,8 @@ static int trackpoint_start_protocol(struct psmouse *psmouse, unsigned char *fir
        if (ps2_command(&psmouse->ps2dev, param, MAKE_PS2_CMD(0, 2, TP_READ_ID)))
                return -1;
 
-       if (param[0] != TP_MAGIC_IDENT)
+       /* add new TP ID. */
+       if (!(param[0] & TP_MAGIC_IDENT))
                return -1;
 
        if (firmware_id)
@@ -297,8 +298,11 @@ int trackpoint_detect(struct psmouse *psmouse, bool set_properties)
                return 0;
 
        if (trackpoint_read(&psmouse->ps2dev, TP_EXT_BTN, &button_info)) {
-               printk(KERN_WARNING "trackpoint.c: failed to get extended button data\n");
-               button_info = 0;
+               printk(KERN_WARNING "trackpoint.c: failed to get extended button data, assuming 3 buttons\n");
+               button_info = 0x33;
+       } else if (!button_info) {
+               printk(KERN_WARNING "trackpoint.c: got 0 in extended button data, assuming 3 buttons\n");
+               button_info = 0x33;
        }
 
        psmouse->private = kzalloc(sizeof(struct trackpoint_data), GFP_KERNEL);