From: Marge Yang <marge.yang@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> ignore to rmi_hid_read_block function once after system resumes. Because Signed-off-by: Marge Yang<marge.yang@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> --- drivers/hid/hid-rmi.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c index 311eee599ce9..1b038f3db0f1 100644 --- a/drivers/hid/hid-rmi.c +++ b/drivers/hid/hid-rmi.c @@ -101,7 +101,7 @@ struct rmi_data { }; #define RMI_PAGE(addr) (((addr) >> 8) & 0xff) - +int ignoreonce; static int rmi_write_report(struct hid_device *hdev, u8 *report, int len); /** @@ -203,7 +203,13 @@ static int rmi_hid_read_block(struct rmi_transport_dev *xport, u16 addr, if (ret < 0) goto exit; } - + if (ignoreonce == 1) { + dev_err(&hdev->dev, + "ignoreonce (%d)\n", + ignoreonce); + 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 */ @@ -468,7 +474,10 @@ static int rmi_post_resume(struct hid_device *hdev) ret = hid_hw_open(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). + ignoreonce = 1; ret = rmi_reset_attn_mode(hdev); if (ret) goto out; -- 2.22.0.windows.1