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!
signature.asc
Description: PGP signature
