Messages in this thread Patch in this message | | | From | duson <> | Subject | [PATCH] Input: elan_i2c - Recovery exception ic type | Date | Mon, 31 Aug 2015 09:49:36 +0800 |
| |
When driver get exception ic type (0xFF), maybe occurred from wrong I2C protocol communication, system crash or other unknown situation, we need to reset ic type from iap_version. --- drivers/input/mouse/elan_i2c_core.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c index 5b5f403..39d9929 100644 --- a/drivers/input/mouse/elan_i2c_core.c +++ b/drivers/input/mouse/elan_i2c_core.c @@ -4,7 +4,7 @@ * Copyright (c) 2013 ELAN Microelectronics Corp. * * Author: 林政維 (Duson Lin) <dusonlin@emc.com.tw> - * Version: 1.5.9 + * Version: 1.6.0 * * Based on cyapa driver: * copyright (c) 2011-2012 Cypress Semiconductor, Inc. @@ -40,7 +40,7 @@ #include "elan_i2c.h" #define DRIVER_NAME "elan_i2c" -#define ELAN_DRIVER_VERSION "1.5.9" +#define ELAN_DRIVER_VERSION "1.6.0" #define ETP_MAX_PRESSURE 255 #define ETP_FWIDTH_REDUCE 90 #define ETP_FINGER_WIDTH 15 @@ -247,15 +247,19 @@ static int elan_query_device_info(struct elan_tp_data *data) if (error) return error; - error = data->ops->get_sm_version(data->client, &data->ic_type, - &data->sm_version); + error = data->ops->get_version(data->client, true, &data->iap_version); if (error) return error; - error = data->ops->get_version(data->client, true, &data->iap_version); + error = data->ops->get_sm_version(data->client, &data->ic_type, + &data->sm_version); if (error) return error; + /* exception type, need reset from iap_version */ + if (data->ic_type == 0xFF) + data->ic_type = data->iap_version; + error = data->ops->get_pressure_adjustment(data->client, &data->pressure_adjustment); if (error)
| |