-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
In preparation for common code to handle a larger set of MT slots devices, move the slots handling over to a separate file. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
- Loading branch information
Henrik Rydberg
committed
Dec 16, 2010
1 parent
c8ddb27
commit 47c78e8
Showing
9 changed files
with
108 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/* | ||
* Input Multitouch Library | ||
* | ||
* Copyright (c) 2008-2010 Henrik Rydberg | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published by | ||
* the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/input/mt.h> | ||
#include <linux/slab.h> | ||
|
||
/** | ||
* input_mt_create_slots() - create MT input slots | ||
* @dev: input device supporting MT events and finger tracking | ||
* @num_slots: number of slots used by the device | ||
* | ||
* This function allocates all necessary memory for MT slot handling in the | ||
* input device, and adds ABS_MT_SLOT to the device capabilities. All slots | ||
* are initially marked as unused by setting ABS_MT_TRACKING_ID to -1. | ||
*/ | ||
int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots) | ||
{ | ||
int i; | ||
|
||
if (!num_slots) | ||
return 0; | ||
|
||
dev->mt = kcalloc(num_slots, sizeof(struct input_mt_slot), GFP_KERNEL); | ||
if (!dev->mt) | ||
return -ENOMEM; | ||
|
||
dev->mtsize = num_slots; | ||
input_set_abs_params(dev, ABS_MT_SLOT, 0, num_slots - 1, 0, 0); | ||
|
||
/* Mark slots as 'unused' */ | ||
for (i = 0; i < num_slots; i++) | ||
input_mt_set_value(&dev->mt[i], ABS_MT_TRACKING_ID, -1); | ||
|
||
return 0; | ||
} | ||
EXPORT_SYMBOL(input_mt_create_slots); | ||
|
||
/** | ||
* input_mt_destroy_slots() - frees the MT slots of the input device | ||
* @dev: input device with allocated MT slots | ||
* | ||
* This function is only needed in error path as the input core will | ||
* automatically free the MT slots when the device is destroyed. | ||
*/ | ||
void input_mt_destroy_slots(struct input_dev *dev) | ||
{ | ||
kfree(dev->mt); | ||
dev->mt = NULL; | ||
dev->mtsize = 0; | ||
} | ||
EXPORT_SYMBOL(input_mt_destroy_slots); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#ifndef _INPUT_MT_H | ||
#define _INPUT_MT_H | ||
|
||
/* | ||
* Input Multitouch Library | ||
* | ||
* Copyright (c) 2010 Henrik Rydberg | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published by | ||
* the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/input.h> | ||
|
||
/** | ||
* struct input_mt_slot - represents the state of an input MT slot | ||
* @abs: holds current values of ABS_MT axes for this slot | ||
*/ | ||
struct input_mt_slot { | ||
int abs[ABS_MT_LAST - ABS_MT_FIRST + 1]; | ||
}; | ||
|
||
static inline void input_mt_set_value(struct input_mt_slot *slot, | ||
unsigned code, int value) | ||
{ | ||
slot->abs[code - ABS_MT_FIRST] = value; | ||
} | ||
|
||
static inline int input_mt_get_value(const struct input_mt_slot *slot, | ||
unsigned code) | ||
{ | ||
return slot->abs[code - ABS_MT_FIRST]; | ||
} | ||
|
||
int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots); | ||
void input_mt_destroy_slots(struct input_dev *dev); | ||
|
||
static inline void input_mt_slot(struct input_dev *dev, int slot) | ||
{ | ||
input_event(dev, EV_ABS, ABS_MT_SLOT, slot); | ||
} | ||
|
||
#endif |