[PATCH] i2c: rzv2m: fail probe on reset and runtime-PM errors

Pengpeng Hou posted 1 patch 3 weeks, 6 days ago
drivers/i2c/busses/i2c-rzv2m.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
[PATCH] i2c: rzv2m: fail probe on reset and runtime-PM errors
Posted by Pengpeng Hou 3 weeks, 6 days ago
Probe ignores reset deassertion and runtime-PM activation failures before
initializing the controller and registering an I2C adapter.

Propagate both required activation errors and disable runtime PM if its
initial resume fails.

Fixes: e0ca796a151b ("i2c: Add Renesas RZ/V2M controller")
Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
---
 drivers/i2c/busses/i2c-rzv2m.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-rzv2m.c b/drivers/i2c/busses/i2c-rzv2m.c
index 206a99e722a37..81e0101b61946 100644
--- a/drivers/i2c/busses/i2c-rzv2m.c
+++ b/drivers/i2c/busses/i2c-rzv2m.c
@@ -433,7 +433,9 @@ static int rzv2m_i2c_probe(struct platform_device *pdev)
 	 * The reset also affects other HW that is not under the control
 	 * of Linux. Therefore, all we can do is deassert the reset.
 	 */
-	reset_control_deassert(rstc);
+	ret = reset_control_deassert(rstc);
+	if (ret)
+		return ret;
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0)
@@ -461,7 +463,11 @@ static int rzv2m_i2c_probe(struct platform_device *pdev)
 
 	pm_runtime_enable(dev);
 
-	pm_runtime_get_sync(dev);
+	ret = pm_runtime_resume_and_get(dev);
+	if (ret < 0) {
+		pm_runtime_disable(dev);
+		return ret;
+	}
 	rzv2m_i2c_init(priv);
 	pm_runtime_put(dev);

base-commit: 08dbfad3f5040f5bdb6c529da20d6d4e81fefd72
-- 
2.50.1