mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 03:11:11 -04:00
Input: atmel_mxt_ts - add support for generic touchscreen configurations
This provides support for generic touchscreen configuration options like swapped-x-y, min-x, min-y, size-x, size-y, etc. Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com> Link: https://lore.kernel.org/r/20250909054903.11519-3-clamor95@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
committed by
Dmitry Torokhov
parent
b90d027afb
commit
fd321a861f
@@ -19,6 +19,7 @@
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/input/mt.h>
|
||||
#include <linux/input/touchscreen.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/of.h>
|
||||
@@ -355,6 +356,8 @@ struct mxt_data {
|
||||
enum mxt_suspend_mode suspend_mode;
|
||||
|
||||
u32 wakeup_method;
|
||||
|
||||
struct touchscreen_properties prop;
|
||||
};
|
||||
|
||||
struct mxt_vb2_buffer {
|
||||
@@ -888,8 +891,7 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message)
|
||||
|
||||
/* Touch active */
|
||||
input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 1);
|
||||
input_report_abs(input_dev, ABS_MT_POSITION_X, x);
|
||||
input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
|
||||
touchscreen_report_pos(input_dev, &data->prop, x, y, true);
|
||||
input_report_abs(input_dev, ABS_MT_PRESSURE, amplitude);
|
||||
input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, area);
|
||||
} else {
|
||||
@@ -1010,8 +1012,7 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
|
||||
id, type, x, y, major, pressure, orientation);
|
||||
|
||||
input_mt_report_slot_state(input_dev, tool, 1);
|
||||
input_report_abs(input_dev, ABS_MT_POSITION_X, x);
|
||||
input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
|
||||
touchscreen_report_pos(input_dev, &data->prop, x, y, true);
|
||||
input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, major);
|
||||
input_report_abs(input_dev, ABS_MT_PRESSURE, pressure);
|
||||
input_report_abs(input_dev, ABS_MT_DISTANCE, distance);
|
||||
@@ -2212,6 +2213,8 @@ static int mxt_initialize_input_device(struct mxt_data *data)
|
||||
0, 255, 0, 0);
|
||||
}
|
||||
|
||||
touchscreen_parse_properties(input_dev, true, &data->prop);
|
||||
|
||||
/* For T15 and T97 Key Array */
|
||||
if (data->T15_reportid_min || data->T97_reportid_min) {
|
||||
for (i = 0; i < data->t15_num_keys; i++)
|
||||
|
||||
Reference in New Issue
Block a user