Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: opl3sa2: Allocate resources with device-managed APIs

This patch converts the resource management in ISA opl3sa2 driver with
devres as a clean up. Each manual resource management is converted
with the corresponding devres helper. The remove callback became
superfluous and dropped.

This should give no user-visible functional changes.

Link: https://lore.kernel.org/r/20210715075941.23332-69-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>

+11 -49
+11 -49
sound/isa/opl3sa2.c
··· 208 208 char str[2]; 209 209 210 210 port = chip->port; 211 - chip->res_port = request_region(port, 2, "OPL3-SA control"); 211 + chip->res_port = devm_request_region(card->dev, port, 2, 212 + "OPL3-SA control"); 212 213 if (!chip->res_port) { 213 214 snd_printk(KERN_ERR PFX "can't grab port 0x%lx\n", port); 214 215 return -EBUSY; ··· 610 609 } 611 610 #endif /* CONFIG_PNP */ 612 611 613 - static void snd_opl3sa2_free(struct snd_card *card) 614 - { 615 - struct snd_opl3sa2 *chip = card->private_data; 616 - if (chip->irq >= 0) 617 - free_irq(chip->irq, card); 618 - release_and_free_resource(chip->res_port); 619 - } 620 - 621 612 static int snd_opl3sa2_card_new(struct device *pdev, int dev, 622 613 struct snd_card **cardp) 623 614 { ··· 617 624 struct snd_opl3sa2 *chip; 618 625 int err; 619 626 620 - err = snd_card_new(pdev, index[dev], id[dev], THIS_MODULE, 621 - sizeof(struct snd_opl3sa2), &card); 627 + err = snd_devm_card_new(pdev, index[dev], id[dev], THIS_MODULE, 628 + sizeof(struct snd_opl3sa2), &card); 622 629 if (err < 0) 623 630 return err; 624 631 strcpy(card->driver, "OPL3SA2"); ··· 626 633 chip = card->private_data; 627 634 spin_lock_init(&chip->reg_lock); 628 635 chip->irq = -1; 629 - card->private_free = snd_opl3sa2_free; 630 636 *cardp = card; 631 637 return 0; 632 638 } ··· 650 658 err = snd_opl3sa2_detect(card); 651 659 if (err < 0) 652 660 return err; 653 - err = request_irq(xirq, snd_opl3sa2_interrupt, 0, 654 - "OPL3-SA2", card); 661 + err = devm_request_irq(card->dev, xirq, snd_opl3sa2_interrupt, 0, 662 + "OPL3-SA2", card); 655 663 if (err) { 656 664 snd_printk(KERN_ERR PFX "can't grab IRQ %d\n", xirq); 657 665 return -ENODEV; ··· 729 737 if (err < 0) 730 738 return err; 731 739 err = snd_opl3sa2_pnp(dev, card->private_data, pdev); 732 - if (err < 0) { 733 - snd_card_free(card); 740 + if (err < 0) 734 741 return err; 735 - } 736 742 err = snd_opl3sa2_probe(card, dev); 737 - if (err < 0) { 738 - snd_card_free(card); 743 + if (err < 0) 739 744 return err; 740 - } 741 745 pnp_set_drvdata(pdev, card); 742 746 dev++; 743 747 return 0; 744 - } 745 - 746 - static void snd_opl3sa2_pnp_remove(struct pnp_dev *pdev) 747 - { 748 - snd_card_free(pnp_get_drvdata(pdev)); 749 748 } 750 749 751 750 #ifdef CONFIG_PM ··· 754 771 .name = "snd-opl3sa2-pnpbios", 755 772 .id_table = snd_opl3sa2_pnpbiosids, 756 773 .probe = snd_opl3sa2_pnp_detect, 757 - .remove = snd_opl3sa2_pnp_remove, 758 774 #ifdef CONFIG_PM 759 775 .suspend = snd_opl3sa2_pnp_suspend, 760 776 .resume = snd_opl3sa2_pnp_resume, ··· 785 803 if (err < 0) 786 804 return err; 787 805 err = snd_opl3sa2_pnp(dev, card->private_data, pdev); 788 - if (err < 0) { 789 - snd_card_free(card); 806 + if (err < 0) 790 807 return err; 791 - } 792 808 err = snd_opl3sa2_probe(card, dev); 793 - if (err < 0) { 794 - snd_card_free(card); 809 + if (err < 0) 795 810 return err; 796 - } 797 811 pnp_set_card_drvdata(pcard, card); 798 812 dev++; 799 813 return 0; 800 - } 801 - 802 - static void snd_opl3sa2_pnp_cremove(struct pnp_card_link *pcard) 803 - { 804 - snd_card_free(pnp_get_card_drvdata(pcard)); 805 - pnp_set_card_drvdata(pcard, NULL); 806 814 } 807 815 808 816 #ifdef CONFIG_PM ··· 811 839 .name = "snd-opl3sa2-cpnp", 812 840 .id_table = snd_opl3sa2_pnpids, 813 841 .probe = snd_opl3sa2_pnp_cdetect, 814 - .remove = snd_opl3sa2_pnp_cremove, 815 842 #ifdef CONFIG_PM 816 843 .suspend = snd_opl3sa2_pnp_csuspend, 817 844 .resume = snd_opl3sa2_pnp_cresume, ··· 856 885 if (err < 0) 857 886 return err; 858 887 err = snd_opl3sa2_probe(card, dev); 859 - if (err < 0) { 860 - snd_card_free(card); 888 + if (err < 0) 861 889 return err; 862 - } 863 890 dev_set_drvdata(pdev, card); 864 891 return 0; 865 - } 866 - 867 - static void snd_opl3sa2_isa_remove(struct device *devptr, 868 - unsigned int dev) 869 - { 870 - snd_card_free(dev_get_drvdata(devptr)); 871 892 } 872 893 873 894 #ifdef CONFIG_PM ··· 880 917 static struct isa_driver snd_opl3sa2_isa_driver = { 881 918 .match = snd_opl3sa2_isa_match, 882 919 .probe = snd_opl3sa2_isa_probe, 883 - .remove = snd_opl3sa2_isa_remove, 884 920 #ifdef CONFIG_PM 885 921 .suspend = snd_opl3sa2_isa_suspend, 886 922 .resume = snd_opl3sa2_isa_resume,