Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1101155pxb; Tue, 3 Nov 2020 23:22:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJwCwlfEVADlA0okxmNID/mLoQbB5ytdI313ot+RUoh1MBVS+yrXYzZ0wApXJS5oWAlfxXe8 X-Received: by 2002:a17:906:a018:: with SMTP id p24mr21207001ejy.462.1604474538667; Tue, 03 Nov 2020 23:22:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604474538; cv=none; d=google.com; s=arc-20160816; b=g7qgw6oOeP16400G1VXpbRu+EIlHAyEh5/kgkN6xraZmCnZF/0kOarK6B1EJixlxPc Ctr4R5ScgWMIeAxiPknTDg8MmMDqS6CpyrXPzjhSZnND1uaWQ6M8JlWw1gL4fAqDlmJM R1oK7t50aMnXNIlyMU3day03FHXes71xXXBdJSOX7/PSRZNvB8sKrwIFTal4NC8r1tLT iJXPOlf1H3jEr1tmT9erDRAY/9LLSWjnS3WvBUqGj16zDuM4ItbcdX1CJu2L1dE6uqP9 VQuCbkDlyDB2wlhgJEKr3od2x7HNvTFb6yQKK9WoXBoftrr+dqM8vwfJgYdPTPqMMKHD vwKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=n04hh+WR6uH8FaxvEj+P9kd6Unl+zLtq7uYP7AVA9dM=; b=neLysDR69sNTR9Gao2docoVLg/KWyGLs4AZFh/GfsOSIqal7UGS1qsCKk6dwLFKxPj +7ffKyiH21odVoT+f6pCe07Q64bQLYFFtV7iFCuM6+2iR/kQ8wHs4T07hOv9N5rr9IEC 3cMBrM7MAvCtpEXa9i8uVwk/pGgUR70FDpXq7qitUWKjzO4uFQCdJ0rUbPXai6XrnQ5H 2UtepQ5PRRahK7ez5KUehDdSOeFdudQTolP0wAxaTu2V4pSyTMqiLGVC9K+5Pfy6pMWO hJmmjV6rDtwLEelasaqr416VXQVOCM7/xniORNuETV2oLMBlEDtGI9IyXD9RLK+xYIbn 5W8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g1si661039edh.491.2020.11.03.23.21.55; Tue, 03 Nov 2020 23:22:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728711AbgKDHSZ (ORCPT + 99 others); Wed, 4 Nov 2020 02:18:25 -0500 Received: from emcscan.emc.com.tw ([192.72.220.5]:53648 "EHLO emcscan.emc.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728504AbgKDHSZ (ORCPT ); Wed, 4 Nov 2020 02:18:25 -0500 X-Greylist: delayed 608 seconds by postgrey-1.27 at vger.kernel.org; Wed, 04 Nov 2020 02:18:23 EST X-IronPort-AV: E=Sophos;i="5.56,253,1539619200"; d="scan'208";a="38001738" Received: from unknown (HELO webmail.emc.com.tw) ([192.168.10.1]) by emcscan.emc.com.tw with ESMTP; 04 Nov 2020 15:08:12 +0800 Received: from 192.168.10.23 by webmail.emc.com.tw with MailAudit ESMTP Server V5.0(2863:0:AUTH_RELAY) (envelope-from ); Wed, 04 Nov 2020 15:08:09 +0800 (CST) Received: from 101.12.7.47 by webmail.emc.com.tw with Mail2000 ESMTPA Server V7.00(2477:0:AUTH_LOGIN) (envelope-from ); Wed, 04 Nov 2020 15:08:06 +0800 (CST) From: "jingle.wu" To: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, dmitry.torokhov@gmail.com Cc: phoenix@emc.com.tw, dave.wang@emc.com.tw, josh.chen@emc.com.tw, "jingle.wu" Subject: [PATCH] Input: elan_i2c - Modify the correct input of the iap page type command. Date: Wed, 4 Nov 2020 15:08:04 +0800 Message-Id: <20201104070804.32044-1-jingle.wu@emc.com.tw> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The iap page type command of the parameter is page_size. --- drivers/input/mouse/elan_i2c.h | 2 +- drivers/input/mouse/elan_i2c_core.c | 3 ++- drivers/input/mouse/elan_i2c_i2c.c | 10 +++++----- drivers/input/mouse/elan_i2c_smbus.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/input/mouse/elan_i2c.h b/drivers/input/mouse/elan_i2c.h index c75b00c45d75..36e3cd908671 100644 --- a/drivers/input/mouse/elan_i2c.h +++ b/drivers/input/mouse/elan_i2c.h @@ -78,7 +78,7 @@ struct elan_transport_ops { int (*iap_reset)(struct i2c_client *client); int (*prepare_fw_update)(struct i2c_client *client, u16 ic_type, - u8 iap_version); + u8 iap_version, u16 fw_page_size); int (*write_fw_block)(struct i2c_client *client, u16 fw_page_size, const u8 *page, u16 checksum, int idx); int (*finish_fw_update)(struct i2c_client *client, diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c index c599e21a8478..61ed3f5ca219 100644 --- a/drivers/input/mouse/elan_i2c_core.c +++ b/drivers/input/mouse/elan_i2c_core.c @@ -497,7 +497,8 @@ static int __elan_update_firmware(struct elan_tp_data *data, u16 sw_checksum = 0, fw_checksum = 0; error = data->ops->prepare_fw_update(client, data->ic_type, - data->iap_version); + data->iap_version, + data->fw_page_size); if (error) return error; diff --git a/drivers/input/mouse/elan_i2c_i2c.c b/drivers/input/mouse/elan_i2c_i2c.c index 5a496d4ffa49..13dc097eb6c6 100644 --- a/drivers/input/mouse/elan_i2c_i2c.c +++ b/drivers/input/mouse/elan_i2c_i2c.c @@ -517,7 +517,7 @@ static int elan_i2c_set_flash_key(struct i2c_client *client) return 0; } -static int elan_read_write_iap_type(struct i2c_client *client) +static int elan_read_write_iap_type(struct i2c_client *client, u16 fw_page_size) { int error; u16 constant; @@ -526,7 +526,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) do { error = elan_i2c_write_cmd(client, ETP_I2C_IAP_TYPE_CMD, - ETP_I2C_IAP_TYPE_REG); + fw_page_size / 2); if (error) { dev_err(&client->dev, "cannot write iap type: %d\n", error); @@ -543,7 +543,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) constant = le16_to_cpup((__le16 *)val); dev_dbg(&client->dev, "iap type reg: 0x%04x\n", constant); - if (constant == ETP_I2C_IAP_TYPE_REG) + if (constant == fw_page_size / 2) return 0; } while (--retry > 0); @@ -553,7 +553,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) } static int elan_i2c_prepare_fw_update(struct i2c_client *client, u16 ic_type, - u8 iap_version) + u8 iap_version, u16 fw_page_size) { struct device *dev = &client->dev; int error; @@ -594,7 +594,7 @@ static int elan_i2c_prepare_fw_update(struct i2c_client *client, u16 ic_type, } if (ic_type >= 0x0D && iap_version >= 1) { - error = elan_read_write_iap_type(client); + error = elan_read_write_iap_type(client, fw_page_size); if (error) return error; } diff --git a/drivers/input/mouse/elan_i2c_smbus.c b/drivers/input/mouse/elan_i2c_smbus.c index 8ff823751f3b..1820f1cfc1dc 100644 --- a/drivers/input/mouse/elan_i2c_smbus.c +++ b/drivers/input/mouse/elan_i2c_smbus.c @@ -340,7 +340,7 @@ static int elan_smbus_set_flash_key(struct i2c_client *client) } static int elan_smbus_prepare_fw_update(struct i2c_client *client, u16 ic_type, - u8 iap_version) + u8 iap_version, u16 fw_page_size) { struct device *dev = &client->dev; int len; -- 2.17.1