Changeset 615 for GPL/branches/uniaud32-next/alsa-kernel/pci/cs5530.c
- Timestamp:
- Jan 1, 2021, 5:31:48 AM (5 years ago)
- Location:
- GPL/branches/uniaud32-next
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
GPL/branches/uniaud32-next/alsa-kernel/pci/cs5530.c
r612 r615 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 … … 55 46 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; 56 47 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; 57 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."); 58 56 59 57 struct snd_cs5530 { … … 64 62 }; 65 63 66 static DEFINE_PCI_DEVICE_TABLE(snd_cs5530_ids)= {64 static const struct pci_device_id snd_cs5530_ids[] = { 67 65 {PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_AUDIO, PCI_ANY_ID, 68 66 PCI_ANY_ID, 0, 0}, … … 86 84 } 87 85 88 static void __devexitsnd_cs5530_remove(struct pci_dev *pci)86 static void snd_cs5530_remove(struct pci_dev *pci) 89 87 { 90 88 snd_card_free(pci_get_drvdata(pci)); 91 pci_set_drvdata(pci, NULL); 92 } 93 94 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) 95 92 { 96 93 outb(reg, io + 4); … … 101 98 } 102 99 103 static int __devinitsnd_cs5530_create(struct snd_card *card,104 105 100 static int snd_cs5530_create(struct snd_card *card, 101 struct pci_dev *pci, 102 struct snd_cs5530 **rchip) 106 103 { 107 104 struct snd_cs5530 *chip; … … 140 137 mem = pci_ioremap_bar(pci, 0); 141 138 if (mem == NULL) { 142 kfree(chip); 143 pci_disable_device(pci); 139 snd_cs5530_free(chip); 144 140 return -EBUSY; 145 141 } … … 160 156 161 157 if (map & (1<<2)) 162 printk(KERN_INFO "CS5530:XpressAudio at 0x%lx\n", sb_base);163 else { 164 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"); 165 161 snd_cs5530_free(chip); 166 162 return -ENODEV; … … 168 164 169 165 if (map & (1<<5)) 170 printk(KERN_INFO "CS5530:MPU at 0x300\n");166 dev_info(card->dev, "MPU at 0x300\n"); 171 167 else if (map & (1<<6)) 172 printk(KERN_INFO "CS5530:MPU at 0x330\n");168 dev_info(card->dev, "MPU at 0x330\n"); 173 169 174 170 irq = snd_cs5530_mixer_read(sb_base, 0x80) & 0x0F; … … 182 178 dma16 = 7; 183 179 else { 184 printk(KERN_ERR "CS5530:No 16bit DMA enabled\n");180 dev_err(card->dev, "No 16bit DMA enabled\n"); 185 181 snd_cs5530_free(chip); 186 182 return -ENODEV; … … 194 190 dma8 = 3; 195 191 else { 196 printk(KERN_ERR "CS5530:No 8bit DMA enabled\n");192 dev_err(card->dev, "No 8bit DMA enabled\n"); 197 193 snd_cs5530_free(chip); 198 194 return -ENODEV; … … 208 204 irq = 10; 209 205 else { 210 printk(KERN_ERR "CS5530: SoundBlaster IRQ not set\n"); 211 snd_cs5530_free(chip); 212 return -ENODEV; 213 } 214 215 printk(KERN_INFO "CS5530: IRQ: %d DMA8: %d DMA16: %d\n", irq, dma8, 216 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); 217 212 218 213 err = snd_sbdsp_create(card, sb_base, irq, snd_sb16dsp_interrupt, dma8, 219 214 dma16, SB_HW_CS5530, &chip->sb); 220 215 if (err < 0) { 221 printk(KERN_ERR "CS5530:Could not create SoundBlaster\n");222 snd_cs5530_free(chip); 223 return err; 224 } 225 226 err = snd_sb16dsp_pcm(chip->sb, 0 , &chip->sb->pcm);227 if (err < 0) { 228 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"); 229 224 snd_cs5530_free(chip); 230 225 return err; … … 233 228 err = snd_sbmixer_new(chip->sb); 234 229 if (err < 0) { 235 printk(KERN_ERR "CS5530:Could not create Mixer\n");230 dev_err(card->dev, "Could not create Mixer\n"); 236 231 snd_cs5530_free(chip); 237 232 return err; … … 244 239 } 245 240 246 snd_card_set_dev(card, &pci->dev);247 241 *rchip = chip; 248 242 return 0; 249 243 } 250 244 251 static int __devinitsnd_cs5530_probe(struct pci_dev *pci,252 245 static int snd_cs5530_probe(struct pci_dev *pci, 246 const struct pci_device_id *pci_id) 253 247 { 254 248 static int dev; … … 264 258 } 265 259 266 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); 267 262 268 263 if (err < 0) … … 289 284 } 290 285 291 static struct pci_driver driver = {286 static struct pci_driver cs5530_driver = { 292 287 .name = KBUILD_MODNAME, 293 288 .id_table = snd_cs5530_ids, 294 289 .probe = snd_cs5530_probe, 295 .remove = __devexit_p(snd_cs5530_remove),290 .remove = snd_cs5530_remove, 296 291 }; 297 292 298 static int __init alsa_card_cs5530_init(void) 299 { 300 return pci_register_driver(&driver); 301 } 302 303 static void __exit alsa_card_cs5530_exit(void) 304 { 305 pci_unregister_driver(&driver); 306 } 307 308 module_init(alsa_card_cs5530_init) 309 module_exit(alsa_card_cs5530_exit) 310 293 module_pci_driver(cs5530_driver);
Note:
See TracChangeset
for help on using the changeset viewer.