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/es1968.c

    r703 r717  
    24792479                return -ENODEV;
    24802480
    2481         r = request_region(JOYSTICK_ADDR, 8, "ES1968 gameport");
     2481        r = devm_request_region(&chip->pci->dev, JOYSTICK_ADDR, 8,
     2482                                "ES1968 gameport");
    24822483        if (!r)
    24832484                return -EBUSY;
     
    24872488                dev_err(chip->card->dev,
    24882489                        "cannot allocate memory for gameport\n");
    2489                 release_and_free_resource(r);
    24902490                return -ENOMEM;
    24912491        }
     
    24982498        gameport_set_dev_parent(gp, &chip->pci->dev);
    24992499        gp->io = JOYSTICK_ADDR;
    2500         gameport_set_port_data(gp, r);
    25012500
    25022501        gameport_register_port(gp);
     
    25082507{
    25092508        if (chip->gameport) {
    2510                 struct resource *r = gameport_get_port_data(chip->gameport);
    2511 
    25122509                gameport_unregister_port(chip->gameport);
    25132510                chip->gameport = NULL;
    2514 
    2515                 release_and_free_resource(r);
    25162511        }
    25172512}
     
    25272522        int err;
    25282523
    2529         input_dev = input_allocate_device();
     2524        input_dev = devm_input_allocate_device(&chip->pci->dev);
    25302525        if (!input_dev)
    25312526                return -ENOMEM;
     
    25472542
    25482543        err = input_register_device(input_dev);
    2549         if (err) {
    2550                 input_free_device(input_dev);
     2544        if (err)
    25512545                return err;
    2552         }
    25532546
    25542547        chip->input_dev = input_dev;
     
    26342627#endif
    26352628
    2636 static int snd_es1968_free(struct es1968 *chip)
    2637 {
     2629static void snd_es1968_free(struct snd_card *card)
     2630{
     2631        struct es1968 *chip = card->private_data;
     2632
    26382633        cancel_work_sync(&chip->hwvol_work);
    2639 #ifdef CONFIG_SND_ES1968_INPUT
    2640         if (chip->input_dev)
    2641                 input_unregister_device(chip->input_dev);
    2642 #endif
    26432634
    26442635        if (chip->io_port) {
     
    26522643#endif
    26532644
    2654         if (chip->irq >= 0)
    2655                 free_irq(chip->irq, chip);
    26562645        snd_es1968_free_gameport(chip);
    2657         pci_release_regions(chip->pci);
    2658         pci_disable_device(chip->pci);
    2659         kfree(chip);
    2660         return 0;
    2661 }
    2662 
    2663 static int snd_es1968_dev_free(struct snd_device *device)
    2664 {
    2665         struct es1968 *chip = device->device_data;
    2666         return snd_es1968_free(chip);
    26672646}
    26682647
     
    26942673                             int chip_type,
    26952674                             int do_pm,
    2696                              int radio_nr,
    2697                              struct es1968 **chip_ret)
    2698 {
    2699         static const struct snd_device_ops ops = {
    2700                 .dev_free =     snd_es1968_dev_free,
    2701         };
    2702         struct es1968 *chip;
     2675                             int radio_nr)
     2676{
     2677        struct es1968 *chip = card->private_data;
    27032678        int i, err;
    27042679
    2705         *chip_ret = NULL;
    2706 
    27072680        /* enable PCI device */
    2708         err = pci_enable_device(pci);
     2681        err = pcim_enable_device(pci);
    27092682        if (err < 0)
    27102683                return err;
     
    27132686                dev_err(card->dev,
    27142687                        "architecture does not support 28bit PCI busmaster DMA\n");
    2715                 pci_disable_device(pci);
    27162688                return -ENXIO;
    2717         }
    2718 
    2719         chip = kzalloc(sizeof(*chip), GFP_KERNEL);
    2720         if (! chip) {
    2721                 pci_disable_device(pci);
    2722                 return -ENOMEM;
    27232689        }
    27242690
     
    27392705
    27402706        err = pci_request_regions(pci, "ESS Maestro");
    2741         if (err < 0) {
    2742                 kfree(chip);
    2743                 pci_disable_device(pci);
     2707        if (err < 0)
    27442708                return err;
    2745         }
    27462709        chip->io_port = pci_resource_start(pci, 0);
    2747         if (request_irq(pci->irq, snd_es1968_interrupt, IRQF_SHARED,
    2748                         KBUILD_MODNAME, chip)) {
     2710        if (devm_request_irq(&pci->dev, pci->irq, snd_es1968_interrupt,
     2711                             IRQF_SHARED, KBUILD_MODNAME, chip)) {
    27492712                dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);
    2750                 snd_es1968_free(chip);
    27512713                return -EBUSY;
    27522714        }
    27532715        chip->irq = pci->irq;
    27542716        card->sync_irq = chip->irq;
     2717        card->private_free = snd_es1968_free;
    27552718               
    27562719        /* Clear Maestro_map */
     
    27862749        snd_es1968_chip_init(chip);
    27872750
    2788         err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
    2789         if (err < 0) {
    2790                 snd_es1968_free(chip);
    2791                 return err;
    2792         }
    2793 
    27942751#ifdef CONFIG_SND_ES1968_RADIO
    27952752        /* don't play with GPIOs on laptops */
    27962753        if (chip->pci->subsystem_vendor != 0x125d)
    2797                 goto no_radio;
     2754                return 0;
    27982755        err = v4l2_device_register(&pci->dev, &chip->v4l2_dev);
    2799         if (err < 0) {
    2800                 snd_es1968_free(chip);
     2756        if (err < 0)
    28012757                return err;
    2802         }
    28032758        chip->tea.v4l2_dev = &chip->v4l2_dev;
    28042759        chip->tea.private_data = chip;
     
    28162771                }
    28172772        }
    2818 no_radio:
    28192773#endif
    2820 
    2821         *chip_ret = chip;
    2822 
    28232774        return 0;
    28242775}
     
    28272778/*
    28282779 */
    2829 static int snd_es1968_probe(struct pci_dev *pci,
    2830                             const struct pci_device_id *pci_id)
     2780static int __snd_es1968_probe(struct pci_dev *pci,
     2781                              const struct pci_device_id *pci_id)
    28312782{
    28322783        static int dev;
     
    28432794        }
    28442795
    2845         err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
    2846                            0, &card);
     2796        err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
     2797                                sizeof(*chip), &card);
    28472798        if (err < 0)
    28482799                return err;
     2800        chip = card->private_data;
    28492801               
    28502802        if (total_bufsize[dev] < 128)
     
    28582810                                pci_id->driver_data,
    28592811                                use_pm[dev],
    2860                                 radio_nr[dev],
    2861                                 &chip);
    2862         if (err < 0) {
    2863                 snd_card_free(card);
     2812                                radio_nr[dev]);
     2813        if (err < 0)
    28642814                return err;
    2865         }
    2866         card->private_data = chip;
    28672815
    28682816        switch (chip->type) {
     
    28822830
    28832831        err = snd_es1968_pcm(chip, 0);
    2884         if (err < 0) {
    2885                 snd_card_free(card);
     2832        if (err < 0)
    28862833                return err;
    2887         }
    28882834
    28892835        err = snd_es1968_mixer(chip);
    2890         if (err < 0) {
    2891                 snd_card_free(card);
     2836        if (err < 0)
    28922837                return err;
    2893         }
    28942838
    28952839        if (enable_mpu[dev] == 2) {
     
    29342878
    29352879        err = snd_card_register(card);
    2936         if (err < 0) {
    2937                 snd_card_free(card);
     2880        if (err < 0)
    29382881                return err;
    2939         }
    29402882        pci_set_drvdata(pci, card);
    29412883        dev++;
     
    29432885}
    29442886
    2945 static void snd_es1968_remove(struct pci_dev *pci)
    2946 {
    2947         snd_card_free(pci_get_drvdata(pci));
     2887static int snd_es1968_probe(struct pci_dev *pci,
     2888                            const struct pci_device_id *pci_id)
     2889{
     2890        return snd_card_free_on_error(&pci->dev, __snd_es1968_probe(pci, pci_id));
    29482891}
    29492892
     
    29522895        .id_table = snd_es1968_ids,
    29532896        .probe = snd_es1968_probe,
    2954         .remove = snd_es1968_remove,
    29552897        .driver = {
    29562898                .pm = ES1968_PM_OPS,
Note: See TracChangeset for help on using the changeset viewer.