diff options
Diffstat (limited to 'sound/isa/wavefront')
-rw-r--r-- | sound/isa/wavefront/wavefront.c | 61 |
1 files changed, 31 insertions, 30 deletions
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c index 2fb058b5a45f..4c095bc7c729 100644 --- a/sound/isa/wavefront/wavefront.c +++ b/sound/isa/wavefront/wavefront.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * ALSA card-level driver for Turtle Beach Wavefront cards | 2 | * ALSA card-level driver for Turtle Beach Wavefront cards |
3 | * (Maui,Tropez,Tropez+) | 3 | * (Maui,Tropez,Tropez+) |
4 | * | 4 | * |
5 | * Copyright (c) 1997-1999 by Paul Barton-Davis <pbd@op.net> | 5 | * Copyright (c) 1997-1999 by Paul Barton-Davis <pbd@op.net> |
6 | * | 6 | * |
@@ -320,8 +320,8 @@ snd_wavefront_new_midi (struct snd_card *card, | |||
320 | snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT, &snd_wavefront_midi_input); | 320 | snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT, &snd_wavefront_midi_input); |
321 | 321 | ||
322 | rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT | | 322 | rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT | |
323 | SNDRV_RAWMIDI_INFO_INPUT | | 323 | SNDRV_RAWMIDI_INFO_INPUT | |
324 | SNDRV_RAWMIDI_INFO_DUPLEX; | 324 | SNDRV_RAWMIDI_INFO_DUPLEX; |
325 | 325 | ||
326 | return rmidi; | 326 | return rmidi; |
327 | } | 327 | } |
@@ -364,7 +364,7 @@ static int __devinit | |||
364 | snd_wavefront_probe (struct snd_card *card, int dev) | 364 | snd_wavefront_probe (struct snd_card *card, int dev) |
365 | { | 365 | { |
366 | snd_wavefront_card_t *acard = card->private_data; | 366 | snd_wavefront_card_t *acard = card->private_data; |
367 | struct snd_cs4231 *chip; | 367 | struct snd_wss *chip; |
368 | struct snd_hwdep *wavefront_synth; | 368 | struct snd_hwdep *wavefront_synth; |
369 | struct snd_rawmidi *ics2115_internal_rmidi = NULL; | 369 | struct snd_rawmidi *ics2115_internal_rmidi = NULL; |
370 | struct snd_rawmidi *ics2115_external_rmidi = NULL; | 370 | struct snd_rawmidi *ics2115_external_rmidi = NULL; |
@@ -373,21 +373,20 @@ snd_wavefront_probe (struct snd_card *card, int dev) | |||
373 | 373 | ||
374 | /* --------- PCM --------------- */ | 374 | /* --------- PCM --------------- */ |
375 | 375 | ||
376 | if ((err = snd_cs4231_create (card, | 376 | err = snd_wss_create(card, cs4232_pcm_port[dev], -1, |
377 | cs4232_pcm_port[dev], | 377 | cs4232_pcm_irq[dev], dma1[dev], dma2[dev], |
378 | -1, | 378 | WSS_HW_DETECT, 0, &chip); |
379 | cs4232_pcm_irq[dev], | 379 | if (err < 0) { |
380 | dma1[dev], | 380 | snd_printk(KERN_ERR "can't allocate WSS device\n"); |
381 | dma2[dev], | ||
382 | CS4231_HW_DETECT, 0, &chip)) < 0) { | ||
383 | snd_printk (KERN_ERR "can't allocate CS4231 device\n"); | ||
384 | return err; | 381 | return err; |
385 | } | 382 | } |
386 | 383 | ||
387 | if ((err = snd_cs4231_pcm (chip, 0, NULL)) < 0) | 384 | err = snd_wss_pcm(chip, 0, NULL); |
385 | if (err < 0) | ||
388 | return err; | 386 | return err; |
389 | 387 | ||
390 | if ((err = snd_cs4231_timer (chip, 0, NULL)) < 0) | 388 | err = snd_wss_timer(chip, 0, NULL); |
389 | if (err < 0) | ||
391 | return err; | 390 | return err; |
392 | 391 | ||
393 | /* ---------- OPL3 synth --------- */ | 392 | /* ---------- OPL3 synth --------- */ |
@@ -395,24 +394,24 @@ snd_wavefront_probe (struct snd_card *card, int dev) | |||
395 | if (fm_port[dev] > 0 && fm_port[dev] != SNDRV_AUTO_PORT) { | 394 | if (fm_port[dev] > 0 && fm_port[dev] != SNDRV_AUTO_PORT) { |
396 | struct snd_opl3 *opl3; | 395 | struct snd_opl3 *opl3; |
397 | 396 | ||
398 | if ((err = snd_opl3_create(card, | 397 | err = snd_opl3_create(card, fm_port[dev], fm_port[dev] + 2, |
399 | fm_port[dev], | 398 | OPL3_HW_OPL3_CS, 0, &opl3); |
400 | fm_port[dev] + 2, | 399 | if (err < 0) { |
401 | OPL3_HW_OPL3_CS, | ||
402 | 0, &opl3)) < 0) { | ||
403 | snd_printk (KERN_ERR "can't allocate or detect OPL3 synth\n"); | 400 | snd_printk (KERN_ERR "can't allocate or detect OPL3 synth\n"); |
404 | return err; | 401 | return err; |
405 | } | 402 | } |
406 | 403 | ||
407 | if ((err = snd_opl3_hwdep_new(opl3, hw_dev, 1, NULL)) < 0) | 404 | err = snd_opl3_hwdep_new(opl3, hw_dev, 1, NULL); |
405 | if (err < 0) | ||
408 | return err; | 406 | return err; |
409 | hw_dev++; | 407 | hw_dev++; |
410 | } | 408 | } |
411 | 409 | ||
412 | /* ------- ICS2115 Wavetable synth ------- */ | 410 | /* ------- ICS2115 Wavetable synth ------- */ |
413 | 411 | ||
414 | if ((acard->wavefront.res_base = request_region(ics2115_port[dev], 16, | 412 | acard->wavefront.res_base = request_region(ics2115_port[dev], 16, |
415 | "ICS2115")) == NULL) { | 413 | "ICS2115"); |
414 | if (acard->wavefront.res_base == NULL) { | ||
416 | snd_printk(KERN_ERR "unable to grab ICS2115 i/o region 0x%lx-0x%lx\n", | 415 | snd_printk(KERN_ERR "unable to grab ICS2115 i/o region 0x%lx-0x%lx\n", |
417 | ics2115_port[dev], ics2115_port[dev] + 16 - 1); | 416 | ics2115_port[dev], ics2115_port[dev] + 16 - 1); |
418 | return -EBUSY; | 417 | return -EBUSY; |
@@ -426,7 +425,8 @@ snd_wavefront_probe (struct snd_card *card, int dev) | |||
426 | acard->wavefront.irq = ics2115_irq[dev]; | 425 | acard->wavefront.irq = ics2115_irq[dev]; |
427 | acard->wavefront.base = ics2115_port[dev]; | 426 | acard->wavefront.base = ics2115_port[dev]; |
428 | 427 | ||
429 | if ((wavefront_synth = snd_wavefront_new_synth (card, hw_dev, acard)) == NULL) { | 428 | wavefront_synth = snd_wavefront_new_synth(card, hw_dev, acard); |
429 | if (wavefront_synth == NULL) { | ||
430 | snd_printk (KERN_ERR "can't create WaveFront synth device\n"); | 430 | snd_printk (KERN_ERR "can't create WaveFront synth device\n"); |
431 | return -ENOMEM; | 431 | return -ENOMEM; |
432 | } | 432 | } |
@@ -437,7 +437,8 @@ snd_wavefront_probe (struct snd_card *card, int dev) | |||
437 | 437 | ||
438 | /* --------- Mixer ------------ */ | 438 | /* --------- Mixer ------------ */ |
439 | 439 | ||
440 | if ((err = snd_cs4231_mixer(chip)) < 0) { | 440 | err = snd_wss_mixer(chip); |
441 | if (err < 0) { | ||
441 | snd_printk (KERN_ERR "can't allocate mixer device\n"); | 442 | snd_printk (KERN_ERR "can't allocate mixer device\n"); |
442 | return err; | 443 | return err; |
443 | } | 444 | } |
@@ -445,11 +446,11 @@ snd_wavefront_probe (struct snd_card *card, int dev) | |||
445 | /* -------- CS4232 MPU-401 interface -------- */ | 446 | /* -------- CS4232 MPU-401 interface -------- */ |
446 | 447 | ||
447 | if (cs4232_mpu_port[dev] > 0 && cs4232_mpu_port[dev] != SNDRV_AUTO_PORT) { | 448 | if (cs4232_mpu_port[dev] > 0 && cs4232_mpu_port[dev] != SNDRV_AUTO_PORT) { |
448 | if ((err = snd_mpu401_uart_new(card, midi_dev, MPU401_HW_CS4232, | 449 | err = snd_mpu401_uart_new(card, midi_dev, MPU401_HW_CS4232, |
449 | cs4232_mpu_port[dev], 0, | 450 | cs4232_mpu_port[dev], 0, |
450 | cs4232_mpu_irq[dev], | 451 | cs4232_mpu_irq[dev], IRQF_DISABLED, |
451 | IRQF_DISABLED, | 452 | NULL); |
452 | NULL)) < 0) { | 453 | if (err < 0) { |
453 | snd_printk (KERN_ERR "can't allocate CS4232 MPU-401 device\n"); | 454 | snd_printk (KERN_ERR "can't allocate CS4232 MPU-401 device\n"); |
454 | return err; | 455 | return err; |
455 | } | 456 | } |
@@ -602,7 +603,7 @@ static struct isa_driver snd_wavefront_driver = { | |||
602 | 603 | ||
603 | #ifdef CONFIG_PNP | 604 | #ifdef CONFIG_PNP |
604 | static int __devinit snd_wavefront_pnp_detect(struct pnp_card_link *pcard, | 605 | static int __devinit snd_wavefront_pnp_detect(struct pnp_card_link *pcard, |
605 | const struct pnp_card_device_id *pid) | 606 | const struct pnp_card_device_id *pid) |
606 | { | 607 | { |
607 | static int dev; | 608 | static int dev; |
608 | struct snd_card *card; | 609 | struct snd_card *card; |