RE: [PATCH 1/3] Input: elan_i2c - Do no operation for elan_smbus_set_mode function

From: Dave.Wang
Date: Tue Jul 21 2020 - 22:57:10 EST


Dear Dmitry,

Should this be moved into core? Or we only plan on using this on SMbus?
=> using on smbus.

What will happen after firmware update? How can userspace verify that the
firmware update completed successfully if we always return static data?
=> FW modified the architecture that reading register cmd in P/S2 and then
updating flow in SMbus.
As a result, it would not get success result while updating firmware in
SMbus driver.
Elan will use the tool to update firmware.

Can the device still be accessed via PS/2 while also using SMbus?
=> Yes, the device could still be accessed via PS/2 while also using SMbus.
However, we cannot use P/S2 driver and SMbus driver to read register
simultaneously because of the limitation of driver (elantench (ps2) driver
would be unmounted before loading into SMbus driver). So we use tool to
update firmware in SMbus interface.

Best regards,
Dave

-----Original Message-----
From: Dmitry Torokhov [mailto:dmitry.torokhov@xxxxxxxxx]
Sent: Wednesday, July 22, 2020 12:13 AM
To: Dave Wang <dave.wang@xxxxxxxxxx>
Cc: Linux-input@xxxxxxxxxxxxxxx; Linux-kernel@xxxxxxxxxxxxxxx;
phoenix@xxxxxxxxxx; josh.chen@xxxxxxxxxx; jingle.wu@xxxxxxxxxx;
kai.heng.feng@xxxxxxxxxxxxx
Subject: Re: [PATCH 1/3] Input: elan_i2c - Do no operation for
elan_smbus_set_mode function

Hi Dave,

On Mon, Dec 09, 2019 at 06:11:07AM -0500, Dave Wang wrote:
> Some touchpads might get error while triggerring the set_mode command
> in SMBus interface. Do no operation for elan_smbus_set_mode function.

Are there devices that do not trigger errors? How do we put SMbus devices
into low power mode?

>
> Signed-off-by: Dave Wang <dave.wang@xxxxxxxxxx>
> ---
> drivers/input/mouse/elan_i2c_smbus.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/input/mouse/elan_i2c_smbus.c
> b/drivers/input/mouse/elan_i2c_smbus.c
> index 8c3185d54c73..bcb9ec4a7a6b 100644
> --- a/drivers/input/mouse/elan_i2c_smbus.c
> +++ b/drivers/input/mouse/elan_i2c_smbus.c
> @@ -84,10 +84,7 @@ static int elan_smbus_initialize(struct i2c_client
> *client)
>
> static int elan_smbus_set_mode(struct i2c_client *client, u8 mode) {
> - u8 cmd[4] = { 0x00, 0x07, 0x00, mode };
> -
> - return i2c_smbus_write_block_data(client, ETP_SMBUS_IAP_CMD,
> - sizeof(cmd), cmd);
> + return 0; /* A no-op */
> }
>
> static int elan_smbus_sleep_control(struct i2c_client *client, bool
> sleep)
> --
> 2.17.1
>

Thanks.

--
Dmitry