summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2014-01-21 10:28:47 +0100
committerStefan Agner <stefan.agner@toradex.com>2014-01-23 09:50:31 +0100
commit1d71afdc4e15256a448758fbd3c4f36e0012d0e0 (patch)
tree84c18016de37eeccab80b588f2f672627c6b2120 /drivers
parentdeca480ca3c17883c812fec3e06d1ad6253f1a4d (diff)
input: touchscreen: add ABS_X/ABS_Y axis for Fusion touchscreen
Recent evdev X-Server input driver implementation complain when only multitouch axes have been reported ("found only multitouch-axes. That shouldn't happen."). Therefor also report the primary touch detection with default axis.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/touchscreen/fusion_F0710A.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/fusion_F0710A.c b/drivers/input/touchscreen/fusion_F0710A.c
index ac734abf5368..08beda06c2e6 100644
--- a/drivers/input/touchscreen/fusion_F0710A.c
+++ b/drivers/input/touchscreen/fusion_F0710A.c
@@ -78,6 +78,10 @@ static int fusion_F0710A_register_input(void)
input_set_abs_params(dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(dev, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
+ input_set_abs_params(dev, ABS_X, 0, fusion_F0710A.info.xres-1, 0, 0);
+ input_set_abs_params(dev, ABS_Y, 0, fusion_F0710A.info.yres-1, 0, 0);
+ input_set_abs_params(dev, ABS_PRESSURE, 0, 255, 0, 0);
+
ret = input_register_device(dev);
if (ret < 0)
goto bail1;
@@ -231,6 +235,11 @@ static void fusion_F0710A_wq(struct work_struct *work)
input_report_abs(dev, ABS_MT_POSITION_Y, y2);
input_mt_sync(dev);
+ input_report_abs(dev, ABS_X, x1);
+ input_report_abs(dev, ABS_Y, y1);
+ input_report_abs(dev, ABS_PRESSURE, z1);
+ input_report_key(dev, BTN_TOUCH, fusion_F0710A.tip1);
+
input_sync(dev);
enable_irq(fusion_F0710A.client->irq);
@@ -243,6 +252,7 @@ static irqreturn_t fusion_F0710A_interrupt(int irq, void *dev_id)
disable_irq_nosync(fusion_F0710A.client->irq);
queue_work(fusion_F0710A.workq, &fusion_F0710A_work);
+
return IRQ_HANDLED;
}