xref: /haiku/src/add-ons/kernel/bus_managers/ps2/ps2_elantech.h (revision 4b7e219688450694efc9d1890f83f816758c16d3)
1 /*
2  * Copyright 2013, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * The elantech_model_info struct and all the hardware specs are taken from the
6  * linux driver, thanks a lot!
7  *
8  * Authors:
9  *		Jérôme Duval <korli@users.berlios.de>
10  */
11 #ifndef _PS2_ELANTECH_H
12 #define _PS2_ELANTECH_H
13 
14 
15 #include <KernelExport.h>
16 
17 #include <touchpad_settings.h>
18 
19 #include "movement_maker.h"
20 #include "packet_buffer.h"
21 #include "ps2_dev.h"
22 
23 
24 typedef struct {
25 			ps2_dev*			dev;
26 
27 			sem_id				sem;
28 	struct	packet_buffer*		ring_buffer;
29 			size_t				packet_index;
30 			uint8				buffer[PS2_PACKET_ELANTECH];
31 			uint8				mode;
32 
33 			uint8				previousZ;
34 			TouchpadMovement	movementMaker;
35 
36 			touchpad_settings	settings;
37 			uint32				version;
38 			uint32				fwVersion;
39 			uint8				capabilities[3];
40 			bool				crcEnabled;
41 			uint32				fingers;
42 	status_t (*send_command)(ps2_dev* dev, uint8 cmd, uint8 *in, int in_count);
43 } elantech_cookie;
44 
45 
46 status_t probe_elantech(ps2_dev *dev);
47 
48 status_t elantech_open(const char *name, uint32 flags, void **_cookie);
49 status_t elantech_close(void *_cookie);
50 status_t elantech_freecookie(void *_cookie);
51 status_t elantech_ioctl(void *_cookie, uint32 op, void *buffer, size_t length);
52 
53 int32 elantech_handle_int(ps2_dev *dev);
54 void elantech_disconnect(ps2_dev *dev);
55 
56 extern device_hooks gElantechDeviceHooks;
57 
58 
59 #endif /* _PS2_ELANTECH_H */
60