Ignore:
Timestamp:
Aug 7, 2022, 6:11:12 PM (3 years ago)
Author:
David Azarewicz
Message:

Merge changes from next branch.

Location:
GPL/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk

  • GPL/trunk/alsa-kernel/pci/als4000.c

    r703 r717  
    750750        if (joystick_port[dev] == 1) { /* auto-detect */
    751751                for (io_port = 0x200; io_port <= 0x218; io_port += 8) {
    752                         r = request_region(io_port, 8, "ALS4000 gameport");
     752                        r = devm_request_region(&acard->pci->dev, io_port, 8,
     753                                                "ALS4000 gameport");
    753754                        if (r)
    754755                                break;
     
    756757        } else {
    757758                io_port = joystick_port[dev];
    758                 r = request_region(io_port, 8, "ALS4000 gameport");
     759                r = devm_request_region(&acard->pci->dev, io_port, 8,
     760                                        "ALS4000 gameport");
    759761        }
    760762
     
    767769        if (!gp) {
    768770                dev_err(&acard->pci->dev, "cannot allocate memory for gameport\n");
    769                 release_and_free_resource(r);
    770771                return -ENOMEM;
    771772        }
     
    775776        gameport_set_dev_parent(gp, &acard->pci->dev);
    776777        gp->io = io_port;
    777         gameport_set_port_data(gp, r);
    778778
    779779        /* Enable legacy joystick port */
     
    788788{
    789789        if (acard->gameport) {
    790                 struct resource *r = gameport_get_port_data(acard->gameport);
    791 
    792790                gameport_unregister_port(acard->gameport);
    793791                acard->gameport = NULL;
     
    795793                /* disable joystick */
    796794                snd_als4000_set_addr(acard->iobase, 0, 0, 0, 0);
    797 
    798                 release_and_free_resource(r);
    799795        }
    800796}
     
    812808        /* free resources */
    813809        snd_als4000_free_gameport(acard);
    814         pci_release_regions(acard->pci);
    815         pci_disable_device(acard->pci);
    816 }
    817 
    818 static int snd_card_als4000_probe(struct pci_dev *pci,
    819                                   const struct pci_device_id *pci_id)
     810}
     811
     812static int __snd_card_als4000_probe(struct pci_dev *pci,
     813                                    const struct pci_device_id *pci_id)
    820814{
    821815        static int dev;
     
    836830
    837831        /* enable PCI device */
    838         err = pci_enable_device(pci);
     832        err = pcim_enable_device(pci);
    839833        if (err < 0)
    840834                return err;
     
    843837        if (dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(24))) {
    844838                dev_err(&pci->dev, "architecture does not support 24bit PCI busmaster DMA\n");
    845                 pci_disable_device(pci);
    846839                return -ENXIO;
    847840        }
    848841
    849842        err = pci_request_regions(pci, "ALS4000");
    850         if (err < 0) {
    851                 pci_disable_device(pci);
     843        if (err < 0)
    852844                return err;
    853         }
    854845        iobase = pci_resource_start(pci, 0);
    855846
     
    858849        pci_set_master(pci);
    859850       
    860         err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
    861                            sizeof(*acard) /* private_data: acard */,
    862                            &card);
    863         if (err < 0) {
    864                 pci_release_regions(pci);
    865                 pci_disable_device(pci);
     851        err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
     852                                sizeof(*acard) /* private_data: acard */,
     853                                &card);
     854        if (err < 0)
    866855                return err;
    867         }
    868856
    869857        acard = card->private_data;
     
    885873                               &chip);
    886874        if (err < 0)
    887                 goto out_err;
     875                return err;
    888876        acard->chip = chip;
    889877
     
    906894                dev_err(&pci->dev, "no MPU-401 device at 0x%lx?\n",
    907895                                iobase + ALS4K_IOB_30_MIDI_DATA);
    908                 goto out_err;
     896                return err;
    909897        }
    910898        /* FIXME: ALS4000 has interesting MPU401 configuration features
     
    916904        err = snd_als4000_pcm(chip, 0);
    917905        if (err < 0)
    918                 goto out_err;
     906                return err;
    919907
    920908        err = snd_sbmixer_new(chip);
    921909        if (err < 0)
    922                 goto out_err;
     910                return err;
    923911
    924912        if (snd_opl3_create(card,
     
    932920                err = snd_opl3_hwdep_new(opl3, 0, 1, NULL);
    933921                if (err < 0)
    934                         goto out_err;
     922                        return err;
    935923        }
    936924
     
    939927        err = snd_card_register(card);
    940928        if (err < 0)
    941                 goto out_err;
     929                return err;
    942930
    943931        pci_set_drvdata(pci, card);
    944932        dev++;
    945         err = 0;
    946         goto out;
    947 
    948 out_err:
    949         snd_card_free(card);
    950        
    951 out:
    952         return err;
    953 }
    954 
    955 static void snd_card_als4000_remove(struct pci_dev *pci)
    956 {
    957         snd_card_free(pci_get_drvdata(pci));
     933        return 0;
     934}
     935
     936static int snd_card_als4000_probe(struct pci_dev *pci,
     937                                  const struct pci_device_id *pci_id)
     938{
     939        return snd_card_free_on_error(&pci->dev, __snd_card_als4000_probe(pci, pci_id));
    958940}
    959941
     
    1000982        .id_table = snd_als4000_ids,
    1001983        .probe = snd_card_als4000_probe,
    1002         .remove = snd_card_als4000_remove,
    1003984        .driver = {
    1004985                .pm = SND_ALS4000_PM_OPS,
Note: See TracChangeset for help on using the changeset viewer.