blob: a00a4ab92a0f7ca2050fa5a3d8b5c85fb142c233 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/*
2 * ALPS touchpad PS/2 mouse driver
3 *
4 * Copyright (c) 2003 Peter Osterlund <petero2@telia.com>
5 * Copyright (c) 2005 Vojtech Pavlik <vojtech@suse.cz>
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
20struct alps_model_info {
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
28struct alps_nibble_commands {
29 int command;
30 unsigned char data;
31};
32
33struct alps_data {
34 struct input_dev *dev2; /* Relative device */
35 char phys[32]; /* Phys */
36 const struct alps_model_info *i;/* Info */
37 const struct alps_nibble_commands *nibble_commands;
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 u8 quirks;
43 struct timer_list timer;
44};
45
46#define ALPS_QUIRK_TRACKSTICK_BUTTONS 1 /* trakcstick buttons in trackstick packet */
47
48#ifdef CONFIG_MOUSE_PS2_ALPS
49int alps_detect(struct psmouse *psmouse, bool set_properties);
50int alps_init(struct psmouse *psmouse);
51#else
52inline int alps_detect(struct psmouse *psmouse, bool set_properties)
53{
54 return -ENOSYS;
55}
56inline int alps_init(struct psmouse *psmouse)
57{
58 return -ENOSYS;
59}
60#endif /* CONFIG_MOUSE_PS2_ALPS */
61
62#endif