Hello Krzysztof, Thank you very much for the review, I am planning to address the changes in my next patch series though I had a question. On 10/7/23 20:26, Krzysztof Kozlowski wrote: > On 07/10/2023 16:40, Anshul Dalal wrote: >> + >> +static int seesaw_probe(struct i2c_client *client) >> +{ >> + int err; >> + struct seesaw_gamepad *private; >> + unsigned char register_reset[] = { SEESAW_STATUS_BASE, >> + SEESAW_STATUS_SWRST, 0xFF }; >> + unsigned char get_hw_id[] = { SEESAW_STATUS_BASE, SEESAW_STATUS_HW_ID }; >> + >> + err = i2c_master_send(client, register_reset, sizeof(register_reset)); >> + if (err < 0) >> + return err; >> + if (err != sizeof(register_reset)) >> + return -EIO; >> + mdelay(10); > > Why 10? This should be explained somehow in the code. The reason for the delay is to ensure the register reset process is finished before going further. The reference Arduino driver from the manufacturer also had a delay for the same amount though my hardware unit worked fine till 5ms delay. Is there some kernel abstraction I could use to indicate a short delay or will the previous explanation in a comment above the line do? Best wishes, Anshul