2 * Copyright 2008-2010, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
6 * Clemens Zeidler (haiku@Clemens-Zeidler.de)
8 #ifndef PS2_SYNAPTICS_H
9 #define PS2_SYNAPTICS_H
12 #include <KernelExport.h>
14 #include <touchpad_settings.h>
16 #include "movement_maker.h"
17 #include "packet_buffer.h"
18 #include "ps2_service.h"
21 #define SYN_TOUCHPAD 0x47
23 #define SYN_ABSOLUTE_MODE 0x80
24 // Absolute plus w mode
25 #define SYN_ABSOLUTE_W_MODE 0x81
26 #define SYN_FOUR_BYTE_CHILD (1 << 1)
27 // Low power sleep mode
28 #define SYN_SLEEP_MODE 0x0C
29 // Synaptics Passthrough port
30 #define SYN_CHANGE_MODE 0x14
31 #define SYN_PASSTHROUGH_CMD 0x28
34 #define SYNAPTICS_HISTORY_SIZE 256
36 // no touchpad / left / right button pressed
37 #define IS_SYN_PT_PACKAGE(val) ((val[0] & 0xFC) == 0x84 \
38 && (val[3] & 0xCC) == 0xc4)
50 bool capPalmDetection
;
59 struct packet_buffer
* synaptics_ring_buffer
;
61 uint8 buffer
[PS2_PACKET_SYNAPTICS
];
64 TouchpadMovement movementMaker
;
66 touchpad_settings settings
;
70 status_t
synaptics_pass_through_set_packet_size(ps2_dev
*dev
, uint8 size
);
71 status_t
passthrough_command(ps2_dev
*dev
, uint8 cmd
, const uint8
*out
,
72 int out_count
, uint8
*in
, int in_count
, bigtime_t timeout
);
73 status_t
probe_synaptics(ps2_dev
*dev
);
75 status_t
synaptics_open(const char *name
, uint32 flags
, void **_cookie
);
76 status_t
synaptics_close(void *_cookie
);
77 status_t
synaptics_freecookie(void *_cookie
);
78 status_t
synaptics_ioctl(void *_cookie
, uint32 op
, void *buffer
, size_t length
);
80 int32
synaptics_handle_int(ps2_dev
*dev
);
81 void synaptics_disconnect(ps2_dev
*dev
);
83 extern device_hooks gSynapticsDeviceHooks
;
85 #endif // PS2_SYNAPTICS_H