Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
523 mauro 1
/*
2
 * Synaptics TouchPad PS/2 mouse driver
3
 *
4
 * This program is free software; you can redistribute it and/or modify it
5
 * under the terms of the GNU General Public License version 2 as published by
6
 * the Free Software Foundation.
7
 */
8
 
9
#ifndef _SYNAPTICS_H
10
#define _SYNAPTICS_H
11
 
12
 
13
extern void synaptics_process_byte(struct psmouse *psmouse, struct pt_regs *regs);
14
extern int synaptics_init(struct psmouse *psmouse);
15
extern int synaptics_pt_init(struct psmouse *psmouse);
16
extern void synaptics_disconnect(struct psmouse *psmouse);
17
 
18
/* synaptics queries */
19
#define SYN_QUE_IDENTIFY                0x00
20
#define SYN_QUE_MODES                   0x01
21
#define SYN_QUE_CAPABILITIES            0x02
22
#define SYN_QUE_MODEL                   0x03
23
#define SYN_QUE_SERIAL_NUMBER_PREFIX    0x06
24
#define SYN_QUE_SERIAL_NUMBER_SUFFIX    0x07
25
#define SYN_QUE_RESOLUTION              0x08
26
#define SYN_QUE_EXT_CAPAB               0x09
27
 
28
/* synatics modes */
29
#define SYN_BIT_ABSOLUTE_MODE           (1 << 7)
30
#define SYN_BIT_HIGH_RATE               (1 << 6)
31
#define SYN_BIT_SLEEP_MODE              (1 << 3)
32
#define SYN_BIT_DISABLE_GESTURE         (1 << 2)
33
#define SYN_BIT_FOUR_BYTE_CLIENT        (1 << 1)
34
#define SYN_BIT_W_MODE                  (1 << 0)
35
 
36
/* synaptics model ID bits */
37
#define SYN_MODEL_ROT180(m)             ((m) & (1 << 23))
38
#define SYN_MODEL_PORTRAIT(m)           ((m) & (1 << 22))
39
#define SYN_MODEL_SENSOR(m)             (((m) >> 16) & 0x3f)
40
#define SYN_MODEL_HARDWARE(m)           (((m) >> 9) & 0x7f)
41
#define SYN_MODEL_NEWABS(m)             ((m) & (1 << 7))
42
#define SYN_MODEL_PEN(m)                ((m) & (1 << 6))
43
#define SYN_MODEL_SIMPLIC(m)            ((m) & (1 << 5))
44
#define SYN_MODEL_GEOMETRY(m)           ((m) & 0x0f)
45
 
46
/* synaptics capability bits */
47
#define SYN_CAP_EXTENDED(c)             ((c) & (1 << 23))
48
#define SYN_CAP_PASS_THROUGH(c)         ((c) & (1 << 7))
49
#define SYN_CAP_SLEEP(c)                ((c) & (1 << 4))
50
#define SYN_CAP_FOUR_BUTTON(c)          ((c) & (1 << 3))
51
#define SYN_CAP_MULTIFINGER(c)          ((c) & (1 << 1))
52
#define SYN_CAP_PALMDETECT(c)           ((c) & (1 << 0))
53
#define SYN_CAP_VALID(c)                ((((c) & 0x00ff00) >> 8) == 0x47)
54
#define SYN_EXT_CAP_REQUESTS(c)         ((((c) & 0x700000) >> 20) == 1)
55
#define SYN_CAP_MULTI_BUTTON_NO(ec)     (((ec) & 0x00f000) >> 12)
56
 
57
/* synaptics modes query bits */
58
#define SYN_MODE_ABSOLUTE(m)            ((m) & (1 << 7))
59
#define SYN_MODE_RATE(m)                ((m) & (1 << 6))
60
#define SYN_MODE_BAUD_SLEEP(m)          ((m) & (1 << 3))
61
#define SYN_MODE_DISABLE_GESTURE(m)     ((m) & (1 << 2))
62
#define SYN_MODE_PACKSIZE(m)            ((m) & (1 << 1))
63
#define SYN_MODE_WMODE(m)               ((m) & (1 << 0))
64
 
65
/* synaptics identify query bits */
66
#define SYN_ID_MODEL(i)                 (((i) >> 4) & 0x0f)
67
#define SYN_ID_MAJOR(i)                 ((i) & 0x0f)
68
#define SYN_ID_MINOR(i)                 (((i) >> 16) & 0xff)
69
#define SYN_ID_IS_SYNAPTICS(i)          ((((i) >> 8) & 0xff) == 0x47)
70
 
71
/* synaptics special commands */
72
#define SYN_PS_SET_MODE2                0x14
73
#define SYN_PS_CLIENT_CMD               0x28
74
 
75
/*
76
 * A structure to describe the state of the touchpad hardware (buttons and pad)
77
 */
78
 
79
struct synaptics_hw_state {
80
        int x;
81
        int y;
82
        int z;
83
        int w;
84
        int left;
85
        int right;
86
        int up;
87
        int down;
88
        int b0;
89
        int b1;
90
        int b2;
91
        int b3;
92
        int b4;
93
        int b5;
94
        int b6;
95
        int b7;
96
};
97
 
98
struct synaptics_data {
99
        /* Data read from the touchpad */
100
        unsigned long int model_id;             /* Model-ID */
101
        unsigned long int capabilities;         /* Capabilities */
102
        unsigned long int ext_cap;              /* Extended Capabilities */
103
        unsigned long int identity;             /* Identification */
104
 
105
        /* Data for normal processing */
106
        unsigned int out_of_sync;               /* # of packets out of sync */
107
        int old_w;                              /* Previous w value */
108
 
109
        struct serio *ptport;                   /* pass-through port */
110
};
111
 
112
#endif /* _SYNAPTICS_H */