Hi Grygorii, thanks for stepping in. I kept thinking about better I2C core support for such situations and the more input the better. > And you have to fix it (touch screen) - not your i2c driver. Otherwise, you can get > situation when set of I2C transfers (executed from some kthread/work/threaded_irq/..) > will be just interrupted in the middle - usual behavior after this is (I2C timeout) [and/or > not-functional I2C client device [and/or I2C bus stuck (worst case)]. This. I also tend to think that most issues need to be fixed in the client drivers ensuring proper states of client devices when suspending / resuming.. I wonder, though, if the core shouldn't assist by guaranteeing that an on-going transfer has finished before suspending? Or more technically, wait for a locked adapter to become unlocked again? I still need to set it up and test, yet seeing that the EEPROM driver at24.c has no suspend/resume callbacks, I'd assume a big write operation will only be partially done when interrupted by a suspend. > In case, somebody is trying to access I2C after .suspend_noirq() stage I2C bus driver > should produce big fat warning and, most probably, abort suspend. > Above, in general, can be part of I2C core functionality. Also this. However, there might be an exception of devices like PMICs which may need to be accessed to trigger the final suspend state. I at least know of some Renesas boards which needed the I2C connected PMIC to do a system reset (not sure about suspend, need to recheck that). That still today causes problems because interrupts are disabled then. To handle that, I imagined an additional adapter callback like 'master_xfer_irqless' to be used for such special I2C messages. These kind of special messages could be tagged with a new I2C_M_something flag. And maybe this could be used here, too? Introduce this flag for very late/early messages. If they have it, messages are even sent in suspend_noirq() phase with the master_xfer_irqless() callback, otherwise we will have the WARNing printed out. Thoughts? Any other cases missed so far? Kind regards, Wolfram
Attachment:
signature.asc
Description: PGP signature