From 2a8e77102e02dd236ff276a2151073ed551d04f2 Mon Sep 17 00:00:00 2001 From: Chris Bagwell Date: Mon, 19 Jul 2010 09:06:15 -0700 Subject: [PATCH] Input: synaptics - only report width on hardware that supports it Synaptics devices report fixed value of 5 for finger/palm widths on devices that do not support capability and driver further hardcodes to 5. Stop reporting this fixed value when its not supported since its not useful. This will aid applications so they can better auto-enable support for multi-touch emulation and palm detection logic using finger width only for devices that support width detection. I can find no applications that currently require existence on ABS_TOOL_WIDTH. Since only synaptics and bcm input devices currently support this tool, it seems they must handle it gracefully. Signed-off-by: Chris Bagwell Signed-off-by: Dmitry Torokhov --- drivers/input/mouse/synaptics.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 40cea334ad13..1b49d7f8ae11 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -496,7 +496,9 @@ static void synaptics_process_packet(struct psmouse *psmouse) } input_report_abs(dev, ABS_PRESSURE, hw.z); - input_report_abs(dev, ABS_TOOL_WIDTH, finger_width); + if (SYN_CAP_PALMDETECT(priv->capabilities)) + input_report_abs(dev, ABS_TOOL_WIDTH, finger_width); + input_report_key(dev, BTN_TOOL_FINGER, num_fingers == 1); input_report_key(dev, BTN_LEFT, hw.left); input_report_key(dev, BTN_RIGHT, hw.right); @@ -596,7 +598,9 @@ static void set_input_params(struct input_dev *dev, struct synaptics_data *priv) input_set_abs_params(dev, ABS_Y, YMIN_NOMINAL, priv->y_max ?: YMAX_NOMINAL, 0, 0); input_set_abs_params(dev, ABS_PRESSURE, 0, 255, 0, 0); - __set_bit(ABS_TOOL_WIDTH, dev->absbit); + + if (SYN_CAP_PALMDETECT(priv->capabilities)) + __set_bit(ABS_TOOL_WIDTH, dev->absbit); __set_bit(EV_KEY, dev->evbit); __set_bit(BTN_TOUCH, dev->keybit);