diff options
author | Justin Waters <justin.waters@timesys.com> | 2012-03-21 13:23:28 -0400 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2012-03-21 13:32:52 -0400 |
commit | cbe6640576657b003ae8682fe254ee68fb832637 (patch) | |
tree | e9b0b3a9baeaa5a01221babf21a8df9fed180602 | |
parent | d0183eb2433e3332c2720637238b18b1fdff7946 (diff) |
[MXS TS] Add EV_KEY capability2.6.31-mx28-201203211723
Touchscreen devices must support the EV_KEY capability for newer
versions of tslib to work. This adds support for it.
-rw-r--r-- | drivers/input/touchscreen/mxs-ts.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/input/touchscreen/mxs-ts.c b/drivers/input/touchscreen/mxs-ts.c index a2ea102290a8..cd26e81d375e 100644 --- a/drivers/input/touchscreen/mxs-ts.c +++ b/drivers/input/touchscreen/mxs-ts.c @@ -59,6 +59,7 @@ struct mxs_ts_info { u16 x; u16 y; int sample_count; + int last_press; }; static inline void enter_state_touch_detect(struct mxs_ts_info *info) @@ -208,11 +209,18 @@ static void process_lradc(struct mxs_ts_info *info, u16 x, u16 y, info->sample_count); if (pressure) { input_report_abs(info->idev, ABS_PRESSURE, pressure); + /* report the BTN_TOUCH */ + if (pressure != info->last_press) + input_event(info->idev, EV_KEY, + BTN_TOUCH, pressure); + enter_state_x_plane(info); hw_lradc_set_delay_trigger_kick( LRADC_DELAY_TRIGGER_TOUCHSCREEN, 1); } else enter_state_touch_detect(info); + + info->last_press = pressure; break; default: @@ -276,7 +284,8 @@ static int __devinit mxs_ts_probe(struct platform_device *pdev) } idev->name = "MXS touchscreen"; - idev->evbit[0] = BIT(EV_ABS); + idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); + idev->keybit[BIT_WORD(BTN_TOUCH)] |= BIT_MASK(BTN_TOUCH); input_set_abs_params(idev, ABS_X, 0, 0xFFF, 0, 0); input_set_abs_params(idev, ABS_Y, 0, 0xFFF, 0, 0); input_set_abs_params(idev, ABS_PRESSURE, 0, 1, 0, 0); @@ -298,6 +307,7 @@ static int __devinit mxs_ts_probe(struct platform_device *pdev) info->x_minus_mask = plat_data->x_minus_mask; info->y_plus_mask = plat_data->y_plus_mask; info->y_minus_mask = plat_data->y_minus_mask; + info->last_press = -1; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { |