Changeset 717 for GPL/trunk/alsa-kernel/pci/als4000.c
- Timestamp:
- Aug 7, 2022, 6:11:12 PM (3 years ago)
- Location:
- GPL/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk
- Property svn:mergeinfo changed
/GPL/branches/uniaud32-next merged: 710-716
- Property svn:mergeinfo changed
-
GPL/trunk/alsa-kernel/pci/als4000.c
r703 r717 750 750 if (joystick_port[dev] == 1) { /* auto-detect */ 751 751 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"); 753 754 if (r) 754 755 break; … … 756 757 } else { 757 758 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"); 759 761 } 760 762 … … 767 769 if (!gp) { 768 770 dev_err(&acard->pci->dev, "cannot allocate memory for gameport\n"); 769 release_and_free_resource(r);770 771 return -ENOMEM; 771 772 } … … 775 776 gameport_set_dev_parent(gp, &acard->pci->dev); 776 777 gp->io = io_port; 777 gameport_set_port_data(gp, r);778 778 779 779 /* Enable legacy joystick port */ … … 788 788 { 789 789 if (acard->gameport) { 790 struct resource *r = gameport_get_port_data(acard->gameport);791 792 790 gameport_unregister_port(acard->gameport); 793 791 acard->gameport = NULL; … … 795 793 /* disable joystick */ 796 794 snd_als4000_set_addr(acard->iobase, 0, 0, 0, 0); 797 798 release_and_free_resource(r);799 795 } 800 796 } … … 812 808 /* free resources */ 813 809 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 812 static int __snd_card_als4000_probe(struct pci_dev *pci, 813 const struct pci_device_id *pci_id) 820 814 { 821 815 static int dev; … … 836 830 837 831 /* enable PCI device */ 838 err = pci _enable_device(pci);832 err = pcim_enable_device(pci); 839 833 if (err < 0) 840 834 return err; … … 843 837 if (dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(24))) { 844 838 dev_err(&pci->dev, "architecture does not support 24bit PCI busmaster DMA\n"); 845 pci_disable_device(pci);846 839 return -ENXIO; 847 840 } 848 841 849 842 err = pci_request_regions(pci, "ALS4000"); 850 if (err < 0) { 851 pci_disable_device(pci); 843 if (err < 0) 852 844 return err; 853 }854 845 iobase = pci_resource_start(pci, 0); 855 846 … … 858 849 pci_set_master(pci); 859 850 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) 866 855 return err; 867 }868 856 869 857 acard = card->private_data; … … 885 873 &chip); 886 874 if (err < 0) 887 goto out_err;875 return err; 888 876 acard->chip = chip; 889 877 … … 906 894 dev_err(&pci->dev, "no MPU-401 device at 0x%lx?\n", 907 895 iobase + ALS4K_IOB_30_MIDI_DATA); 908 goto out_err;896 return err; 909 897 } 910 898 /* FIXME: ALS4000 has interesting MPU401 configuration features … … 916 904 err = snd_als4000_pcm(chip, 0); 917 905 if (err < 0) 918 goto out_err;906 return err; 919 907 920 908 err = snd_sbmixer_new(chip); 921 909 if (err < 0) 922 goto out_err;910 return err; 923 911 924 912 if (snd_opl3_create(card, … … 932 920 err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); 933 921 if (err < 0) 934 goto out_err;922 return err; 935 923 } 936 924 … … 939 927 err = snd_card_register(card); 940 928 if (err < 0) 941 goto out_err;929 return err; 942 930 943 931 pci_set_drvdata(pci, card); 944 932 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 936 static 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)); 958 940 } 959 941 … … 1000 982 .id_table = snd_als4000_ids, 1001 983 .probe = snd_card_als4000_probe, 1002 .remove = snd_card_als4000_remove,1003 984 .driver = { 1004 985 .pm = SND_ALS4000_PM_OPS,
Note:
See TracChangeset
for help on using the changeset viewer.