.. | .. |
---|
576 | 576 | struct sprd_i2c *i2c_dev = platform_get_drvdata(pdev); |
---|
577 | 577 | int ret; |
---|
578 | 578 | |
---|
579 | | - ret = pm_runtime_resume_and_get(i2c_dev->dev); |
---|
| 579 | + ret = pm_runtime_get_sync(i2c_dev->dev); |
---|
580 | 580 | if (ret < 0) |
---|
581 | | - return ret; |
---|
| 581 | + dev_err(&pdev->dev, "Failed to resume device (%pe)\n", ERR_PTR(ret)); |
---|
582 | 582 | |
---|
583 | 583 | i2c_del_adapter(&i2c_dev->adap); |
---|
584 | | - clk_disable_unprepare(i2c_dev->clk); |
---|
| 584 | + |
---|
| 585 | + if (ret >= 0) |
---|
| 586 | + clk_disable_unprepare(i2c_dev->clk); |
---|
585 | 587 | |
---|
586 | 588 | pm_runtime_put_noidle(i2c_dev->dev); |
---|
587 | 589 | pm_runtime_disable(i2c_dev->dev); |
---|