On 5/28/20 6:31 PM, Lukas Wunner wrote: > On Thu, May 28, 2020 at 11:41:21AM +0300, Andy Shevchenko wrote: >> Thank you very much for testing, I will figure out what can be done >> more there, but it's minor now. >> For input and touchscreen I guess you may ask Dmitry (input subsystem >> maintainer) and Benjamin (HID, but he might have an idea as well). > > This might not be an input issue, perhaps the spi-pxa2xx.c driver > cannot cope with s2idle on this particular platform. > > E.g., pxa2xx_spi_suspend() zeroes the SSCR0 register. It seems this > disables or resets the controller. But pxa2xx_spi_resume() isn't > touching the register at all. Maybe the register contains crap when > coming out of s2idle, so needs to be set to a sane value on resume? Thanks everyone. I later found that touch input (surface3_spi) crashing is reproducible by just putting display off/on on recent kernels. So, this is rather not related to s2idle. Also it seems that runtime_pm is not related, too. > Tsuchiya Yuto says that reloading the SPI controller driver makes > the touch driver work again, so I'd check what's done on ->remove() > and ->probe() both in the touch driver as well as in the SPI controller > driver that fixes the problem. The SSCR0 register is zeroed on > ->remove() and re-initialized on ->probe(), so that register may > indeed play a role. I looked into what is done on probe()/remove() in the SPI controller and it seems that release/setup DMA helps to get surface3_spi driver working again with DMA mode. I added details to that bugzilla [1], since this crashing itself is not relevant to this series. [1] https://bugzilla.kernel.org/show_bug.cgi?id=206403#c4