]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
sound: oxygen: make the owner module a parameter of the probe function
authorClemens Ladisch <clemens@ladisch.de>
Thu, 19 Feb 2009 07:37:13 +0000 (08:37 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 19 Feb 2009 09:22:22 +0000 (10:22 +0100)
Move the owner field out of the oxygen_model structure and make it
a parameter of oxygen_pci_probe(), because the actual owner module does
not depend on the card model.  Furthermore, moving it out of the model
structure allows us to create the card structure before the actual model
is known.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/oxygen/hifier.c
sound/pci/oxygen/oxygen.c
sound/pci/oxygen/oxygen.h
sound/pci/oxygen/oxygen_lib.c
sound/pci/oxygen/virtuoso.c

index 1ab833f843eb70404a586a59da232eff20ce4467..cc98bad9916afe82a75a6a90f58b73132f323c0d 100644 (file)
@@ -151,7 +151,6 @@ static const struct oxygen_model model_hifier = {
        .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,
@@ -185,7 +184,7 @@ static int __devinit hifier_probe(struct pci_dev *pci,
                ++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;
index de999c6d6dd3a4b457737d7bb748614f166bd508..12b6c2137d5021df82a6d89d9348bc36b652cafd 100644 (file)
@@ -315,7 +315,6 @@ static const struct oxygen_model model_generic = {
        .shortname = "C-Media CMI8788",
        .longname = "C-Media Oxygen HD Audio",
        .chip = "CMI8788",
-       .owner = THIS_MODULE,
        .probe = generic_probe,
        .init = generic_init,
        .cleanup = generic_cleanup,
@@ -353,7 +352,7 @@ static int __devinit generic_oxygen_probe(struct pci_dev *pci,
                ++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;
index 19107c6307e5e297c35555ee3c66ea2e70672e43..268bff4f29d23073d96b29a5f916ae3f0ca336d5 100644 (file)
@@ -62,7 +62,6 @@ struct oxygen_model {
        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);
@@ -134,6 +133,7 @@ struct oxygen {
 /* 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);
index 9c81e0b051130037bc3dff42de4b05cc7e535815..b5560fa5a5e3170b14b0a3603178deb2a46c0bf3 100644 (file)
@@ -452,6 +452,7 @@ static void oxygen_card_free(struct snd_card *card)
 }
 
 int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
+                    struct module *owner,
                     const struct oxygen_model *model,
                     unsigned long driver_data)
 {
@@ -459,7 +460,7 @@ int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
        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;
index 6c870c12a1777f887076166b4009d7d18b6cd315..c05f7e7bdb34dfdd147c99f51ed4e7292f77650c 100644 (file)
@@ -816,7 +816,6 @@ static int xonar_model_probe(struct oxygen *chip, unsigned long driver_data)
 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,
@@ -849,7 +848,6 @@ static const struct oxygen_model model_xonar_d2 = {
 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,
@@ -878,7 +876,6 @@ static const struct oxygen_model model_xonar_d1 = {
 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,
@@ -925,7 +922,7 @@ static int __devinit xonar_probe(struct pci_dev *pci,
                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)