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:29:54 EST


Dear Dmitry,

Are there devices that do not trigger errors?
=> Yes, there exist devices that would act normally. However, our team
cannot organize the rule to recognize which devices could trigger this
command without error.
What I sure about is that some devices would get TP no function while
triggering this command.
Besides, ABS mode had been set in P/S2 protocol, so there is no need to set
ABS mode again in SMBUS driver.

How do we put SMbus devices into low power mode?
=> As far as I am concerned, core.c only set the mode into ABS mode or
ENABLE_CALIBRATE mode after updating firmware.
I don't know what or when to set SMbus devices into low power mode.

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