On 04/16/2015 02:05 PM, Charles Keepax wrote:
> Commit 523c5b89640e ("i2c: Remove support for legacy PM") removed the PM
> ops from the bus type, which causes the pm operations on the s3c2410
> adapter device to fail (-ENOSUPP in rpm_callback). The adapter device
> doesn't get bound to a driver and as such can't have its own pm_runtime
> callbacks. Previously this was fine as the bus callbacks would have been
> used, but now this can cause devices which use PM runtime and are
> attached over I2C to fail to resume.
>
> This commit fixes this issue by marking all adapter devices with
> pm_runtime_no_callbacks, since they can't have any.
>
> Signed-off-by: Charles Keepax <ckee...@opensource.wolfsonmicro.com>
> ---
>
> Changes since v1:
>  - Simple mark all adapter devices with pm_runtime_no_callbacks in the i2c
>    core
>
> Thanks,
> Charles
>
>  drivers/i2c/i2c-core.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 1672e6b..eac3331 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -1410,6 +1410,8 @@ static int i2c_register_adapter(struct i2c_adapter 
> *adap)
>  
>       dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
>  
> +     pm_runtime_no_callbacks(&adap->dev);
> +
>  #ifdef CONFIG_I2C_COMPAT
>       res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
>                                      adap->dev.parent);

Thereis at least one more casewhen an I2C device fails to resume due
to bus callbacks being dropped(like fimc-is-i2c driver for exynos4-is,
the same scenario),  so I'm glad to see  it's being handled in on place
-it saves the trouble.

BR
Beata

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to