On Tue, Jan 22, 2019 at 11:03:57AM +0100, Geert Uytterhoeven wrote:

[...]

> On second resume, the sound driver fails with:
> 
>     cs2000-cp 2-004f: pll lock failed
>     rcar_sound ec500000.sound: can't use clk 1
> 
> As the CS2000 clock driver needs to send I2C messages during suspend,
> the I2C controller driver should be suspended later, and resumed
> earlier.  Fix this by using the noirq sleep ops instead of the normal
> sleep ops, which are called after the late sleep ops, as used by the
> CS2000 clock driver.
> 
> Fixes: 18569fa89a4db9ed ("i2c: rcar: add suspend/resume support")
> Signed-off-by: Geert Uytterhoeven <[email protected]>
> ---
> The various I2C drivers seem to use a mix of normal, late, and noirq
> sleep ops.
> 
> For this particular use case, both the late and noirq sleep ops work,
> but that may depend on link order.
> 
> Given the comment about wake-up sources in commit 57186fe3db3ec462
> ("i2c: exynos5: Properly use the "noirq" variants of suspend/resume"),
> perhaps all of them should use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS() instead?

Likely.

My plan is to first deal with the issues how to do I2C when irqs are
already disabled. Once this is in place as an exception for justified
cases, I think we can deal with the other devices; so every special user
gets the proper treatment and we are still able to WARN about devices
doing I2C transfers when they shouldn't do it.

All that being said:

Applied to for-next, thanks!

Attachment: signature.asc
Description: PGP signature

Reply via email to