Commit 86b59bbf authored by Andy Gross's avatar Andy Gross Committed by Wolfram Sang

i2c: qup: Fix order of runtime pm initialization

The runtime pm calls need to be done before populating the children via the
i2c_add_adapter call.  If this is not done, a child can run into issues trying
to do i2c read/writes due to the pm_runtime_sync failing.
Signed-off-by: default avatarAndy Gross <agross@codeaurora.org>
Reviewed-by: default avatarFelipe Balbi <balbi@ti.com>
Acked-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
parent cf27020d
...@@ -674,16 +674,20 @@ static int qup_i2c_probe(struct platform_device *pdev) ...@@ -674,16 +674,20 @@ static int qup_i2c_probe(struct platform_device *pdev)
qup->adap.dev.of_node = pdev->dev.of_node; qup->adap.dev.of_node = pdev->dev.of_node;
strlcpy(qup->adap.name, "QUP I2C adapter", sizeof(qup->adap.name)); strlcpy(qup->adap.name, "QUP I2C adapter", sizeof(qup->adap.name));
ret = i2c_add_adapter(&qup->adap);
if (ret)
goto fail;
pm_runtime_set_autosuspend_delay(qup->dev, MSEC_PER_SEC); pm_runtime_set_autosuspend_delay(qup->dev, MSEC_PER_SEC);
pm_runtime_use_autosuspend(qup->dev); pm_runtime_use_autosuspend(qup->dev);
pm_runtime_set_active(qup->dev); pm_runtime_set_active(qup->dev);
pm_runtime_enable(qup->dev); pm_runtime_enable(qup->dev);
ret = i2c_add_adapter(&qup->adap);
if (ret)
goto fail_runtime;
return 0; return 0;
fail_runtime:
pm_runtime_disable(qup->dev);
pm_runtime_set_suspended(qup->dev);
fail: fail:
qup_i2c_disable_clocks(qup); qup_i2c_disable_clocks(qup);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment