Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/input/mouse/hgpk.h
15111 views
1
/*
2
* OLPC HGPK (XO-1) touchpad PS/2 mouse driver
3
*/
4
5
#ifndef _HGPK_H
6
#define _HGPK_H
7
8
#define HGPK_GS 0xff /* The GlideSensor */
9
#define HGPK_PT 0xcf /* The PenTablet */
10
11
enum hgpk_model_t {
12
HGPK_MODEL_PREA = 0x0a, /* pre-B1s */
13
HGPK_MODEL_A = 0x14, /* found on B1s, PT disabled in hardware */
14
HGPK_MODEL_B = 0x28, /* B2s, has capacitance issues */
15
HGPK_MODEL_C = 0x3c,
16
HGPK_MODEL_D = 0x50, /* C1, mass production */
17
};
18
19
enum hgpk_spew_flag {
20
NO_SPEW,
21
MAYBE_SPEWING,
22
SPEW_DETECTED,
23
RECALIBRATING,
24
};
25
26
#define SPEW_WATCH_COUNT 42 /* at 12ms/packet, this is 1/2 second */
27
28
enum hgpk_mode {
29
HGPK_MODE_MOUSE,
30
HGPK_MODE_GLIDESENSOR,
31
HGPK_MODE_PENTABLET,
32
HGPK_MODE_INVALID
33
};
34
35
struct hgpk_data {
36
struct psmouse *psmouse;
37
enum hgpk_mode mode;
38
bool powered;
39
enum hgpk_spew_flag spew_flag;
40
int spew_count, x_tally, y_tally; /* spew detection */
41
unsigned long recalib_window;
42
struct delayed_work recalib_wq;
43
int abs_x, abs_y;
44
int dupe_count;
45
int xbigj, ybigj, xlast, ylast; /* jumpiness detection */
46
int xsaw_secondary, ysaw_secondary; /* jumpiness detection */
47
};
48
49
#define hgpk_dbg(psmouse, format, arg...) \
50
dev_dbg(&(psmouse)->ps2dev.serio->dev, format, ## arg)
51
#define hgpk_err(psmouse, format, arg...) \
52
dev_err(&(psmouse)->ps2dev.serio->dev, format, ## arg)
53
#define hgpk_info(psmouse, format, arg...) \
54
dev_info(&(psmouse)->ps2dev.serio->dev, format, ## arg)
55
#define hgpk_warn(psmouse, format, arg...) \
56
dev_warn(&(psmouse)->ps2dev.serio->dev, format, ## arg)
57
#define hgpk_notice(psmouse, format, arg...) \
58
dev_notice(&(psmouse)->ps2dev.serio->dev, format, ## arg)
59
60
#ifdef CONFIG_MOUSE_PS2_OLPC
61
void hgpk_module_init(void);
62
int hgpk_detect(struct psmouse *psmouse, bool set_properties);
63
int hgpk_init(struct psmouse *psmouse);
64
#else
65
static inline void hgpk_module_init(void)
66
{
67
}
68
static inline int hgpk_detect(struct psmouse *psmouse, bool set_properties)
69
{
70
return -ENODEV;
71
}
72
static inline int hgpk_init(struct psmouse *psmouse)
73
{
74
return -ENODEV;
75
}
76
#endif
77
78
#endif
79
80