Hi Jingle,

On Wed, Nov 04, 2020 at 03:08:04PM +0800, jingle.wu wrote:
> The iap page type command of the parameter is page_size.

You need to supply your "Signed-off-by: " for me to apply this patch.

Thanks!

> ---
>  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
> 

-- 
Dmitry

Reply via email to