i2c: designware: Make sure the device is suspended before disabling runtime PM
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 17 Jun 2015 09:08:38 +0000 (12:08 +0300)
committerWolfram Sang <wsa@the-dreams.de>
Sun, 21 Jun 2015 19:30:35 +0000 (21:30 +0200)
commitedfc39012364a6ea8e4c7067c2655c92c2d02df4
treefd9faec730c3f6ebfd060e39a03f65079038dbaf
parent3aaa34b9923b994c13267e05ce8246faa1e8c8eb
i2c: designware: Make sure the device is suspended before disabling runtime PM

The driver calls pm_runtime_put() right before pm_runtime_disable() in its
->remove() hook to make sure clock is gated etc. However, it turns out that
pm_runtime_put() only calls ->idle() hook without actually suspending
anything. The following pm_runtime_disable() will prevent the driver from
suspending thus leaving it "active".

It is better to suspend the device synchronously to make sure it is
actually suspended before disabling runtime PM from it.

While there, undo call to pm_runtime_use_autosuspend().

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-designware-platdrv.c