aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-12-15 07:50:34 -0500
committerHenrik Rydberg <rydberg@euromail.se>2010-12-16 04:41:38 -0500
commitc5f4dec1ceb6ab773bbbefbe64a7c990c7d6b17f (patch)
treefdc8b67537b73474bd34b65d0d1c5bc7a9de3c7a /include
parent8cde81001626c4c60b26ef2eb5fc522885ed9fd0 (diff)
input: mt: Move tracking and pointer emulation to input-mt
The drivers using the type B protocol all report tracking information the same way. The contact id is semantically equivalent to ABS_MT_SLOT, and the handling of ABS_MT_TRACKING_ID only complicates the driver. The situation can be improved upon by providing a common pointer emulation code, thereby removing the need for the tracking id in the driver. This patch moves all tracking event handling over to the input core, simplifying both the existing drivers and the ones currently in preparation. Acked-by: Ping Cheng <pingc@wacom.com> Acked-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'include')
-rw-r--r--include/linux/input.h3
-rw-r--r--include/linux/input/mt.h13
2 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/input.h b/include/linux/input.h
index 99e2a52c0509..6de145df4c1c 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -848,6 +848,7 @@ struct input_keymap_entry {
848 */ 848 */
849#define MT_TOOL_FINGER 0 849#define MT_TOOL_FINGER 0
850#define MT_TOOL_PEN 1 850#define MT_TOOL_PEN 1
851#define MT_TOOL_MAX 1
851 852
852/* 853/*
853 * Values describing the status of a force-feedback effect 854 * Values describing the status of a force-feedback effect
@@ -1122,6 +1123,7 @@ struct ff_effect {
1122 * of tracked contacts 1123 * of tracked contacts
1123 * @mtsize: number of MT slots the device uses 1124 * @mtsize: number of MT slots the device uses
1124 * @slot: MT slot currently being transmitted 1125 * @slot: MT slot currently being transmitted
1126 * @trkid: stores MT tracking ID for the current contact
1125 * @absinfo: array of &struct absinfo elements holding information 1127 * @absinfo: array of &struct absinfo elements holding information
1126 * about absolute axes (current value, min, max, flat, fuzz, 1128 * about absolute axes (current value, min, max, flat, fuzz,
1127 * resolution) 1129 * resolution)
@@ -1206,6 +1208,7 @@ struct input_dev {
1206 struct input_mt_slot *mt; 1208 struct input_mt_slot *mt;
1207 int mtsize; 1209 int mtsize;
1208 int slot; 1210 int slot;
1211 int trkid;
1209 1212
1210 struct input_absinfo *absinfo; 1213 struct input_absinfo *absinfo;
1211 1214
diff --git a/include/linux/input/mt.h b/include/linux/input/mt.h
index d7f6518e3222..b3ac06a4435d 100644
--- a/include/linux/input/mt.h
+++ b/include/linux/input/mt.h
@@ -13,6 +13,8 @@
13 13
14#include <linux/input.h> 14#include <linux/input.h>
15 15
16#define TRKID_MAX 0xffff
17
16/** 18/**
17 * struct input_mt_slot - represents the state of an input MT slot 19 * struct input_mt_slot - represents the state of an input MT slot
18 * @abs: holds current values of ABS_MT axes for this slot 20 * @abs: holds current values of ABS_MT axes for this slot
@@ -36,9 +38,20 @@ static inline int input_mt_get_value(const struct input_mt_slot *slot,
36int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots); 38int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots);
37void input_mt_destroy_slots(struct input_dev *dev); 39void input_mt_destroy_slots(struct input_dev *dev);
38 40
41static inline int input_mt_new_trkid(struct input_dev *dev)
42{
43 return dev->trkid++ & TRKID_MAX;
44}
45
39static inline void input_mt_slot(struct input_dev *dev, int slot) 46static inline void input_mt_slot(struct input_dev *dev, int slot)
40{ 47{
41 input_event(dev, EV_ABS, ABS_MT_SLOT, slot); 48 input_event(dev, EV_ABS, ABS_MT_SLOT, slot);
42} 49}
43 50
51void input_mt_report_slot_state(struct input_dev *dev,
52 unsigned int tool_type, bool active);
53
54void input_mt_report_finger_count(struct input_dev *dev, int count);
55void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count);
56
44#endif 57#endif