Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
alps.h
Go to the documentation of this file.
1 /*
2  * ALPS touchpad PS/2 mouse driver
3  *
4  * Copyright (c) 2003 Peter Osterlund <[email protected]>
5  * Copyright (c) 2005 Vojtech Pavlik <[email protected]>
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License version 2 as published by
9  * the Free Software Foundation.
10  */
11 
12 #ifndef _ALPS_H
13 #define _ALPS_H
14 
15 #define ALPS_PROTO_V1 0
16 #define ALPS_PROTO_V2 1
17 #define ALPS_PROTO_V3 2
18 #define ALPS_PROTO_V4 3
19 
21  unsigned char signature[3];
22  unsigned char command_mode_resp; /* v3/v4 only */
23  unsigned char proto_version;
24  unsigned char byte0, mask0;
25  unsigned char flags;
26 };
27 
29  int command;
30  unsigned char data;
31 };
32 
33 struct alps_data {
34  struct input_dev *dev2; /* Relative device */
35  char phys[32]; /* Phys */
36  const struct alps_model_info *i;/* Info */
38  int addr_command; /* Command to set register address */
39  int prev_fin; /* Finger bit from previous packet */
40  int multi_packet; /* Multi-packet data in progress */
41  unsigned char multi_data[6]; /* Saved multi-packet data */
42  int x1, x2, y1, y2; /* Coordinates from last MT report */
43  int fingers; /* Number of fingers from MT report */
45  struct timer_list timer;
46 };
47 
48 #define ALPS_QUIRK_TRACKSTICK_BUTTONS 1 /* trakcstick buttons in trackstick packet */
49 
50 #ifdef CONFIG_MOUSE_PS2_ALPS
51 int alps_detect(struct psmouse *psmouse, bool set_properties);
52 int alps_init(struct psmouse *psmouse);
53 #else
54 inline int alps_detect(struct psmouse *psmouse, bool set_properties)
55 {
56  return -ENOSYS;
57 }
58 inline int alps_init(struct psmouse *psmouse)
59 {
60  return -ENOSYS;
61 }
62 #endif /* CONFIG_MOUSE_PS2_ALPS */
63 
64 #endif