+ switch (event) {Just double checking: Do you really want to process truncated commands?
+ case I2C_SLAVE_STOP:
+ command_size = panel->idx;
+ fallthrough;
+ case I2C_SLAVE_WRITE_REQUESTED:
+ panel->idx = 0;
+ break;
+ case I2C_SLAVE_WRITE_RECEIVED:
+ if (panel->idx < sizeof(panel->command))
+ panel->command[panel->idx++] = *val;
+ else
+ dev_dbg(&panel->input->dev, "command truncated\n");
Since you detect the state here, you could also choose to reject such
commands?