Merge tag 'sound-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-microblaze.git] / sound / isa / adlib.c
index e6cd7c4..f079ba4 100644 (file)
@@ -43,30 +43,23 @@ static int snd_adlib_match(struct device *dev, unsigned int n)
        return 1;
 }
 
-static void snd_adlib_free(struct snd_card *card)
-{
-       release_and_free_resource(card->private_data);
-}
-
 static int snd_adlib_probe(struct device *dev, unsigned int n)
 {
        struct snd_card *card;
        struct snd_opl3 *opl3;
        int error;
 
-       error = snd_card_new(dev, index[n], id[n], THIS_MODULE, 0, &card);
+       error = snd_devm_card_new(dev, index[n], id[n], THIS_MODULE, 0, &card);
        if (error < 0) {
                dev_err(dev, "could not create card\n");
                return error;
        }
 
-       card->private_data = request_region(port[n], 4, CRD_NAME);
+       card->private_data = devm_request_region(dev, port[n], 4, CRD_NAME);
        if (!card->private_data) {
                dev_err(dev, "could not grab ports\n");
-               error = -EBUSY;
-               goto out;
+               return -EBUSY;
        }
-       card->private_free = snd_adlib_free;
 
        strcpy(card->driver, DEV_NAME);
        strcpy(card->shortname, CRD_NAME);
@@ -75,37 +68,28 @@ static int snd_adlib_probe(struct device *dev, unsigned int n)
        error = snd_opl3_create(card, port[n], port[n] + 2, OPL3_HW_AUTO, 1, &opl3);
        if (error < 0) {
                dev_err(dev, "could not create OPL\n");
-               goto out;
+               return error;
        }
 
        error = snd_opl3_hwdep_new(opl3, 0, 0, NULL);
        if (error < 0) {
                dev_err(dev, "could not create FM\n");
-               goto out;
+               return error;
        }
 
        error = snd_card_register(card);
        if (error < 0) {
                dev_err(dev, "could not register card\n");
-               goto out;
+               return error;
        }
 
        dev_set_drvdata(dev, card);
        return 0;
-
-out:   snd_card_free(card);
-       return error;
-}
-
-static void snd_adlib_remove(struct device *dev, unsigned int n)
-{
-       snd_card_free(dev_get_drvdata(dev));
 }
 
 static struct isa_driver snd_adlib_driver = {
        .match          = snd_adlib_match,
        .probe          = snd_adlib_probe,
-       .remove         = snd_adlib_remove,
 
        .driver         = {
                .name   = DEV_NAME