Changeset 679 for GPL/trunk/alsa-kernel/pci/cs5530.c
- Timestamp:
- Mar 18, 2021, 8:57:36 PM (5 years ago)
- Location:
- GPL/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk
- Property svn:mergeinfo changed
/GPL/branches/uniaud32-linux-3.2.102 (added) merged: 611-614 /GPL/branches/uniaud32-next (added) merged: 615-678
- Property svn:mergeinfo changed
-
GPL/trunk/alsa-kernel/pci/cs5530.c
r598 r679 1 // SPDX-License-Identifier: GPL-2.0-or-later 1 2 /* 2 3 * cs5530.c - Initialisation code for Cyrix/NatSemi VSA1 softaudio … … 22 23 * on the XpressAudio(tm) internals. 23 24 * 24 * This program is free software; you can redistribute it and/or modify it25 * under the terms of the GNU General Public License as published by the26 * Free Software Foundation; either version 2, or (at your option) any27 * later version.28 *29 * This program is distributed in the hope that it will be useful, but30 * WITHOUT ANY WARRANTY; without even the implied warranty of31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU32 * General Public License for more details.33 *34 25 * TO DO: 35 26 * Investigate whether we can portably support Cognac (5520) in the … … 37 28 */ 38 29 30 #ifdef TARGET_OS2 31 #define KBUILD_MODNAME "cs5530" 32 #endif 33 39 34 #include <linux/delay.h> 40 #include <linux/module param.h>35 #include <linux/module.h> 41 36 #include <linux/pci.h> 42 37 #include <linux/slab.h> … … 51 46 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; 52 47 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; 53 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; 48 static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; 49 50 module_param_array(index, int, NULL, 0444); 51 MODULE_PARM_DESC(index, "Index value for CS5530 Audio driver."); 52 module_param_array(id, charp, NULL, 0444); 53 MODULE_PARM_DESC(id, "ID string for CS5530 Audio driver."); 54 module_param_array(enable, bool, NULL, 0444); 55 MODULE_PARM_DESC(enable, "Enable CS5530 Audio driver."); 54 56 55 57 struct snd_cs5530 { … … 60 62 }; 61 63 62 static DEFINE_PCI_DEVICE_TABLE(snd_cs5530_ids)= {64 static const struct pci_device_id snd_cs5530_ids[] = { 63 65 {PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_AUDIO, PCI_ANY_ID, 64 66 PCI_ANY_ID, 0, 0}, … … 82 84 } 83 85 84 static void __devexitsnd_cs5530_remove(struct pci_dev *pci)86 static void snd_cs5530_remove(struct pci_dev *pci) 85 87 { 86 88 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 91 static u8 snd_cs5530_mixer_read(unsigned long io, u8 reg) 91 92 { 92 93 outb(reg, io + 4); … … 97 98 } 98 99 99 static int __devinitsnd_cs5530_create(struct snd_card *card,100 101 100 static int snd_cs5530_create(struct snd_card *card, 101 struct pci_dev *pci, 102 struct snd_cs5530 **rchip) 102 103 { 103 104 struct snd_cs5530 *chip; … … 108 109 int err; 109 110 110 static struct snd_device_ops ops = {111 static const struct snd_device_ops ops = { 111 112 .dev_free = snd_cs5530_dev_free, 112 113 }; … … 136 137 mem = pci_ioremap_bar(pci, 0); 137 138 if (mem == NULL) { 138 kfree(chip); 139 pci_disable_device(pci); 139 snd_cs5530_free(chip); 140 140 return -EBUSY; 141 141 } … … 156 156 157 157 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"); 161 161 snd_cs5530_free(chip); 162 162 return -ENODEV; … … 164 164 165 165 if (map & (1<<5)) 166 printk(KERN_INFO "CS5530:MPU at 0x300\n");166 dev_info(card->dev, "MPU at 0x300\n"); 167 167 else if (map & (1<<6)) 168 printk(KERN_INFO "CS5530:MPU at 0x330\n");168 dev_info(card->dev, "MPU at 0x330\n"); 169 169 170 170 irq = snd_cs5530_mixer_read(sb_base, 0x80) & 0x0F; … … 178 178 dma16 = 7; 179 179 else { 180 printk(KERN_ERR "CS5530:No 16bit DMA enabled\n");180 dev_err(card->dev, "No 16bit DMA enabled\n"); 181 181 snd_cs5530_free(chip); 182 182 return -ENODEV; … … 190 190 dma8 = 3; 191 191 else { 192 printk(KERN_ERR "CS5530:No 8bit DMA enabled\n");192 dev_err(card->dev, "No 8bit DMA enabled\n"); 193 193 snd_cs5530_free(chip); 194 194 return -ENODEV; … … 204 204 irq = 10; 205 205 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); 213 212 214 213 err = snd_sbdsp_create(card, sb_base, irq, snd_sb16dsp_interrupt, dma8, 215 214 dma16, SB_HW_CS5530, &chip->sb); 216 215 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"); 225 224 snd_cs5530_free(chip); 226 225 return err; … … 229 228 err = snd_sbmixer_new(chip->sb); 230 229 if (err < 0) { 231 printk(KERN_ERR "CS5530:Could not create Mixer\n");230 dev_err(card->dev, "Could not create Mixer\n"); 232 231 snd_cs5530_free(chip); 233 232 return err; … … 240 239 } 241 240 242 snd_card_set_dev(card, &pci->dev);243 241 *rchip = chip; 244 242 return 0; 245 243 } 246 244 247 static int __devinitsnd_cs5530_probe(struct pci_dev *pci,248 245 static int snd_cs5530_probe(struct pci_dev *pci, 246 const struct pci_device_id *pci_id) 249 247 { 250 248 static int dev; … … 260 258 } 261 259 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); 263 262 264 263 if (err < 0) … … 285 284 } 286 285 287 static struct pci_driver driver = {288 .name = "CS5530_Audio",286 static struct pci_driver cs5530_driver = { 287 .name = KBUILD_MODNAME, 289 288 .id_table = snd_cs5530_ids, 290 289 .probe = snd_cs5530_probe, 291 .remove = __devexit_p(snd_cs5530_remove),290 .remove = snd_cs5530_remove, 292 291 }; 293 292 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 293 module_pci_driver(cs5530_driver);
Note:
See TracChangeset
for help on using the changeset viewer.