struct device_driver drv;
 };
 
+extern struct idxd_device_driver dsa_drv;
+
 struct idxd_irq_entry {
        struct idxd_device *idxd;
        int id;
 
        if (err < 0)
                return err;
 
-       err = idxd_register_driver();
+       err = idxd_driver_register(&dsa_drv);
        if (err < 0)
-               goto err_idxd_driver_register;
+               goto err_dsa_driver_register;
 
        err = idxd_cdev_register();
        if (err)
 err_pci_register:
        idxd_cdev_remove();
 err_cdev_register:
-       idxd_unregister_driver();
-err_idxd_driver_register:
+       idxd_driver_unregister(&dsa_drv);
+err_dsa_driver_register:
        idxd_unregister_bus_type();
        return err;
 }
 
 static void __exit idxd_exit_module(void)
 {
-       idxd_unregister_driver();
+       idxd_driver_unregister(&dsa_drv);
        pci_unregister_driver(&idxd_pci_driver);
        idxd_cdev_remove();
        idxd_unregister_bus_type();
 
        }
 }
 
-static struct idxd_device_driver dsa_drv = {
+struct idxd_device_driver dsa_drv = {
        .name = "dsa",
        .probe = idxd_dsa_drv_probe,
        .remove = idxd_dsa_drv_remove,
 };
 
-/* IDXD generic driver setup */
-int idxd_register_driver(void)
-{
-       return idxd_driver_register(&dsa_drv);
-}
-
-void idxd_unregister_driver(void)
-{
-       idxd_driver_unregister(&dsa_drv);
-}
-
 /* IDXD engine attributes */
 static ssize_t engine_group_id_show(struct device *dev,
                                    struct device_attribute *attr, char *buf)