Messages in this thread | | | Date | Tue, 22 Aug 2017 08:40:54 +0100 | From | Lee Jones <> | Subject | Re: [PATCH] mfd: intel-lpss: Put I2C and SPI controllers into reset state on suspend |
| |
On Sun, 23 Jul 2017, Furquan Shaikh wrote:
> Commit 274e43edcda6f ("mfd: intel-lpss: Do not put device in reset > state on suspend") changed the behavior on suspend by not putting LPSS > controllers into reset. This was done because S3/S0ix fail if UART > device is put into reset and no_console_suspend flag is enabled. > > Because of the above change, I2C controller gets into a bad state if > it observes that the I2C lines are pulled low when power to I2C device > is cut off during suspend (generally, I2C lines are pulled to power > rail of the I2C device in order to ensure that there is no leakage > because of the pulls when device is turned off). This results in the > controller timing out for all future I2C operations after resume. It > is primarily because of the following sequence of operations: > > During suspend: > 1. I2C controller is disabled, but it is not put into reset. > 2. Power to I2C device is cut off. > 3. #2 results in the I2C lines being pulled low. > > ==> At this point the I2C controller gets into a bad state > > On resume: > 1. Power to I2C device is enabled. > 2. #2 results in the I2C lines being pulled high. > 3. I2C controller is enabled. > > However, even after enabling the I2C controller, all future I2C xfers > fail since the controller is in a bad state and does not attempt to > make any transactions and hence times out. > > In order to ensure that the controller does not get into a bad state, > this change puts it into reset if the controller type is not > UART. With this change, the order of operations is: > > During suspend: > 1. I2C controller is disabled and put into reset. > 2. Power to I2C device is cut off. > 3. #2 results in the I2C lines being pulled low. > > On resume: > 1. Power to I2C device is enabled. > 2. #2 results in the I2C lines being pulled high. > 3. I2C controller is enabled and taken out of reset. > > Signed-off-by: Furquan Shaikh <furquan@google.com> > --- > drivers/mfd/intel-lpss.c | 8 ++++++++ > 1 file changed, 8 insertions(+)
Applied, thanks.
-- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
| |