int pm_runtime_get_sync(struct device *dev); increment the device’s usage counter, run pm_runtime_resume(dev) and return its result; note that it does not drop the device’s usage counter on errors, so consider using pm_runtime_resume_and_get() instead of it, especially if its ret...
pm_runtime_get_sync/pm_runtime_put_sync 增加/减少计数值,并判断是否进入suspend/resume。 1. 在struct dev_pm_ops提供了3个回调函数:runtime_suspend,runtime_resume,runtime_idle,一般runtime_idle这个空闲函数不需要提供 2. 上面4个函数不会直接导致runtime_suspend,runtime_resume,runtime_idle被调用,只...
Elixir Cross Referencer - identifier references search for Linux (version v6.11.4). Searched identifier: pm_runtime_get_sync
> > pm_runtime_get_sync(dev); > > + rcar_i2c_init(priv); Hence now it's done again for every transfer? What about moving it just before the call to i2c_add_numbered_adapter(), and wrapping it inside pm_runtime_get_sync(dev)/pm_runtime_put()? Wolfram, what do you think? >...
>> > pm_runtime_get_sync(dev); >> > >> > + rcar_i2c_init(priv); >> >> Hence now it's done again for every transfer? >> >> What about moving it just before the call to i2c_add_numbered_adapter(), >> and wrapping it inside pm_runtime_get_sync(dev)/pm_runtime_put()?
The c_can driver contians a callpath (c_can_poll -> c_can_state_change -> c_can_get_berr_counter) which may call pm_runtime_get_sync() from the IRQ handler, which is not allowed and results in "BUG: scheduling while atomic". This problem is fixed by introducing __c_can_get_...
> > What about moving it just before the call to i2c_add_numbered_adapter(), > and wrapping it inside pm_runtime_get_sync(dev)/pm_runtime_put()? > > Wolfram, what do you think? I'd prefer the latter. Sending a tested patch in a second... ...
From: Kuninori Morimoto <kuninori.morimoto...@renesas.com> rcar_i2c_init() initializes I2C device, but it should be called *after* pm_runtime_get_sync(). Otherwise it outputs very hi speed clock. This patch solved this issue, This patch also removes pointless rcar_i2c_init() from ...