Lines Matching refs:chip
113 struct snd_sb *chip; member
269 static inline void snd_als4_cr_write(struct snd_sb *chip, in snd_als4_cr_write() argument
276 snd_sbmixer_write(chip, reg | 0xc0, data); in snd_als4_cr_write()
279 static inline u8 snd_als4_cr_read(struct snd_sb *chip, in snd_als4_cr_read() argument
283 return snd_sbmixer_read(chip, reg | 0xc0); in snd_als4_cr_read()
288 static void snd_als4000_set_rate(struct snd_sb *chip, unsigned int rate) in snd_als4000_set_rate() argument
290 if (!(chip->mode & SB_RATE_LOCK)) { in snd_als4000_set_rate()
291 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE_OUT); in snd_als4000_set_rate()
292 snd_sbdsp_command(chip, rate>>8); in snd_als4000_set_rate()
293 snd_sbdsp_command(chip, rate); in snd_als4000_set_rate()
297 static inline void snd_als4000_set_capture_dma(struct snd_sb *chip, in snd_als4000_set_capture_dma() argument
301 snd_als4k_gcr_write(chip, ALS4K_GCRA2_FIFO2_PCIADDR, addr); in snd_als4000_set_capture_dma()
302 snd_als4k_gcr_write(chip, ALS4K_GCRA3_FIFO2_COUNT, (size-1)); in snd_als4000_set_capture_dma()
305 static inline void snd_als4000_set_playback_dma(struct snd_sb *chip, in snd_als4000_set_playback_dma() argument
310 snd_als4k_gcr_write(chip, ALS4K_GCR91_DMA0_ADDR, addr); in snd_als4000_set_playback_dma()
311 snd_als4k_gcr_write(chip, ALS4K_GCR92_DMA0_MODE_COUNT, in snd_als4000_set_playback_dma()
354 #define playback_cmd(chip) (playback_cmd_vals[(chip)->playback_format]) argument
369 #define capture_cmd(chip) (capture_cmd_vals[(chip)->capture_format]) argument
385 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_capture_prepare() local
390 chip->capture_format = snd_als4000_get_format(runtime); in snd_als4000_capture_prepare()
395 if (chip->capture_format & ALS4000_FORMAT_16BIT) in snd_als4000_capture_prepare()
399 spin_lock_irq(&chip->reg_lock); in snd_als4000_capture_prepare()
400 snd_als4000_set_rate(chip, runtime->rate); in snd_als4000_capture_prepare()
401 snd_als4000_set_capture_dma(chip, runtime->dma_addr, size); in snd_als4000_capture_prepare()
402 spin_unlock_irq(&chip->reg_lock); in snd_als4000_capture_prepare()
403 spin_lock_irq(&chip->mixer_lock); in snd_als4000_capture_prepare()
404 snd_als4_cr_write(chip, ALS4K_CR1C_FIFO2_BLOCK_LENGTH_LO, count & 0xff); in snd_als4000_capture_prepare()
405 snd_als4_cr_write(chip, ALS4K_CR1D_FIFO2_BLOCK_LENGTH_HI, count >> 8); in snd_als4000_capture_prepare()
406 spin_unlock_irq(&chip->mixer_lock); in snd_als4000_capture_prepare()
412 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_playback_prepare() local
417 chip->playback_format = snd_als4000_get_format(runtime); in snd_als4000_playback_prepare()
422 if (chip->playback_format & ALS4000_FORMAT_16BIT) in snd_als4000_playback_prepare()
432 spin_lock_irq(&chip->reg_lock); in snd_als4000_playback_prepare()
433 snd_als4000_set_rate(chip, runtime->rate); in snd_als4000_playback_prepare()
434 snd_als4000_set_playback_dma(chip, runtime->dma_addr, size); in snd_als4000_playback_prepare()
438 snd_sbdsp_command(chip, playback_cmd(chip).dsp_cmd); in snd_als4000_playback_prepare()
439 snd_sbdsp_command(chip, playback_cmd(chip).format); in snd_als4000_playback_prepare()
440 snd_sbdsp_command(chip, count & 0xff); in snd_als4000_playback_prepare()
441 snd_sbdsp_command(chip, count >> 8); in snd_als4000_playback_prepare()
442 snd_sbdsp_command(chip, playback_cmd(chip).dma_off); in snd_als4000_playback_prepare()
443 spin_unlock_irq(&chip->reg_lock); in snd_als4000_playback_prepare()
450 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_capture_trigger() local
459 spin_lock(&chip->mixer_lock); in snd_als4000_capture_trigger()
463 chip->mode |= SB_RATE_LOCK_CAPTURE; in snd_als4000_capture_trigger()
464 snd_als4_cr_write(chip, ALS4K_CR1E_FIFO2_CONTROL, in snd_als4000_capture_trigger()
465 capture_cmd(chip)); in snd_als4000_capture_trigger()
469 chip->mode &= ~SB_RATE_LOCK_CAPTURE; in snd_als4000_capture_trigger()
470 snd_als4_cr_write(chip, ALS4K_CR1E_FIFO2_CONTROL, in snd_als4000_capture_trigger()
471 capture_cmd(chip)); in snd_als4000_capture_trigger()
477 spin_unlock(&chip->mixer_lock); in snd_als4000_capture_trigger()
483 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_playback_trigger() local
486 spin_lock(&chip->reg_lock); in snd_als4000_playback_trigger()
490 chip->mode |= SB_RATE_LOCK_PLAYBACK; in snd_als4000_playback_trigger()
491 snd_sbdsp_command(chip, playback_cmd(chip).dma_on); in snd_als4000_playback_trigger()
495 snd_sbdsp_command(chip, playback_cmd(chip).dma_off); in snd_als4000_playback_trigger()
496 chip->mode &= ~SB_RATE_LOCK_PLAYBACK; in snd_als4000_playback_trigger()
502 spin_unlock(&chip->reg_lock); in snd_als4000_playback_trigger()
508 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_capture_pointer() local
511 spin_lock(&chip->reg_lock); in snd_als4000_capture_pointer()
512 result = snd_als4k_gcr_read(chip, ALS4K_GCRA4_FIFO2_CURRENT_ADDR); in snd_als4000_capture_pointer()
513 spin_unlock(&chip->reg_lock); in snd_als4000_capture_pointer()
520 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_playback_pointer() local
523 spin_lock(&chip->reg_lock); in snd_als4000_playback_pointer()
524 result = snd_als4k_gcr_read(chip, ALS4K_GCRA0_FIFO1_CURRENT_ADDR); in snd_als4000_playback_pointer()
525 spin_unlock(&chip->reg_lock); in snd_als4000_playback_pointer()
545 struct snd_sb *chip = dev_id; in snd_als4000_interrupt() local
551 pci_irqstatus = snd_als4k_iobase_readb(chip->alt_port, in snd_als4000_interrupt()
554 && (chip->playback_substream)) /* playback */ in snd_als4000_interrupt()
555 snd_pcm_period_elapsed(chip->playback_substream); in snd_als4000_interrupt()
557 && (chip->capture_substream)) /* capturing */ in snd_als4000_interrupt()
558 snd_pcm_period_elapsed(chip->capture_substream); in snd_als4000_interrupt()
560 && (chip->rmidi)) /* MPU401 interrupt */ in snd_als4000_interrupt()
561 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data); in snd_als4000_interrupt()
563 snd_als4k_iobase_writeb(chip->alt_port, in snd_als4000_interrupt()
566 spin_lock(&chip->mixer_lock); in snd_als4000_interrupt()
568 sb_irqstatus = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS); in snd_als4000_interrupt()
569 spin_unlock(&chip->mixer_lock); in snd_als4000_interrupt()
572 snd_sb_ack_8bit(chip); in snd_als4000_interrupt()
574 snd_sb_ack_16bit(chip); in snd_als4000_interrupt()
576 inb(chip->mpu_port); in snd_als4000_interrupt()
578 snd_als4k_iobase_readb(chip->alt_port, in snd_als4000_interrupt()
637 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_playback_open() local
640 chip->playback_substream = substream; in snd_als4000_playback_open()
647 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_playback_close() local
649 chip->playback_substream = NULL; in snd_als4000_playback_close()
656 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_capture_open() local
659 chip->capture_substream = substream; in snd_als4000_capture_open()
666 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_als4000_capture_close() local
668 chip->capture_substream = NULL; in snd_als4000_capture_close()
697 static int snd_als4000_pcm(struct snd_sb *chip, int device) in snd_als4000_pcm() argument
702 err = snd_pcm_new(chip->card, "ALS4000 DSP", device, 1, 1, &pcm); in snd_als4000_pcm()
705 pcm->private_data = chip; in snd_als4000_pcm()
710 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(chip->pci), in snd_als4000_pcm()
713 chip->pcm = pcm; in snd_als4000_pcm()
741 static void snd_als4000_configure(struct snd_sb *chip) in snd_als4000_configure() argument
747 spin_lock_irq(&chip->mixer_lock); in snd_als4000_configure()
748 tmp = snd_als4_cr_read(chip, ALS4K_CR0_SB_CONFIG); in snd_als4000_configure()
749 snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG, in snd_als4000_configure()
753 snd_sbmixer_write(chip, SB_DSP4_DMASETUP, SB_DMASETUP_DMA0); in snd_als4000_configure()
754 snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG, in snd_als4000_configure()
756 spin_unlock_irq(&chip->mixer_lock); in snd_als4000_configure()
758 spin_lock_irq(&chip->reg_lock); in snd_als4000_configure()
760 snd_als4k_gcr_write(chip, ALS4K_GCR8C_MISC_CTRL, in snd_als4000_configure()
765 snd_als4k_gcr_write(chip, i, 0); in snd_als4000_configure()
767 snd_als4k_gcr_write(chip, ALS4K_GCR99_DMA_EMULATION_CTRL, in snd_als4000_configure()
768 (snd_als4k_gcr_read(chip, ALS4K_GCR99_DMA_EMULATION_CTRL) & ~0x07) | 0x04); in snd_als4000_configure()
769 spin_unlock_irq(&chip->reg_lock); in snd_als4000_configure()
857 struct snd_sb *chip; in snd_card_als4000_probe() local
916 &chip)) < 0) { in snd_card_als4000_probe()
919 acard->chip = chip; in snd_card_als4000_probe()
921 chip->pci = pci; in snd_card_als4000_probe()
922 chip->alt_port = iobase; in snd_card_als4000_probe()
924 snd_als4000_configure(chip); in snd_card_als4000_probe()
929 card->shortname, chip->alt_port, chip->irq); in snd_card_als4000_probe()
935 -1, &chip->rmidi)) < 0) { in snd_card_als4000_probe()
946 if ((err = snd_als4000_pcm(chip, 0)) < 0) { in snd_card_als4000_probe()
949 if ((err = snd_sbmixer_new(chip)) < 0) { in snd_card_als4000_probe()
993 struct snd_sb *chip = acard->chip; in snd_als4000_suspend() local
997 snd_pcm_suspend_all(chip->pcm); in snd_als4000_suspend()
998 snd_sbmixer_suspend(chip); in snd_als4000_suspend()
1006 struct snd_sb *chip = acard->chip; in snd_als4000_resume() local
1008 snd_als4000_configure(chip); in snd_als4000_resume()
1009 snd_sbdsp_reset(chip); in snd_als4000_resume()
1010 snd_sbmixer_resume(chip); in snd_als4000_resume()