From patchwork Mon Jul 4 09:05:31 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iiro Valkonen X-Patchwork-Id: 941902 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p6496AOf014746 for ; Mon, 4 Jul 2011 09:06:11 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753901Ab1GDJGG (ORCPT ); Mon, 4 Jul 2011 05:06:06 -0400 Received: from newsmtp5.atmel.com ([204.2.163.5]:20906 "EHLO sjogate2.atmel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753861Ab1GDJGF (ORCPT ); Mon, 4 Jul 2011 05:06:05 -0400 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id p6492hAT011130; Mon, 4 Jul 2011 02:02:43 -0700 (PDT) Received: from hammb01.corp.atmel.com ([10.142.130.20]) by csomb01.corp.atmel.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Jul 2011 03:05:48 -0600 Received: from [10.191.100.69] ([10.191.100.69]) by hammb01.corp.atmel.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Jul 2011 10:05:46 +0100 Message-ID: <4E11825B.3000409@atmel.com> Date: Mon, 04 Jul 2011 12:05:31 +0300 From: Iiro Valkonen User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10 MIME-Version: 1.0 To: Dmitry Torokhov , Joonyoung Shim CC: linux-input@vger.kernel.org Subject: [PATCH 1/3] Input: atmel_mxt_ts - Make wait-after-reset period compatible with all chips X-OriginalArrivalTime: 04 Jul 2011 09:05:46.0552 (UTC) FILETIME=[8FAE0B80:01CC3A29] 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.6 (demeter2.kernel.org [140.211.167.43]); Mon, 04 Jul 2011 09:06:11 +0000 (UTC) The delay before the chip can be accessed after reset varies between different chips in maXTouch family. Waiting for 200ms and then monitoring the CHG (chip is ready when the line is low) is guaranteed to work with all chips. Signed-off-by: Iiro Valkonen --- drivers/input/touchscreen/atmel_mxt_ts.c | 4 +++- include/linux/i2c/atmel_mxt_ts.h | 1 + 2 files changed, 4 insertions(+), 1 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 1e61387..8870e7b 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -170,7 +170,7 @@ #define MXT_BOOT_VALUE 0xa5 #define MXT_BACKUP_VALUE 0x55 #define MXT_BACKUP_TIME 25 /* msec */ -#define MXT_RESET_TIME 65 /* msec */ +#define MXT_RESET_TIME 200 /* msec */ #define MXT_FWRESET_TIME 175 /* msec */ @@ -828,6 +828,8 @@ static int mxt_initialize(struct mxt_data *data) mxt_write_object(data, MXT_GEN_COMMAND, MXT_COMMAND_RESET, 1); msleep(MXT_RESET_TIME); + while (data->pdata->read_chg()) + msleep(2); /* Update matrix size at info struct */ error = mxt_read_reg(client, MXT_MATRIX_X_SIZE, &val); diff --git a/include/linux/i2c/atmel_mxt_ts.h b/include/linux/i2c/atmel_mxt_ts.h index f027f7a..ef59c22 100644 --- a/include/linux/i2c/atmel_mxt_ts.h +++ b/include/linux/i2c/atmel_mxt_ts.h @@ -39,6 +39,7 @@ struct mxt_platform_data { unsigned int voltage; unsigned char orient; unsigned long irqflags; + u8(*read_chg) (void); }; #endif /* __LINUX_ATMEL_MXT_TS_H */