From patchwork Fri Oct 15 10:36:10 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Hennerich, Michael" X-Patchwork-Id: 256231 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o9FAh1CN026561 for ; Fri, 15 Oct 2010 10:43:01 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751057Ab0JOKm5 (ORCPT ); Fri, 15 Oct 2010 06:42:57 -0400 Received: from nwd2mail10.analog.com ([137.71.25.55]:7241 "EHLO nwd2mail10.analog.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751955Ab0JOKm4 (ORCPT ); Fri, 15 Oct 2010 06:42:56 -0400 X-IronPort-AV: E=Sophos;i="4.57,335,1283745600"; d="scan'208";a="23403629" Received: from nwd2hubcas2.ad.analog.com ([10.64.73.30]) by nwd2mail10.analog.com with ESMTP; 15 Oct 2010 06:42:56 -0400 Received: from zeus.spd.analog.com (10.64.82.11) by NWD2HUBCAS2.ad.analog.com (10.64.73.30) with Microsoft SMTP Server id 8.1.358.0; Fri, 15 Oct 2010 06:42:56 -0400 Received: from localhost.localdomain ([10.44.2.88]) by zeus.spd.analog.com (8.14.1/8.14.1) with ESMTP id o9FAgpXi009129; Fri, 15 Oct 2010 06:42:54 -0400 (EDT) From: To: greg@kroah.com CC: linux-iio@vger.kernel.org, drivers@analog.com, jic23@cam.ac.uk, linux-input@vger.kernel.org, device-drivers-devel@blackfin.uclinux.org, Michael Hennerich Subject: [PATCH 2/3] Input: touchscreen: ad7877 implement EV_KEY:BTN_TOUCH reporting Date: Fri, 15 Oct 2010 12:36:10 +0200 Message-ID: <1287138971-24753-2-git-send-email-michael.hennerich@analog.com> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1287138971-24753-1-git-send-email-michael.hennerich@analog.com> References: <1287138971-24753-1-git-send-email-michael.hennerich@analog.com> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 15 Oct 2010 10:43:01 +0000 (UTC) diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c index 53f4d79..96c0a0d 100644 --- a/drivers/input/touchscreen/ad7877.c +++ b/drivers/input/touchscreen/ad7877.c @@ -333,7 +333,7 @@ static int ad7877_read_adc(struct spi_device *spi, unsigned command) return status ? : sample; } -static void ad7877_rx(struct ad7877 *ts) +static int ad7877_rx(struct ad7877 *ts) { struct input_dev *input_dev = ts->input; unsigned Rt; @@ -360,11 +360,17 @@ static void ad7877_rx(struct ad7877 *ts) Rt /= z1; Rt = (Rt + 2047) >> 12; + if (!timer_pending(&ts->timer)) + input_report_key(input_dev, BTN_TOUCH, 1); + input_report_abs(input_dev, ABS_X, x); input_report_abs(input_dev, ABS_Y, y); input_report_abs(input_dev, ABS_PRESSURE, Rt); input_sync(input_dev); + return 0; } + + return -EINVAL; } static inline void ad7877_ts_event_release(struct ad7877 *ts) @@ -372,6 +378,7 @@ static inline void ad7877_ts_event_release(struct ad7877 *ts) struct input_dev *input_dev = ts->input; input_report_abs(input_dev, ABS_PRESSURE, 0); + input_report_key(input_dev, BTN_TOUCH, 0); input_sync(input_dev); } @@ -413,11 +420,9 @@ static void ad7877_callback(void *_ts) struct ad7877 *ts = _ts; spin_lock_irq(&ts->lock); - - ad7877_rx(ts); + if (!ad7877_rx(ts)) + mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); ts->pending = 0; - mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); - spin_unlock_irq(&ts->lock); } @@ -728,6 +733,8 @@ static int __devinit ad7877_probe(struct spi_device *spi) input_dev->phys = ts->phys; input_dev->dev.parent = &spi->dev; + __set_bit(EV_KEY, input_dev->evbit); + __set_bit(BTN_TOUCH, input_dev->keybit); __set_bit(EV_ABS, input_dev->evbit); __set_bit(ABS_X, input_dev->absbit); __set_bit(ABS_Y, input_dev->absbit);