pm_runtime_set_active(dev);
        pm_runtime_enable(dev);
 
-       return component_add(dev, &wcd938x_sdw_component_ops);
+       ret = component_add(dev, &wcd938x_sdw_component_ops);
+       if (ret)
+               goto err_disable_rpm;
+
+       return 0;
+
+err_disable_rpm:
+       pm_runtime_disable(dev);
+       pm_runtime_set_suspended(dev);
+       pm_runtime_dont_use_autosuspend(dev);
+
+       return ret;
 }
 
 static int wcd9380_remove(struct sdw_slave *pdev)
 
        component_del(dev, &wcd938x_sdw_component_ops);
 
+       pm_runtime_disable(dev);
+       pm_runtime_set_suspended(dev);
+       pm_runtime_dont_use_autosuspend(dev);
+
        return 0;
 }