.shortname = "C-Media CMI8787",
        .longname = "C-Media Oxygen HD Audio",
        .chip = "CMI8788",
-       .owner = THIS_MODULE,
        .init = hifier_init,
        .control_filter = hifier_control_filter,
        .cleanup = hifier_cleanup,
                ++dev;
                return -ENOENT;
        }
-       err = oxygen_pci_probe(pci, index[dev], id[dev], &model_hifier, 0);
+       err = oxygen_pci_probe(pci, index[dev], id[dev], THIS_MODULE, &model_hifier, 0);
        if (err >= 0)
                ++dev;
        return err;
 
        .shortname = "C-Media CMI8788",
        .longname = "C-Media Oxygen HD Audio",
        .chip = "CMI8788",
-       .owner = THIS_MODULE,
        .probe = generic_probe,
        .init = generic_init,
        .cleanup = generic_cleanup,
                ++dev;
                return -ENOENT;
        }
-       err = oxygen_pci_probe(pci, index[dev], id[dev],
+       err = oxygen_pci_probe(pci, index[dev], id[dev], THIS_MODULE,
                               &model_generic, pci_id->driver_data);
        if (err >= 0)
                ++dev;
 
        const char *shortname;
        const char *longname;
        const char *chip;
-       struct module *owner;
        int (*probe)(struct oxygen *chip, unsigned long driver_data);
        void (*init)(struct oxygen *chip);
        int (*control_filter)(struct snd_kcontrol_new *template);
 /* oxygen_lib.c */
 
 int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
+                    struct module *owner,
                     const struct oxygen_model *model,
                     unsigned long driver_data);
 void oxygen_pci_remove(struct pci_dev *pci);
 
 }
 
 int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
+                    struct module *owner,
                     const struct oxygen_model *model,
                     unsigned long driver_data)
 {
        struct oxygen *chip;
        int err;
 
-       err = snd_card_create(index, id, model->owner,
+       err = snd_card_create(index, id, owner,
                              sizeof(*chip) + model->model_data_size, &card);
        if (err < 0)
                return err;
 
 static const struct oxygen_model model_xonar_d2 = {
        .longname = "Asus Virtuoso 200",
        .chip = "AV200",
-       .owner = THIS_MODULE,
        .probe = xonar_model_probe,
        .init = xonar_d2_init,
        .control_filter = xonar_d2_control_filter,
 static const struct oxygen_model model_xonar_d1 = {
        .longname = "Asus Virtuoso 100",
        .chip = "AV200",
-       .owner = THIS_MODULE,
        .probe = xonar_model_probe,
        .init = xonar_d1_init,
        .control_filter = xonar_d1_control_filter,
 static const struct oxygen_model model_xonar_hdav = {
        .longname = "Asus Virtuoso 200",
        .chip = "AV200",
-       .owner = THIS_MODULE,
        .probe = xonar_model_probe,
        .init = xonar_hdav_init,
        .cleanup = xonar_hdav_cleanup,
                return -ENOENT;
        }
        BUG_ON(pci_id->driver_data >= ARRAY_SIZE(models));
-       err = oxygen_pci_probe(pci, index[dev], id[dev],
+       err = oxygen_pci_probe(pci, index[dev], id[dev], THIS_MODULE,
                               models[pci_id->driver_data],
                               pci_id->driver_data);
        if (err >= 0)