goto out_err_disable_aer;
        }
 
-       ret = hw_data->dev_config(accel_dev);
-       if (ret)
-               goto out_err_disable_aer;
-
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, true);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_disable_aer:
        adf_disable_aer(accel_dev);
 out_err:
                pr_err("QAT: Driver removal failed\n");
                return;
        }
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_disable_aer(accel_dev);
        adf_cleanup_accel(accel_dev);
 }
 
                goto out_err_disable_aer;
        }
 
-       ret = hw_data->dev_config(accel_dev);
-       if (ret)
-               goto out_err_disable_aer;
-
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, true);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_disable_aer:
        adf_disable_aer(accel_dev);
 out_err_free_reg:
                pr_err("QAT: Driver removal failed\n");
                return;
        }
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_disable_aer(accel_dev);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
 
        /* Completion for VF2PF request/response message exchange */
        init_completion(&accel_dev->vf.msg_received);
 
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, false);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_free_reg:
        pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
                return;
        }
        adf_flush_vf_wq(accel_dev);
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
        kfree(accel_dev);
 
                goto out_err_disable_aer;
        }
 
-       ret = hw_data->dev_config(accel_dev);
-       if (ret)
-               goto out_err_disable_aer;
-
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, true);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_disable_aer:
        adf_disable_aer(accel_dev);
 out_err_free_reg:
                pr_err("QAT: Driver removal failed\n");
                return;
        }
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_disable_aer(accel_dev);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
 
        /* Completion for VF2PF request/response message exchange */
        init_completion(&accel_dev->vf.msg_received);
 
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, false);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_free_reg:
        pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
                return;
        }
        adf_flush_vf_wq(accel_dev);
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
        kfree(accel_dev);
 
                        if (!accel_dev->is_vf)
                                continue;
 
-                       adf_dev_stop(accel_dev);
-                       adf_dev_shutdown(accel_dev);
+                       adf_dev_down(accel_dev, false);
                }
        }
 
                        if (!adf_dev_started(accel_dev))
                                continue;
 
-                       adf_dev_stop(accel_dev);
-                       adf_dev_shutdown(accel_dev);
+                       adf_dev_down(accel_dev, false);
                }
        }
 }
        if (!accel_dev)
                goto out;
 
-       if (!adf_dev_started(accel_dev)) {
-               dev_info(&GET_DEV(accel_dev),
-                        "Starting acceleration device qat_dev%d.\n",
-                        ctl_data->device_id);
-               ret = adf_dev_init(accel_dev);
-               if (!ret)
-                       ret = adf_dev_start(accel_dev);
-       } else {
-               dev_info(&GET_DEV(accel_dev),
-                        "Acceleration device qat_dev%d already started.\n",
-                        ctl_data->device_id);
-       }
+       dev_info(&GET_DEV(accel_dev),
+                "Starting acceleration device qat_dev%d.\n",
+                ctl_data->device_id);
+
+       ret = adf_dev_up(accel_dev, false);
+
        if (ret) {
                dev_err(&GET_DEV(accel_dev), "Failed to start qat_dev%d\n",
                        ctl_data->device_id);
-               adf_dev_stop(accel_dev);
-               adf_dev_shutdown(accel_dev);
+               adf_dev_down(accel_dev, false);
        }
 out:
        kfree(ctl_data);
 
                        return -EBUSY;
                }
 
-               ret = adf_dev_shutdown_cache_cfg(accel_dev);
+               ret = adf_dev_down(accel_dev, true);
                if (ret)
                        return ret;
        }
        if (!accel_dev->pf.vf_info)
                return -ENOMEM;
 
-       if (adf_dev_init(accel_dev)) {
-               dev_err(&GET_DEV(accel_dev), "Failed to init qat_dev%d\n",
-                       accel_dev->accel_id);
-               return -EFAULT;
-       }
-
-       if (adf_dev_start(accel_dev)) {
+       if (adf_dev_up(accel_dev, false)) {
                dev_err(&GET_DEV(accel_dev), "Failed to start qat_dev%d\n",
                        accel_dev->accel_id);
                return -EFAULT;
 
        struct adf_accel_dev *accel_dev = stop_data->accel_dev;
 
        adf_dev_restarting_notify(accel_dev);
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 
        /* Re-enable PF2VF interrupts */
        adf_enable_pf2vf_interrupts(accel_dev);
 
                goto out_err_disable_aer;
        }
 
-       ret = hw_data->dev_config(accel_dev);
-       if (ret)
-               goto out_err_disable_aer;
-
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, true);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_disable_aer:
        adf_disable_aer(accel_dev);
 out_err_free_reg:
                pr_err("QAT: Driver removal failed\n");
                return;
        }
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_disable_aer(accel_dev);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
 
        /* Completion for VF2PF request/response message exchange */
        init_completion(&accel_dev->vf.msg_received);
 
-       ret = adf_dev_init(accel_dev);
-       if (ret)
-               goto out_err_dev_shutdown;
-
-       ret = adf_dev_start(accel_dev);
+       ret = adf_dev_up(accel_dev, false);
        if (ret)
                goto out_err_dev_stop;
 
        return ret;
 
 out_err_dev_stop:
-       adf_dev_stop(accel_dev);
-out_err_dev_shutdown:
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
 out_err_free_reg:
        pci_release_regions(accel_pci_dev->pci_dev);
 out_err_disable:
                return;
        }
        adf_flush_vf_wq(accel_dev);
-       adf_dev_stop(accel_dev);
-       adf_dev_shutdown(accel_dev);
+       adf_dev_down(accel_dev, false);
        adf_cleanup_accel(accel_dev);
        adf_cleanup_pci_dev(accel_dev);
        kfree(accel_dev);