Lines Matching +full:bank +full:- +full:ioport
1 // SPDX-License-Identifier: GPL-2.0-or-later
16 * the following is a copy of the 2.4.18 OSS FREE file-heading comment:
21 * -- If MSND_CLASSIC is defined:
23 * -> driver for Turtle Beach Classic/Monterey/Tahiti
25 * -- Else
27 * -> driver for Turtle Beach Pinnacle/Fiji
29 * 12-3-2000 Modified IO port validation Steve Sycamore
40 #include <linux/ioport.h>
62 # define DEV_NAME "msnd-classic"
66 # define DEV_NAME "msnd-pinnacle"
71 chip->play_sample_size = snd_pcm_format_width(DEFSAMPLESIZE); in set_default_audio_parameters()
72 chip->play_sample_rate = DEFSAMPLERATE; in set_default_audio_parameters()
73 chip->play_channels = DEFCHANNELS; in set_default_audio_parameters()
74 chip->capture_sample_size = snd_pcm_format_width(DEFSAMPLESIZE); in set_default_audio_parameters()
75 chip->capture_sample_rate = DEFSAMPLERATE; in set_default_audio_parameters()
76 chip->capture_channels = DEFCHANNELS; in set_default_audio_parameters()
83 if (chip->banksPlayed < 3) in snd_msnd_eval_dsp_msg()
84 dev_dbg(chip->card->dev, "%08X: HIMT_PLAY_DONE: %i\n", in snd_msnd_eval_dsp_msg()
87 if (chip->last_playbank == LOBYTE(wMessage)) { in snd_msnd_eval_dsp_msg()
88 dev_dbg(chip->card->dev, in snd_msnd_eval_dsp_msg()
92 chip->banksPlayed++; in snd_msnd_eval_dsp_msg()
94 if (test_bit(F_WRITING, &chip->flags)) in snd_msnd_eval_dsp_msg()
97 chip->last_playbank = LOBYTE(wMessage); in snd_msnd_eval_dsp_msg()
98 chip->playDMAPos += chip->play_period_bytes; in snd_msnd_eval_dsp_msg()
99 if (chip->playDMAPos > chip->playLimit) in snd_msnd_eval_dsp_msg()
100 chip->playDMAPos = 0; in snd_msnd_eval_dsp_msg()
101 snd_pcm_period_elapsed(chip->playback_substream); in snd_msnd_eval_dsp_msg()
106 if (chip->last_recbank == LOBYTE(wMessage)) in snd_msnd_eval_dsp_msg()
108 chip->last_recbank = LOBYTE(wMessage); in snd_msnd_eval_dsp_msg()
109 chip->captureDMAPos += chip->capturePeriodBytes; in snd_msnd_eval_dsp_msg()
110 if (chip->captureDMAPos > (chip->captureLimit)) in snd_msnd_eval_dsp_msg()
111 chip->captureDMAPos = 0; in snd_msnd_eval_dsp_msg()
113 if (test_bit(F_READING, &chip->flags)) in snd_msnd_eval_dsp_msg()
114 snd_msnd_DARQ(chip, chip->last_recbank); in snd_msnd_eval_dsp_msg()
116 snd_pcm_period_elapsed(chip->capture_substream); in snd_msnd_eval_dsp_msg()
125 dev_dbg(chip->card->dev, in snd_msnd_eval_dsp_msg()
127 chip->banksPlayed); in snd_msnd_eval_dsp_msg()
128 if (chip->banksPlayed > 2) in snd_msnd_eval_dsp_msg()
129 clear_bit(F_WRITING, &chip->flags); in snd_msnd_eval_dsp_msg()
133 dev_dbg(chip->card->dev, LOGNAME ": Record overflow\n"); in snd_msnd_eval_dsp_msg()
134 clear_bit(F_READING, &chip->flags); in snd_msnd_eval_dsp_msg()
138 dev_dbg(chip->card->dev, LOGNAME in snd_msnd_eval_dsp_msg()
146 if (chip->msndmidi_mpu) in snd_msnd_eval_dsp_msg()
147 snd_msndmidi_input_read(chip->msndmidi_mpu); in snd_msnd_eval_dsp_msg()
151 dev_dbg(chip->card->dev, LOGNAME ": HIMT message %d 0x%02x\n", in snd_msnd_eval_dsp_msg()
160 void __iomem *pwDSPQData = chip->mappedbase + DSPQ_DATA_BUFF; in snd_msnd_interrupt()
164 /* inb(chip->io + HP_RXL); */ in snd_msnd_interrupt()
167 head = readw(chip->DSPQ + JQS_wHead); in snd_msnd_interrupt()
168 tail = readw(chip->DSPQ + JQS_wTail); in snd_msnd_interrupt()
169 size = readw(chip->DSPQ + JQS_wSize); in snd_msnd_interrupt()
176 writew(head, chip->DSPQ + JQS_wHead); in snd_msnd_interrupt()
180 inb(chip->io + HP_RXL); in snd_msnd_interrupt()
187 long io = chip->io; in snd_msnd_reset_dsp()
198 while (timeout-- > 0) { in snd_msnd_reset_dsp()
203 dev_err(chip->card->dev, LOGNAME ": Cannot reset DSP\n"); in snd_msnd_reset_dsp()
205 return -EIO; in snd_msnd_reset_dsp()
210 struct snd_msnd *chip = card->private_data; in snd_msnd_probe()
218 if (!request_region(chip->io, DSP_NUMIO, "probing")) { in snd_msnd_probe()
219 dev_err(card->dev, LOGNAME ": I/O port conflict\n"); in snd_msnd_probe()
220 return -ENODEV; in snd_msnd_probe()
224 release_region(chip->io, DSP_NUMIO); in snd_msnd_probe()
225 return -ENODEV; in snd_msnd_probe()
229 strcpy(card->shortname, "Classic/Tahiti/Monterey"); in snd_msnd_probe()
230 strcpy(card->longname, "Turtle Beach Multisound"); in snd_msnd_probe()
231 dev_info(card->dev, LOGNAME ": %s, " in snd_msnd_probe()
232 "I/O 0x%lx-0x%lx, IRQ %d, memory mapped to 0x%lX-0x%lX\n", in snd_msnd_probe()
233 card->shortname, in snd_msnd_probe()
234 chip->io, chip->io + DSP_NUMIO - 1, in snd_msnd_probe()
235 chip->irq, in snd_msnd_probe()
236 chip->base, chip->base + 0x7fff); in snd_msnd_probe()
259 strcpy(card->shortname, pin); in snd_msnd_probe()
263 strcpy(card->shortname, pin); in snd_msnd_probe()
267 strcpy(card->shortname, pin); in snd_msnd_probe()
271 strcpy(card->shortname, pin); in snd_msnd_probe()
275 strcpy(card->shortname, fiji); in snd_msnd_probe()
279 strcpy(card->shortname, fiji); in snd_msnd_probe()
283 strcpy(card->shortname, fiji); in snd_msnd_probe()
286 rev = "A-B (Fiji) or A-E (Pinnacle)"; in snd_msnd_probe()
287 strcpy(card->shortname, pinfiji); in snd_msnd_probe()
290 strcpy(card->longname, "Turtle Beach Multisound Pinnacle"); in snd_msnd_probe()
291 dev_info(card->dev, LOGNAME ": %s revision %s, Xilinx version %s, " in snd_msnd_probe()
292 "I/O 0x%lx-0x%lx, IRQ %d, memory mapped to 0x%lX-0x%lX\n", in snd_msnd_probe()
293 card->shortname, in snd_msnd_probe()
295 chip->io, chip->io + DSP_NUMIO - 1, in snd_msnd_probe()
296 chip->irq, in snd_msnd_probe()
297 chip->base, chip->base + 0x7fff); in snd_msnd_probe()
300 release_region(chip->io, DSP_NUMIO); in snd_msnd_probe()
311 outb(chip->memid, chip->io + HP_MEMM); in snd_msnd_init_sma()
313 outb(HPBLKSEL_0, chip->io + HP_BLKS); in snd_msnd_init_sma()
315 chip->SMA = chip->mappedbase + SMA_STRUCT_START; in snd_msnd_init_sma()
318 mastVolLeft = readw(chip->SMA + SMA_wCurrMastVolLeft); in snd_msnd_init_sma()
319 mastVolRight = readw(chip->SMA + SMA_wCurrMastVolRight); in snd_msnd_init_sma()
322 memset_io(chip->mappedbase, 0, 0x8000); in snd_msnd_init_sma()
324 /* Critical section: bank 1 access */ in snd_msnd_init_sma()
325 spin_lock_irqsave(&chip->lock, flags); in snd_msnd_init_sma()
326 outb(HPBLKSEL_1, chip->io + HP_BLKS); in snd_msnd_init_sma()
327 memset_io(chip->mappedbase, 0, 0x8000); in snd_msnd_init_sma()
328 outb(HPBLKSEL_0, chip->io + HP_BLKS); in snd_msnd_init_sma()
329 spin_unlock_irqrestore(&chip->lock, flags); in snd_msnd_init_sma()
332 chip->DAPQ = chip->mappedbase + DAPQ_OFFSET; in snd_msnd_init_sma()
333 snd_msnd_init_queue(chip->DAPQ, DAPQ_DATA_BUFF, DAPQ_BUFF_SIZE); in snd_msnd_init_sma()
336 chip->DARQ = chip->mappedbase + DARQ_OFFSET; in snd_msnd_init_sma()
337 snd_msnd_init_queue(chip->DARQ, DARQ_DATA_BUFF, DARQ_BUFF_SIZE); in snd_msnd_init_sma()
340 chip->MODQ = chip->mappedbase + MODQ_OFFSET; in snd_msnd_init_sma()
341 snd_msnd_init_queue(chip->MODQ, MODQ_DATA_BUFF, MODQ_BUFF_SIZE); in snd_msnd_init_sma()
344 chip->MIDQ = chip->mappedbase + MIDQ_OFFSET; in snd_msnd_init_sma()
345 snd_msnd_init_queue(chip->MIDQ, MIDQ_DATA_BUFF, MIDQ_BUFF_SIZE); in snd_msnd_init_sma()
347 /* DSP -> host message queue */ in snd_msnd_init_sma()
348 chip->DSPQ = chip->mappedbase + DSPQ_OFFSET; in snd_msnd_init_sma()
349 snd_msnd_init_queue(chip->DSPQ, DSPQ_DATA_BUFF, DSPQ_BUFF_SIZE); in snd_msnd_init_sma()
353 writew(1, chip->SMA + SMA_wCurrPlayFormat); in snd_msnd_init_sma()
354 writew(chip->play_sample_size, chip->SMA + SMA_wCurrPlaySampleSize); in snd_msnd_init_sma()
355 writew(chip->play_channels, chip->SMA + SMA_wCurrPlayChannels); in snd_msnd_init_sma()
356 writew(chip->play_sample_rate, chip->SMA + SMA_wCurrPlaySampleRate); in snd_msnd_init_sma()
358 writew(chip->play_sample_rate, chip->SMA + SMA_wCalFreqAtoD); in snd_msnd_init_sma()
359 writew(mastVolLeft, chip->SMA + SMA_wCurrMastVolLeft); in snd_msnd_init_sma()
360 writew(mastVolRight, chip->SMA + SMA_wCurrMastVolRight); in snd_msnd_init_sma()
362 writel(0x00010000, chip->SMA + SMA_dwCurrPlayPitch); in snd_msnd_init_sma()
363 writel(0x00000001, chip->SMA + SMA_dwCurrPlayRate); in snd_msnd_init_sma()
365 writew(0x303, chip->SMA + SMA_wCurrInputTagBits); in snd_msnd_init_sma()
375 struct snd_msnd *chip = card->private_data; in upload_dsp_code()
379 outb(HPBLKSEL_0, chip->io + HP_BLKS); in upload_dsp_code()
381 err = request_firmware(&init_fw, INITCODEFILE, card->dev); in upload_dsp_code()
383 dev_err(card->dev, LOGNAME ": Error loading " INITCODEFILE); in upload_dsp_code()
386 err = request_firmware(&perm_fw, PERMCODEFILE, card->dev); in upload_dsp_code()
388 dev_err(card->dev, LOGNAME ": Error loading " PERMCODEFILE); in upload_dsp_code()
392 memcpy_toio(chip->mappedbase, perm_fw->data, perm_fw->size); in upload_dsp_code()
393 if (snd_msnd_upload_host(chip, init_fw->data, init_fw->size) < 0) { in upload_dsp_code()
394 dev_warn(card->dev, LOGNAME ": Error uploading to DSP\n"); in upload_dsp_code()
395 err = -ENODEV; in upload_dsp_code()
398 dev_info(card->dev, LOGNAME ": DSP firmware uploaded\n"); in upload_dsp_code()
411 outb(HPPRORESET_ON, chip->io + HP_PROR); in reset_proteus()
413 outb(HPPRORESET_OFF, chip->io + HP_PROR); in reset_proteus()
420 struct snd_msnd *chip = card->private_data; in snd_msnd_initialize()
424 outb(HPWAITSTATE_0, chip->io + HP_WAIT); in snd_msnd_initialize()
425 outb(HPBITMODE_16, chip->io + HP_BITM); in snd_msnd_initialize()
431 dev_warn(card->dev, LOGNAME ": Cannot initialize SMA\n"); in snd_msnd_initialize()
441 dev_warn(card->dev, LOGNAME ": Cannot upload DSP code\n"); in snd_msnd_initialize()
447 while (readw(chip->mappedbase)) { in snd_msnd_initialize()
449 if (!timeout--) { in snd_msnd_initialize()
450 dev_err(card->dev, LOGNAME ": DSP reset timeout\n"); in snd_msnd_initialize()
451 return -EIO; in snd_msnd_initialize()
461 struct snd_msnd *chip = card->private_data; in snd_msnd_dsp_full_reset()
464 if (test_bit(F_RESETTING, &chip->flags) || ++chip->nresets > 10) in snd_msnd_dsp_full_reset()
467 set_bit(F_RESETTING, &chip->flags); in snd_msnd_dsp_full_reset()
472 dev_warn(card->dev, LOGNAME ": DSP reset failed\n"); in snd_msnd_dsp_full_reset()
474 clear_bit(F_RESETTING, &chip->flags); in snd_msnd_dsp_full_reset()
483 snd_msnd_dsp_full_reset(chip->card); in snd_msnd_send_dsp_cmd_chk()
489 dev_dbg(chip->card->dev, "snd_msnd_calibrate_adc(%i)\n", srate); in snd_msnd_calibrate_adc()
490 writew(srate, chip->SMA + SMA_wCalFreqAtoD); in snd_msnd_calibrate_adc()
491 if (chip->calibrate_signal == 0) in snd_msnd_calibrate_adc()
492 writew(readw(chip->SMA + SMA_wCurrHostStatusFlags) in snd_msnd_calibrate_adc()
493 | 0x0001, chip->SMA + SMA_wCurrHostStatusFlags); in snd_msnd_calibrate_adc()
495 writew(readw(chip->SMA + SMA_wCurrHostStatusFlags) in snd_msnd_calibrate_adc()
496 & ~0x0001, chip->SMA + SMA_wCurrHostStatusFlags); in snd_msnd_calibrate_adc()
502 dev_warn(chip->card->dev, LOGNAME ": ADC calibration failed\n"); in snd_msnd_calibrate_adc()
503 return -EIO; in snd_msnd_calibrate_adc()
511 snd_msnd_enable_irq(mpu->private_data); in snd_msnd_mpu401_open()
512 snd_msnd_send_dsp_cmd(mpu->private_data, HDEX_MIDI_IN_START); in snd_msnd_mpu401_open()
518 snd_msnd_send_dsp_cmd(mpu->private_data, HDEX_MIDI_IN_STOP); in snd_msnd_mpu401_close()
519 snd_msnd_disable_irq(mpu->private_data); in snd_msnd_mpu401_close()
527 struct snd_msnd *chip = card->private_data; in snd_msnd_attach()
530 err = devm_request_irq(card->dev, chip->irq, snd_msnd_interrupt, 0, in snd_msnd_attach()
531 card->shortname, chip); in snd_msnd_attach()
533 dev_err(card->dev, LOGNAME ": Couldn't grab IRQ %d\n", chip->irq); in snd_msnd_attach()
536 card->sync_irq = chip->irq; in snd_msnd_attach()
537 if (!devm_request_region(card->dev, chip->io, DSP_NUMIO, in snd_msnd_attach()
538 card->shortname)) in snd_msnd_attach()
539 return -EBUSY; in snd_msnd_attach()
541 if (!devm_request_mem_region(card->dev, chip->base, BUFFSIZE, in snd_msnd_attach()
542 card->shortname)) { in snd_msnd_attach()
543 dev_err(card->dev, LOGNAME in snd_msnd_attach()
544 ": unable to grab memory region 0x%lx-0x%lx\n", in snd_msnd_attach()
545 chip->base, chip->base + BUFFSIZE - 1); in snd_msnd_attach()
546 return -EBUSY; in snd_msnd_attach()
548 chip->mappedbase = devm_ioremap(card->dev, chip->base, 0x8000); in snd_msnd_attach()
549 if (!chip->mappedbase) { in snd_msnd_attach()
550 dev_err(card->dev, LOGNAME in snd_msnd_attach()
551 ": unable to map memory region 0x%lx-0x%lx\n", in snd_msnd_attach()
552 chip->base, chip->base + BUFFSIZE - 1); in snd_msnd_attach()
553 return -EIO; in snd_msnd_attach()
562 dev_err(card->dev, LOGNAME ": error creating new PCM device\n"); in snd_msnd_attach()
568 dev_err(card->dev, LOGNAME ": error creating new Mixer device\n"); in snd_msnd_attach()
581 &chip->rmidi); in snd_msnd_attach()
583 dev_err(card->dev, LOGNAME in snd_msnd_attach()
587 mpu = chip->rmidi->private_data; in snd_msnd_attach()
589 mpu->open_input = snd_msnd_mpu401_open; in snd_msnd_attach()
590 mpu->close_input = snd_msnd_mpu401_close; in snd_msnd_attach()
591 mpu->private_data = chip; in snd_msnd_attach()
594 disable_irq(chip->irq); in snd_msnd_attach()
595 snd_msnd_calibrate_adc(chip, chip->play_sample_rate); in snd_msnd_attach()
615 dev_err(chip->card->dev, LOGNAME ": %s: I/O error\n", __func__); in snd_msnd_write_cfg()
616 return -EIO; in snd_msnd_write_cfg()
624 return -EIO; in snd_msnd_write_cfg_io0()
626 return -EIO; in snd_msnd_write_cfg_io0()
628 return -EIO; in snd_msnd_write_cfg_io0()
635 return -EIO; in snd_msnd_write_cfg_io1()
637 return -EIO; in snd_msnd_write_cfg_io1()
639 return -EIO; in snd_msnd_write_cfg_io1()
646 return -EIO; in snd_msnd_write_cfg_irq()
648 return -EIO; in snd_msnd_write_cfg_irq()
650 return -EIO; in snd_msnd_write_cfg_irq()
661 return -EIO; in snd_msnd_write_cfg_mem()
663 return -EIO; in snd_msnd_write_cfg_mem()
665 return -EIO; in snd_msnd_write_cfg_mem()
668 return -EIO; in snd_msnd_write_cfg_mem()
675 return -EIO; in snd_msnd_activate_logical()
677 return -EIO; in snd_msnd_activate_logical()
686 return -EIO; in snd_msnd_write_cfg_logical()
688 return -EIO; in snd_msnd_write_cfg_logical()
690 return -EIO; in snd_msnd_write_cfg_logical()
692 return -EIO; in snd_msnd_write_cfg_logical()
694 return -EIO; in snd_msnd_write_cfg_logical()
696 return -EIO; in snd_msnd_write_cfg_logical()
705 dev_info(chip->card->dev, LOGNAME ": Resetting all devices\n"); in snd_msnd_pinnacle_cfg_reset()
708 return -EIO; in snd_msnd_pinnacle_cfg_reset()
714 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
742 static int write_ndelay[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 1 };
761 module_param_hw_array(io, long, ioport, NULL, 0444);
769 module_param_hw_array(cfg, long, ioport, NULL, 0444);
771 module_param_hw_array(mpu_io, long, ioport, NULL, 0444);
773 module_param_hw_array(ide_io0, long, ioport, NULL, 0444);
774 module_param_hw_array(ide_io1, long, ioport, NULL, 0444);
776 module_param_hw_array(joystick_io, long, ioport, NULL, 0444);
799 dev_err(pdev, LOGNAME ": \"io\" - DSP I/O base must be set " in snd_msnd_isa_match()
807 ": \"io\" - DSP I/O base must within the range 0x100 " in snd_msnd_isa_match()
820 ": \"irq\" - must be set to 5, 7, 9, 10, 11 or 12\n"); in snd_msnd_isa_match()
830 dev_err(pdev, LOGNAME ": \"mem\" - must be set to " in snd_msnd_isa_match()
862 return -ENODEV; in snd_msnd_isa_probe()
870 chip = card->private_data; in snd_msnd_isa_probe()
871 chip->card = card; in snd_msnd_isa_probe()
876 chip->irqid = HPIRQ_5; break; in snd_msnd_isa_probe()
878 chip->irqid = HPIRQ_7; break; in snd_msnd_isa_probe()
880 chip->irqid = HPIRQ_9; break; in snd_msnd_isa_probe()
882 chip->irqid = HPIRQ_10; break; in snd_msnd_isa_probe()
884 chip->irqid = HPIRQ_11; break; in snd_msnd_isa_probe()
886 chip->irqid = HPIRQ_12; break; in snd_msnd_isa_probe()
891 chip->memid = HPMEM_B000; break; in snd_msnd_isa_probe()
893 chip->memid = HPMEM_C800; break; in snd_msnd_isa_probe()
895 chip->memid = HPMEM_D000; break; in snd_msnd_isa_probe()
897 chip->memid = HPMEM_D800; break; in snd_msnd_isa_probe()
899 chip->memid = HPMEM_E000; break; in snd_msnd_isa_probe()
901 chip->memid = HPMEM_E800; break; in snd_msnd_isa_probe()
904 dev_info(pdev, LOGNAME ": Non-PnP mode: configuring at port 0x%lx\n", in snd_msnd_isa_probe()
907 if (!devm_request_region(card->dev, cfg[idx], 2, in snd_msnd_isa_probe()
911 return -EIO; in snd_msnd_isa_probe()
915 return -EIO; in snd_msnd_isa_probe()
973 chip->type = msndClassic; in snd_msnd_isa_probe()
975 chip->type = msndPinnacle; in snd_msnd_isa_probe()
977 chip->io = io[idx]; in snd_msnd_isa_probe()
978 chip->irq = irq[idx]; in snd_msnd_isa_probe()
979 chip->base = mem[idx]; in snd_msnd_isa_probe()
981 chip->calibrate_signal = calibrate_signal ? 1 : 0; in snd_msnd_isa_probe()
982 chip->recsrc = 0; in snd_msnd_isa_probe()
983 chip->dspq_data_buff = DSPQ_DATA_BUFF; in snd_msnd_isa_probe()
984 chip->dspq_buff_size = DSPQ_BUFF_SIZE; in snd_msnd_isa_probe()
986 clear_bit(F_DISABLE_WRITE_NDELAY, &chip->flags); in snd_msnd_isa_probe()
988 set_bit(F_DISABLE_WRITE_NDELAY, &chip->flags); in snd_msnd_isa_probe()
991 set_bit(F_HAVEDIGITAL, &chip->flags); in snd_msnd_isa_probe()
993 spin_lock_init(&chip->lock); in snd_msnd_isa_probe()
1035 return -ENODEV; in snd_msnd_pnp_detect()
1040 pnp_dev = pnp_request_card_device(pcard, pid->devs[0].id, NULL); in snd_msnd_pnp_detect()
1042 return -ENODEV; in snd_msnd_pnp_detect()
1044 mpu_dev = pnp_request_card_device(pcard, pid->devs[1].id, NULL); in snd_msnd_pnp_detect()
1046 return -ENODEV; in snd_msnd_pnp_detect()
1049 dev_info(&pcard->card->dev, "msnd_pinnacle: device is inactive\n"); in snd_msnd_pnp_detect()
1050 return -EBUSY; in snd_msnd_pnp_detect()
1054 dev_info(&pcard->card->dev, "msnd_pinnacle: MPU device is inactive\n"); in snd_msnd_pnp_detect()
1055 return -EBUSY; in snd_msnd_pnp_detect()
1062 ret = snd_devm_card_new(&pcard->card->dev, in snd_msnd_pnp_detect()
1068 chip = card->private_data; in snd_msnd_pnp_detect()
1069 chip->card = card; in snd_msnd_pnp_detect()
1082 chip->type = msndClassic; in snd_msnd_pnp_detect()
1084 chip->type = msndPinnacle; in snd_msnd_pnp_detect()
1086 chip->io = io[idx]; in snd_msnd_pnp_detect()
1087 chip->irq = irq[idx]; in snd_msnd_pnp_detect()
1088 chip->base = mem[idx]; in snd_msnd_pnp_detect()
1090 chip->calibrate_signal = calibrate_signal ? 1 : 0; in snd_msnd_pnp_detect()
1091 chip->recsrc = 0; in snd_msnd_pnp_detect()
1092 chip->dspq_data_buff = DSPQ_DATA_BUFF; in snd_msnd_pnp_detect()
1093 chip->dspq_buff_size = DSPQ_BUFF_SIZE; in snd_msnd_pnp_detect()
1095 clear_bit(F_DISABLE_WRITE_NDELAY, &chip->flags); in snd_msnd_pnp_detect()
1097 set_bit(F_DISABLE_WRITE_NDELAY, &chip->flags); in snd_msnd_pnp_detect()
1100 set_bit(F_HAVEDIGITAL, &chip->flags); in snd_msnd_pnp_detect()
1102 spin_lock_init(&chip->lock); in snd_msnd_pnp_detect()
1105 dev_err(&pcard->card->dev, LOGNAME ": Probe failed\n"); in snd_msnd_pnp_detect()
1111 dev_err(&pcard->card->dev, LOGNAME ": Attach failed\n"); in snd_msnd_pnp_detect()