Hi Wolfram, [...] > irqhandler = rcar_i2c_gen2_irq; > } > > - if (priv->devtype == I2C_RCAR_GEN3) { > - priv->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); > - if (!IS_ERR(priv->rstc)) { > - ret = reset_control_status(priv->rstc); > - if (ret < 0) > - priv->rstc = ERR_PTR(-ENOTSUPP); > - } > - } > - > /* Stay always active when multi-master to keep arbitration working */ > if (of_property_read_bool(dev->of_node, "multi-master")) > priv->flags |= ID_P_PM_BLOCKED; > @@ -1112,6 +1101,16 @@ static int rcar_i2c_probe(struct platform_device *pdev) > if (of_property_read_bool(dev->of_node, "smbus")) > priv->flags |= ID_P_HOST_NOTIFY; > > + if (priv->devtype == I2C_RCAR_GEN3) { > + priv->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); > + if (IS_ERR(priv->rstc)) > + goto out_pm_put; > + > + ret = reset_control_status(priv->rstc); > + if (ret < 0) > + goto out_pm_put; > + } > + you moved this block to avoid the pm_runtime_put(dev); Looks good! Reviewed-by: Andi Shyti <andi.shyti@xxxxxxxxxx> Andi