diff options
Diffstat (limited to 'drivers/i2c/busses/i2c-designware-platdrv.c')
-rw-r--r-- | drivers/i2c/busses/i2c-designware-platdrv.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c index 2b463c313e4e..c270f5f9a8f9 100644 --- a/drivers/i2c/busses/i2c-designware-platdrv.c +++ b/drivers/i2c/busses/i2c-designware-platdrv.c | |||
@@ -195,6 +195,10 @@ static int dw_i2c_probe(struct platform_device *pdev) | |||
195 | clk_freq = pdata->i2c_scl_freq; | 195 | clk_freq = pdata->i2c_scl_freq; |
196 | } | 196 | } |
197 | 197 | ||
198 | r = i2c_dw_eval_lock_support(dev); | ||
199 | if (r) | ||
200 | return r; | ||
201 | |||
198 | dev->functionality = | 202 | dev->functionality = |
199 | I2C_FUNC_I2C | | 203 | I2C_FUNC_I2C | |
200 | I2C_FUNC_10BIT_ADDR | | 204 | I2C_FUNC_10BIT_ADDR | |
@@ -257,10 +261,14 @@ static int dw_i2c_probe(struct platform_device *pdev) | |||
257 | return r; | 261 | return r; |
258 | } | 262 | } |
259 | 263 | ||
260 | pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); | 264 | if (dev->pm_runtime_disabled) { |
261 | pm_runtime_use_autosuspend(&pdev->dev); | 265 | pm_runtime_forbid(&pdev->dev); |
262 | pm_runtime_set_active(&pdev->dev); | 266 | } else { |
263 | pm_runtime_enable(&pdev->dev); | 267 | pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); |
268 | pm_runtime_use_autosuspend(&pdev->dev); | ||
269 | pm_runtime_set_active(&pdev->dev); | ||
270 | pm_runtime_enable(&pdev->dev); | ||
271 | } | ||
264 | 272 | ||
265 | return 0; | 273 | return 0; |
266 | } | 274 | } |
@@ -310,7 +318,9 @@ static int dw_i2c_resume(struct device *dev) | |||
310 | struct dw_i2c_dev *i_dev = platform_get_drvdata(pdev); | 318 | struct dw_i2c_dev *i_dev = platform_get_drvdata(pdev); |
311 | 319 | ||
312 | clk_prepare_enable(i_dev->clk); | 320 | clk_prepare_enable(i_dev->clk); |
313 | i2c_dw_init(i_dev); | 321 | |
322 | if (!i_dev->pm_runtime_disabled) | ||
323 | i2c_dw_init(i_dev); | ||
314 | 324 | ||
315 | return 0; | 325 | return 0; |
316 | } | 326 | } |