Ignore:
Timestamp:
Mar 18, 2021, 8:57:36 PM (5 years ago)
Author:
David Azarewicz
Message:

Merge changes from Paul's uniaud32next branch.

Location:
GPL/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk

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

    r598 r679  
     1// SPDX-License-Identifier: GPL-2.0-or-later
    12/*
    23 * cs5530.c - Initialisation code for Cyrix/NatSemi VSA1 softaudio
     
    2223 * on the XpressAudio(tm) internals.
    2324 *
    24  * This program is free software; you can redistribute it and/or modify it
    25  * under the terms of the GNU General Public License as published by the
    26  * Free Software Foundation; either version 2, or (at your option) any
    27  * later version.
    28  *
    29  * This program is distributed in the hope that it will be useful, but
    30  * WITHOUT ANY WARRANTY; without even the implied warranty of
    31  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    32  * General Public License for more details.
    33  *
    3425 * TO DO:
    3526 *      Investigate whether we can portably support Cognac (5520) in the
     
    3728 */
    3829
     30#ifdef TARGET_OS2
     31#define KBUILD_MODNAME "cs5530"
     32#endif
     33
    3934#include <linux/delay.h>
    40 #include <linux/moduleparam.h>
     35#include <linux/module.h>
    4136#include <linux/pci.h>
    4237#include <linux/slab.h>
     
    5146static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
    5247static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
    53 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
     48static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
     49
     50module_param_array(index, int, NULL, 0444);
     51MODULE_PARM_DESC(index, "Index value for CS5530 Audio driver.");
     52module_param_array(id, charp, NULL, 0444);
     53MODULE_PARM_DESC(id, "ID string for CS5530 Audio driver.");
     54module_param_array(enable, bool, NULL, 0444);
     55MODULE_PARM_DESC(enable, "Enable CS5530 Audio driver.");
    5456
    5557struct snd_cs5530 {
     
    6062};
    6163
    62 static DEFINE_PCI_DEVICE_TABLE(snd_cs5530_ids) = {
     64static const struct pci_device_id snd_cs5530_ids[] = {
    6365        {PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_AUDIO, PCI_ANY_ID,
    6466                                                        PCI_ANY_ID, 0, 0},
     
    8284}
    8385
    84 static void __devexit snd_cs5530_remove(struct pci_dev *pci)
     86static void snd_cs5530_remove(struct pci_dev *pci)
    8587{
    8688        snd_card_free(pci_get_drvdata(pci));
    87         pci_set_drvdata(pci, NULL);
    88 }
    89 
    90 static u8 __devinit snd_cs5530_mixer_read(unsigned long io, u8 reg)
     89}
     90
     91static u8 snd_cs5530_mixer_read(unsigned long io, u8 reg)
    9192{
    9293        outb(reg, io + 4);
     
    9798}
    9899
    99 static int __devinit snd_cs5530_create(struct snd_card *card,
    100                                        struct pci_dev *pci,
    101                                        struct snd_cs5530 **rchip)
     100static int snd_cs5530_create(struct snd_card *card,
     101                             struct pci_dev *pci,
     102                             struct snd_cs5530 **rchip)
    102103{
    103104        struct snd_cs5530 *chip;
     
    108109        int err;
    109110
    110         static struct snd_device_ops ops = {
     111        static const struct snd_device_ops ops = {
    111112                .dev_free = snd_cs5530_dev_free,
    112113        };
     
    136137        mem = pci_ioremap_bar(pci, 0);
    137138        if (mem == NULL) {
    138                 kfree(chip);
    139                 pci_disable_device(pci);
     139                snd_cs5530_free(chip);
    140140                return -EBUSY;
    141141        }
     
    156156
    157157        if (map & (1<<2))
    158                 printk(KERN_INFO "CS5530: XpressAudio at 0x%lx\n", sb_base);
    159         else {
    160                 printk(KERN_ERR "Could not find XpressAudio!\n");
     158                dev_info(card->dev, "XpressAudio at 0x%lx\n", sb_base);
     159        else {
     160                dev_err(card->dev, "Could not find XpressAudio!\n");
    161161                snd_cs5530_free(chip);
    162162                return -ENODEV;
     
    164164
    165165        if (map & (1<<5))
    166                 printk(KERN_INFO "CS5530: MPU at 0x300\n");
     166                dev_info(card->dev, "MPU at 0x300\n");
    167167        else if (map & (1<<6))
    168                 printk(KERN_INFO "CS5530: MPU at 0x330\n");
     168                dev_info(card->dev, "MPU at 0x330\n");
    169169
    170170        irq = snd_cs5530_mixer_read(sb_base, 0x80) & 0x0F;
     
    178178                dma16 = 7;
    179179        else {
    180                 printk(KERN_ERR "CS5530: No 16bit DMA enabled\n");
     180                dev_err(card->dev, "No 16bit DMA enabled\n");
    181181                snd_cs5530_free(chip);
    182182                return -ENODEV;
     
    190190                dma8 = 3;
    191191        else {
    192                 printk(KERN_ERR "CS5530: No 8bit DMA enabled\n");
     192                dev_err(card->dev, "No 8bit DMA enabled\n");
    193193                snd_cs5530_free(chip);
    194194                return -ENODEV;
     
    204204                irq = 10;
    205205        else {
    206                 printk(KERN_ERR "CS5530: SoundBlaster IRQ not set\n");
    207                 snd_cs5530_free(chip);
    208                 return -ENODEV;
    209         }
    210 
    211         printk(KERN_INFO "CS5530: IRQ: %d DMA8: %d DMA16: %d\n", irq, dma8,
    212                                                                         dma16);
     206                dev_err(card->dev, "SoundBlaster IRQ not set\n");
     207                snd_cs5530_free(chip);
     208                return -ENODEV;
     209        }
     210
     211        dev_info(card->dev, "IRQ: %d DMA8: %d DMA16: %d\n", irq, dma8, dma16);
    213212
    214213        err = snd_sbdsp_create(card, sb_base, irq, snd_sb16dsp_interrupt, dma8,
    215214                                                dma16, SB_HW_CS5530, &chip->sb);
    216215        if (err < 0) {
    217                 printk(KERN_ERR "CS5530: Could not create SoundBlaster\n");
    218                 snd_cs5530_free(chip);
    219                 return err;
    220         }
    221 
    222         err = snd_sb16dsp_pcm(chip->sb, 0, &chip->sb->pcm);
    223         if (err < 0) {
    224                 printk(KERN_ERR "CS5530: Could not create PCM\n");
     216                dev_err(card->dev, "Could not create SoundBlaster\n");
     217                snd_cs5530_free(chip);
     218                return err;
     219        }
     220
     221        err = snd_sb16dsp_pcm(chip->sb, 0);
     222        if (err < 0) {
     223                dev_err(card->dev, "Could not create PCM\n");
    225224                snd_cs5530_free(chip);
    226225                return err;
     
    229228        err = snd_sbmixer_new(chip->sb);
    230229        if (err < 0) {
    231                 printk(KERN_ERR "CS5530: Could not create Mixer\n");
     230                dev_err(card->dev, "Could not create Mixer\n");
    232231                snd_cs5530_free(chip);
    233232                return err;
     
    240239        }
    241240
    242         snd_card_set_dev(card, &pci->dev);
    243241        *rchip = chip;
    244242        return 0;
    245243}
    246244
    247 static int __devinit snd_cs5530_probe(struct pci_dev *pci,
    248                                         const struct pci_device_id *pci_id)
     245static int snd_cs5530_probe(struct pci_dev *pci,
     246                            const struct pci_device_id *pci_id)
    249247{
    250248        static int dev;
     
    260258        }
    261259
    262         err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
     260        err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
     261                           0, &card);
    263262
    264263        if (err < 0)
     
    285284}
    286285
    287 static struct pci_driver driver = {
    288         .name = "CS5530_Audio",
     286static struct pci_driver cs5530_driver = {
     287        .name = KBUILD_MODNAME,
    289288        .id_table = snd_cs5530_ids,
    290289        .probe = snd_cs5530_probe,
    291         .remove = __devexit_p(snd_cs5530_remove),
     290        .remove = snd_cs5530_remove,
    292291};
    293292
    294 static int __init alsa_card_cs5530_init(void)
    295 {
    296         return pci_register_driver(&driver);
    297 }
    298 
    299 static void __exit alsa_card_cs5530_exit(void)
    300 {
    301         pci_unregister_driver(&driver);
    302 }
    303 
    304 module_init(alsa_card_cs5530_init)
    305 module_exit(alsa_card_cs5530_exit)
    306 
     293module_pci_driver(cs5530_driver);
Note: See TracChangeset for help on using the changeset viewer.