if (err < 0) {
                dev_err(dpaux->dev, "failed to request IRQ#%u: %d\n",
                        dpaux->irq, err);
-               return err;
+               goto err_pm_disable;
        }
 
        disable_irq(dpaux->irq);
         */
        err = tegra_dpaux_pad_config(dpaux, DPAUX_PADCTL_FUNC_I2C);
        if (err < 0)
-               return err;
+               goto err_pm_disable;
 
 #ifdef CONFIG_GENERIC_PINCONF
        dpaux->desc.name = dev_name(&pdev->dev);
        dpaux->pinctrl = devm_pinctrl_register(&pdev->dev, &dpaux->desc, dpaux);
        if (IS_ERR(dpaux->pinctrl)) {
                dev_err(&pdev->dev, "failed to register pincontrol\n");
-               return PTR_ERR(dpaux->pinctrl);
+               err = PTR_ERR(dpaux->pinctrl);
+               goto err_pm_disable;
        }
 #endif
        /* enable and clear all interrupts */
        err = devm_of_dp_aux_populate_ep_devices(&dpaux->aux);
        if (err < 0) {
                dev_err(dpaux->dev, "failed to populate AUX bus: %d\n", err);
-               return err;
+               goto err_pm_disable;
        }
 
        return 0;
+
+err_pm_disable:
+       pm_runtime_put_sync(&pdev->dev);
+       pm_runtime_disable(&pdev->dev);
+       return err;
 }
 
 static void tegra_dpaux_remove(struct platform_device *pdev)