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

    r679 r717  
    7070MODULE_DEVICE_TABLE(pci, snd_cs5530_ids);
    7171
    72 static int snd_cs5530_free(struct snd_cs5530 *chip)
    73 {
    74         pci_release_regions(chip->pci);
    75         pci_disable_device(chip->pci);
    76         kfree(chip);
    77         return 0;
    78 }
    79 
    80 static int snd_cs5530_dev_free(struct snd_device *device)
    81 {
    82         struct snd_cs5530 *chip = device->device_data;
    83         return snd_cs5530_free(chip);
    84 }
    85 
    86 static void snd_cs5530_remove(struct pci_dev *pci)
    87 {
    88         snd_card_free(pci_get_drvdata(pci));
    89 }
    90 
    9172static u8 snd_cs5530_mixer_read(unsigned long io, u8 reg)
    9273{
     
    9980
    10081static int snd_cs5530_create(struct snd_card *card,
    101                              struct pci_dev *pci,
    102                              struct snd_cs5530 **rchip)
     82                             struct pci_dev *pci)
    10383{
    104         struct snd_cs5530 *chip;
     84        struct snd_cs5530 *chip = card->private_data;
    10585        unsigned long sb_base;
    10686        u8 irq, dma8, dma16 = 0;
     
    10989        int err;
    11090
    111         static const struct snd_device_ops ops = {
    112                 .dev_free = snd_cs5530_dev_free,
    113         };
    114         *rchip = NULL;
    115 
    116         err = pci_enable_device(pci);
     91        err = pcim_enable_device(pci);
    11792        if (err < 0)
    11893                return err;
    119 
    120         chip = kzalloc(sizeof(*chip), GFP_KERNEL);
    121         if (chip == NULL) {
    122                 pci_disable_device(pci);
    123                 return -ENOMEM;
    124         }
    12594
    12695        chip->card = card;
    12796        chip->pci = pci;
    12897
    129         err = pci_request_regions(pci, "CS5530");
    130         if (err < 0) {
    131                 kfree(chip);
    132                 pci_disable_device(pci);
    133                 return err;
    134         }
     98        err = pcim_iomap_regions(pci, 1 << 0, "CS5530");
     99        if (err < 0)
     100                return err;
    135101        chip->pci_base = pci_resource_start(pci, 0);
    136 
     102#ifndef TARGET_OS2
     103        mem = pcim_iomap_table(pci)[0];
     104#else
    137105        mem = pci_ioremap_bar(pci, 0);
    138         if (mem == NULL) {
    139                 snd_cs5530_free(chip);
    140                 return -EBUSY;
    141         }
    142 
     106#endif
    143107        map = readw(mem + 0x18);
    144         iounmap(mem);
    145108
    146109        /* Map bits
     
    159122        else {
    160123                dev_err(card->dev, "Could not find XpressAudio!\n");
    161                 snd_cs5530_free(chip);
    162124                return -ENODEV;
    163125        }
     
    179141        else {
    180142                dev_err(card->dev, "No 16bit DMA enabled\n");
    181                 snd_cs5530_free(chip);
    182143                return -ENODEV;
    183144        }
     
    191152        else {
    192153                dev_err(card->dev, "No 8bit DMA enabled\n");
    193                 snd_cs5530_free(chip);
    194154                return -ENODEV;
    195155        }
     
    205165        else {
    206166                dev_err(card->dev, "SoundBlaster IRQ not set\n");
    207                 snd_cs5530_free(chip);
    208167                return -ENODEV;
    209168        }
     
    215174        if (err < 0) {
    216175                dev_err(card->dev, "Could not create SoundBlaster\n");
    217                 snd_cs5530_free(chip);
    218176                return err;
    219177        }
     
    222180        if (err < 0) {
    223181                dev_err(card->dev, "Could not create PCM\n");
    224                 snd_cs5530_free(chip);
    225182                return err;
    226183        }
     
    229186        if (err < 0) {
    230187                dev_err(card->dev, "Could not create Mixer\n");
    231                 snd_cs5530_free(chip);
    232                 return err;
    233         }
    234 
    235         err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
    236         if (err < 0) {
    237                 snd_cs5530_free(chip);
    238                 return err;
    239         }
    240 
    241         *rchip = chip;
     188                return err;
     189        }
     190
    242191        return 0;
    243192}
     
    248197        static int dev;
    249198        struct snd_card *card;
    250         struct snd_cs5530 *chip = NULL;
     199        struct snd_cs5530 *chip;
    251200        int err;
    252201
     
    258207        }
    259208
    260         err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
    261                            0, &card);
    262 
    263         if (err < 0)
    264                 return err;
    265 
    266         err = snd_cs5530_create(card, pci, &chip);
    267         if (err < 0) {
    268                 snd_card_free(card);
    269                 return err;
    270         }
     209        err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
     210                                sizeof(*chip), &card);
     211        if (err < 0)
     212                return err;
     213        chip = card->private_data;
     214
     215        err = snd_cs5530_create(card, pci);
     216        if (err < 0)
     217                return err;
    271218
    272219        strcpy(card->driver, "CS5530");
     
    275222
    276223        err = snd_card_register(card);
    277         if (err < 0) {
    278                 snd_card_free(card);
    279                 return err;
    280         }
     224        if (err < 0)
     225                return err;
    281226        pci_set_drvdata(pci, card);
    282227        dev++;
     
    288233        .id_table = snd_cs5530_ids,
    289234        .probe = snd_cs5530_probe,
    290         .remove = snd_cs5530_remove,
    291235};
    292236
Note: See TracChangeset for help on using the changeset viewer.