forked from luck/tmp_suning_uos_patched
i2c: imx: avoid taking clk_prepare mutex in PM callbacks
This is unsafe, as the runtime PM callbacks are called from the PM workqueue, so this may deadlock when handling an i2c attached clock, which may already hold the clk_prepare mutex from another context. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
90ad2cbe88
commit
d9a22d713a
|
@ -1226,7 +1226,7 @@ static int i2c_imx_runtime_suspend(struct device *dev)
|
|||
{
|
||||
struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev);
|
||||
|
||||
clk_disable_unprepare(i2c_imx->clk);
|
||||
clk_disable(i2c_imx->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1236,7 +1236,7 @@ static int i2c_imx_runtime_resume(struct device *dev)
|
|||
struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(i2c_imx->clk);
|
||||
ret = clk_enable(i2c_imx->clk);
|
||||
if (ret)
|
||||
dev_err(dev, "can't enable I2C clock, ret=%d\n", ret);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user