vfs: check userland buffers before reading them.
[haiku.git] / src / add-ons / kernel / bus_managers / ps2 / ps2_elantech.h
blobb68a7bb369892077fb9861217fa389c4b104d12e
1 /*
2 * Copyright 2013, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
5 * The elantech_model_info struct and all the hardware specs are taken from the
6 * linux driver, thanks a lot!
8 * Authors:
9 * Jérôme Duval <korli@users.berlios.de>
11 #ifndef _PS2_ELANTECH_H
12 #define _PS2_ELANTECH_H
15 #include <KernelExport.h>
17 #include <touchpad_settings.h>
19 #include "movement_maker.h"
20 #include "packet_buffer.h"
21 #include "ps2_dev.h"
24 typedef struct {
25 ps2_dev* dev;
27 sem_id sem;
28 struct packet_buffer* ring_buffer;
29 size_t packet_index;
30 uint8 buffer[PS2_PACKET_ELANTECH];
31 uint8 mode;
33 uint8 previousZ;
34 TouchpadMovement movementMaker;
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;
46 status_t probe_elantech(ps2_dev *dev);
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);
53 int32 elantech_handle_int(ps2_dev *dev);
54 void elantech_disconnect(ps2_dev *dev);
56 extern device_hooks gElantechDeviceHooks;
59 #endif /* _PS2_ELANTECH_H */