static void parport_attach(struct parport *port)
 {
+       struct pardev_cb pps_cb;
+
        if (attached) {
                /* we already have a port */
                return;
        }
 
-       device.pardev = parport_register_device(port, KBUILD_MODNAME,
-                       NULL, NULL, NULL, PARPORT_FLAG_EXCL, &device);
+       memset(&pps_cb, 0, sizeof(pps_cb));
+       pps_cb.private = &device;
+       pps_cb.flags = PARPORT_FLAG_EXCL;
+       device.pardev = parport_register_dev_model(port, KBUILD_MODNAME,
+                                                  &pps_cb, 0);
        if (!device.pardev) {
                pr_err("couldn't register with %s\n", port->name);
                return;
 
 static struct parport_driver pps_gen_parport_driver = {
        .name = KBUILD_MODNAME,
-       .attach = parport_attach,
+       .match_port = parport_attach,
        .detach = parport_detach,
+       .devmodel = true,
 };
 
 /* module staff */