Hi, On 8/15/22 12:26, margeyang wrote: > From: Marge Yang <marge.yang@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> > > The interrupt GPIO will be pulled down once > after RMI driver reads this command(Report ID:0x0A). > It will cause "Dark resume test fail" for chromebook device. > Hence, TP driver will ignore rmi_hid_read_block function once > after system resumes. > > Signed-off-by: Marge Yang<marge.yang@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> Thanks, patch looks good to me: Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> Regards, Hans > --- > drivers/hid/hid-rmi.c | 14 +++++++++++++- > include/linux/rmi.h | 2 ++ > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c > index 311eee599ce9..45eacb0b8dae 100644 > --- a/drivers/hid/hid-rmi.c > +++ b/drivers/hid/hid-rmi.c > @@ -190,7 +190,7 @@ static int rmi_hid_read_block(struct rmi_transport_dev *xport, u16 addr, > { > struct rmi_data *data = container_of(xport, struct rmi_data, xport); > struct hid_device *hdev = data->hdev; > - int ret; > + int ret = 0; > int bytes_read; > int bytes_needed; > int retries; > @@ -204,6 +204,13 @@ static int rmi_hid_read_block(struct rmi_transport_dev *xport, u16 addr, > goto exit; > } > > + if (xport->ignoreonce == 1) { > + dev_err(&hdev->dev, > + "ignoreonce (%d)\n", > + xport->ignoreonce); > + xport->ignoreonce = 0; > + goto exit; > + } > for (retries = 5; retries > 0; retries--) { > data->writeReport[0] = RMI_READ_ADDR_REPORT_ID; > data->writeReport[1] = 0; /* old 1 byte read count */ > @@ -469,7 +476,12 @@ static int rmi_post_resume(struct hid_device *hdev) > if (ret) > return ret; > > + // Avoid to read rmi_hid_read_block once after system resumes. > + // The interrupt will be pulled down > + // after RMI Read command(Report ID:0x0A). > + data->xport.ignoreonce = 1; > ret = rmi_reset_attn_mode(hdev); > + data->xport.ignoreonce = 0; > if (ret) > goto out; > > diff --git a/include/linux/rmi.h b/include/linux/rmi.h > index ab7eea01ab42..24f63ad00970 100644 > --- a/include/linux/rmi.h > +++ b/include/linux/rmi.h > @@ -270,6 +270,8 @@ struct rmi_transport_dev { > struct rmi_device_platform_data pdata; > > struct input_dev *input; > + > + int ignoreonce; > }; > > /**