Lines Matching refs:mt

8 #include <linux/input/mt.h>
28 * @flags: mt tasks to handle in core
42 struct input_mt *mt = dev->mt;
47 if (mt)
48 return mt->num_slots != num_slots ? -EINVAL : 0;
50 mt = kzalloc(struct_size(mt, slots, num_slots), GFP_KERNEL);
51 if (!mt)
54 mt->num_slots = num_slots;
55 mt->flags = flags;
84 mt->red = kcalloc(n2, sizeof(*mt->red), GFP_KERNEL);
85 if (!mt->red)
91 input_mt_set_value(&mt->slots[i], ABS_MT_TRACKING_ID, -1);
94 mt->frame = 1;
96 dev->mt = mt;
99 kfree(mt);
113 if (dev->mt) {
114 kfree(dev->mt->red);
115 kfree(dev->mt);
117 dev->mt = NULL;
138 struct input_mt *mt = dev->mt;
142 if (!mt)
145 slot = &mt->slots[mt->slot];
146 slot->frame = mt->frame;
155 id = input_mt_new_trkid(mt);
198 struct input_mt *mt = dev->mt;
202 if (!mt)
206 oldid = mt->trkid;
209 for (i = 0; i < mt->num_slots; ++i) {
210 struct input_mt_slot *ps = &mt->slots[i];
259 static void __input_mt_drop_unused(struct input_dev *dev, struct input_mt *mt)
265 for (i = 0; i < mt->num_slots; i++) {
266 if (input_mt_is_active(&mt->slots[i]) &&
267 !input_mt_is_used(mt, &mt->slots[i])) {
282 struct input_mt *mt = dev->mt;
284 if (mt) {
289 __input_mt_drop_unused(dev, mt);
290 mt->frame++;
305 struct input_mt *mt = dev->mt;
309 if (mt) {
311 mt->frame++;
313 __input_mt_drop_unused(dev, mt);
318 mt->frame++;
323 * input_mt_sync_frame() - synchronize mt frame
332 struct input_mt *mt = dev->mt;
335 if (!mt)
338 if (mt->flags & INPUT_MT_DROP_UNUSED) {
342 __input_mt_drop_unused(dev, mt);
346 if ((mt->flags & INPUT_MT_POINTER) && !(mt->flags & INPUT_MT_SEMI_MT))
351 mt->frame++;
403 static int input_mt_set_matrix(struct input_mt *mt,
409 int *w = mt->red;
412 for (s = mt->slots; s != mt->slots + mt->num_slots; s++) {
423 return w - mt->red;
426 static void input_mt_set_slots(struct input_mt *mt,
430 int *w = mt->red, j;
435 for (s = mt->slots; s != mt->slots + mt->num_slots; s++) {
441 slots[j] = s - mt->slots;
449 for (s = mt->slots; s != mt->slots + mt->num_slots; s++) {
455 slots[j] = s - mt->slots;
484 struct input_mt *mt = dev->mt;
488 if (!mt || !mt->red)
490 if (num_pos > mt->num_slots)
495 nrc = input_mt_set_matrix(mt, pos, num_pos, mu);
496 find_reduced_matrix(mt->red, num_pos, nrc / num_pos, nrc, mu);
497 input_mt_set_slots(mt, slots, num_pos);
517 struct input_mt *mt = dev->mt;
520 if (!mt)
523 for (s = mt->slots; s != mt->slots + mt->num_slots; s++)
525 return s - mt->slots;
527 for (s = mt->slots; s != mt->slots + mt->num_slots; s++)
528 if (!input_mt_is_active(s) && !input_mt_is_used(mt, s)) {
530 return s - mt->slots;