Searched refs:rme96 (Results 1 - 3 of 3) sorted by relevance

/linux-4.4.14/sound/pci/
H A Drme96.c227 struct rme96 { struct
275 #define RME96_ISPLAYING(rme96) ((rme96)->wcreg & RME96_WCR_START)
276 #define RME96_ISRECORDING(rme96) ((rme96)->wcreg & RME96_WCR_START_2)
277 #define RME96_HAS_ANALOG_IN(rme96) ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST)
278 #define RME96_HAS_ANALOG_OUT(rme96) ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PRO || \
279 (rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST)
280 #define RME96_DAC_IS_1852(rme96) (RME96_HAS_ANALOG_OUT(rme96) && (rme96)->rev >= 4)
281 #define RME96_DAC_IS_1855(rme96) (((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && (rme96)->rev < 4) || \
282 ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PRO && (rme96)->rev == 2))
283 #define RME96_185X_MAX_OUT(rme96) ((1 << (RME96_DAC_IS_1852(rme96) ? RME96_AD1852_VOL_BITS : RME96_AD1855_VOL_BITS)) - 1)
305 static void snd_rme96_proc_init(struct rme96 *rme96);
309 struct rme96 *rme96);
312 snd_rme96_getinputtype(struct rme96 *rme96);
315 snd_rme96_playback_ptr(struct rme96 *rme96) snd_rme96_playback_ptr() argument
317 return (readl(rme96->iobase + RME96_IO_GET_PLAY_POS) snd_rme96_playback_ptr()
318 & RME96_RCR_AUDIO_ADDR_MASK) >> rme96->playback_frlog; snd_rme96_playback_ptr()
322 snd_rme96_capture_ptr(struct rme96 *rme96) snd_rme96_capture_ptr() argument
324 return (readl(rme96->iobase + RME96_IO_GET_REC_POS) snd_rme96_capture_ptr()
325 & RME96_RCR_AUDIO_ADDR_MASK) >> rme96->capture_frlog; snd_rme96_capture_ptr()
334 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_silence() local
335 count <<= rme96->playback_frlog; snd_rme96_playback_silence()
336 pos <<= rme96->playback_frlog; snd_rme96_playback_silence()
337 memset_io(rme96->iobase + RME96_IO_PLAY_BUFFER + pos, snd_rme96_playback_silence()
349 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_copy() local
350 count <<= rme96->playback_frlog; snd_rme96_playback_copy()
351 pos <<= rme96->playback_frlog; snd_rme96_playback_copy()
352 return copy_from_user_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos, src, snd_rme96_playback_copy()
363 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_copy() local
364 count <<= rme96->capture_frlog; snd_rme96_capture_copy()
365 pos <<= rme96->capture_frlog; snd_rme96_capture_copy()
366 return copy_to_user_fromio(dst, rme96->iobase + RME96_IO_REC_BUFFER + pos, snd_rme96_capture_copy()
499 snd_rme96_write_SPI(struct rme96 *rme96, u16 val) snd_rme96_write_SPI() argument
505 rme96->areg |= RME96_AR_CDATA; snd_rme96_write_SPI()
507 rme96->areg &= ~RME96_AR_CDATA; snd_rme96_write_SPI()
509 rme96->areg &= ~(RME96_AR_CCLK | RME96_AR_CLATCH); snd_rme96_write_SPI()
510 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_write_SPI()
512 rme96->areg |= RME96_AR_CCLK; snd_rme96_write_SPI()
513 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_write_SPI()
517 rme96->areg &= ~(RME96_AR_CCLK | RME96_AR_CDATA); snd_rme96_write_SPI()
518 rme96->areg |= RME96_AR_CLATCH; snd_rme96_write_SPI()
519 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_write_SPI()
521 rme96->areg &= ~RME96_AR_CLATCH; snd_rme96_write_SPI()
522 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_write_SPI()
526 snd_rme96_apply_dac_volume(struct rme96 *rme96) snd_rme96_apply_dac_volume() argument
528 if (RME96_DAC_IS_1852(rme96)) { snd_rme96_apply_dac_volume()
529 snd_rme96_write_SPI(rme96, (rme96->vol[0] << 2) | 0x0); snd_rme96_apply_dac_volume()
530 snd_rme96_write_SPI(rme96, (rme96->vol[1] << 2) | 0x2); snd_rme96_apply_dac_volume()
531 } else if (RME96_DAC_IS_1855(rme96)) { snd_rme96_apply_dac_volume()
532 snd_rme96_write_SPI(rme96, (rme96->vol[0] & 0x3FF) | 0x000); snd_rme96_apply_dac_volume()
533 snd_rme96_write_SPI(rme96, (rme96->vol[1] & 0x3FF) | 0x400); snd_rme96_apply_dac_volume()
538 snd_rme96_reset_dac(struct rme96 *rme96) snd_rme96_reset_dac() argument
540 writel(rme96->wcreg | RME96_WCR_PD, snd_rme96_reset_dac()
541 rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_reset_dac()
542 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_reset_dac()
546 snd_rme96_getmontracks(struct rme96 *rme96) snd_rme96_getmontracks() argument
548 return ((rme96->wcreg >> RME96_WCR_BITPOS_MONITOR_0) & 1) + snd_rme96_getmontracks()
549 (((rme96->wcreg >> RME96_WCR_BITPOS_MONITOR_1) & 1) << 1); snd_rme96_getmontracks()
553 snd_rme96_setmontracks(struct rme96 *rme96, snd_rme96_setmontracks() argument
557 rme96->wcreg |= RME96_WCR_MONITOR_0; snd_rme96_setmontracks()
559 rme96->wcreg &= ~RME96_WCR_MONITOR_0; snd_rme96_setmontracks()
562 rme96->wcreg |= RME96_WCR_MONITOR_1; snd_rme96_setmontracks()
564 rme96->wcreg &= ~RME96_WCR_MONITOR_1; snd_rme96_setmontracks()
566 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_setmontracks()
571 snd_rme96_getattenuation(struct rme96 *rme96) snd_rme96_getattenuation() argument
573 return ((rme96->wcreg >> RME96_WCR_BITPOS_GAIN_0) & 1) + snd_rme96_getattenuation()
574 (((rme96->wcreg >> RME96_WCR_BITPOS_GAIN_1) & 1) << 1); snd_rme96_getattenuation()
578 snd_rme96_setattenuation(struct rme96 *rme96, snd_rme96_setattenuation() argument
583 rme96->wcreg = (rme96->wcreg & ~RME96_WCR_GAIN_0) & snd_rme96_setattenuation()
587 rme96->wcreg = (rme96->wcreg | RME96_WCR_GAIN_0) & snd_rme96_setattenuation()
591 rme96->wcreg = (rme96->wcreg & ~RME96_WCR_GAIN_0) | snd_rme96_setattenuation()
595 rme96->wcreg = (rme96->wcreg | RME96_WCR_GAIN_0) | snd_rme96_setattenuation()
601 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_setattenuation()
606 snd_rme96_capture_getrate(struct rme96 *rme96, snd_rme96_capture_getrate() argument
612 if (rme96->areg & RME96_AR_ANALOG) { snd_rme96_capture_getrate()
614 n = ((rme96->areg >> RME96_AR_BITPOS_F0) & 1) + snd_rme96_capture_getrate()
615 (((rme96->areg >> RME96_AR_BITPOS_F1) & 1) << 1); snd_rme96_capture_getrate()
629 return (rme96->areg & RME96_AR_BITPOS_F2) ? rate << 1 : rate; snd_rme96_capture_getrate()
632 rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_capture_getrate()
633 if (rme96->rcreg & RME96_RCR_LOCK) { snd_rme96_capture_getrate()
636 if (rme96->rcreg & RME96_RCR_T_OUT) { snd_rme96_capture_getrate()
642 if (rme96->rcreg & RME96_RCR_VERF) { snd_rme96_capture_getrate()
647 n = ((rme96->rcreg >> RME96_RCR_BITPOS_F0) & 1) + snd_rme96_capture_getrate()
648 (((rme96->rcreg >> RME96_RCR_BITPOS_F1) & 1) << 1) + snd_rme96_capture_getrate()
649 (((rme96->rcreg >> RME96_RCR_BITPOS_F2) & 1) << 2); snd_rme96_capture_getrate()
653 if (rme96->rcreg & RME96_RCR_T_OUT) { snd_rme96_capture_getrate()
669 snd_rme96_playback_getrate(struct rme96 *rme96) snd_rme96_playback_getrate() argument
673 if (!(rme96->wcreg & RME96_WCR_MASTER) && snd_rme96_playback_getrate()
674 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && snd_rme96_playback_getrate()
675 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) snd_rme96_playback_getrate()
680 rate = ((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_0) & 1) + snd_rme96_playback_getrate()
681 (((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_1) & 1) << 1); snd_rme96_playback_getrate()
695 return (rme96->wcreg & RME96_WCR_DS) ? rate << 1 : rate; snd_rme96_playback_getrate()
699 snd_rme96_playback_setrate(struct rme96 *rme96, snd_rme96_playback_setrate() argument
704 ds = rme96->wcreg & RME96_WCR_DS; snd_rme96_playback_setrate()
707 rme96->wcreg &= ~RME96_WCR_DS; snd_rme96_playback_setrate()
708 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) & snd_rme96_playback_setrate()
712 rme96->wcreg &= ~RME96_WCR_DS; snd_rme96_playback_setrate()
713 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_1) & snd_rme96_playback_setrate()
717 rme96->wcreg &= ~RME96_WCR_DS; snd_rme96_playback_setrate()
718 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) | snd_rme96_playback_setrate()
722 rme96->wcreg |= RME96_WCR_DS; snd_rme96_playback_setrate()
723 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) & snd_rme96_playback_setrate()
727 rme96->wcreg |= RME96_WCR_DS; snd_rme96_playback_setrate()
728 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_1) & snd_rme96_playback_setrate()
732 rme96->wcreg |= RME96_WCR_DS; snd_rme96_playback_setrate()
733 rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) | snd_rme96_playback_setrate()
739 if ((!ds && rme96->wcreg & RME96_WCR_DS) || snd_rme96_playback_setrate()
740 (ds && !(rme96->wcreg & RME96_WCR_DS))) snd_rme96_playback_setrate()
743 snd_rme96_reset_dac(rme96); snd_rme96_playback_setrate()
746 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_playback_setrate()
752 snd_rme96_capture_analog_setrate(struct rme96 *rme96, snd_rme96_capture_analog_setrate() argument
757 rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) & snd_rme96_capture_analog_setrate()
761 rme96->areg = ((rme96->areg & ~RME96_AR_FREQPAD_0) | snd_rme96_capture_analog_setrate()
765 rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) | snd_rme96_capture_analog_setrate()
769 if (rme96->rev < 4) { snd_rme96_capture_analog_setrate()
772 rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) & snd_rme96_capture_analog_setrate()
776 if (rme96->rev < 4) { snd_rme96_capture_analog_setrate()
779 rme96->areg = ((rme96->areg & ~RME96_AR_FREQPAD_0) | snd_rme96_capture_analog_setrate()
783 rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) | snd_rme96_capture_analog_setrate()
789 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_capture_analog_setrate()
794 snd_rme96_setclockmode(struct rme96 *rme96, snd_rme96_setclockmode() argument
800 rme96->wcreg &= ~RME96_WCR_MASTER; snd_rme96_setclockmode()
801 rme96->areg &= ~RME96_AR_WSEL; snd_rme96_setclockmode()
805 rme96->wcreg |= RME96_WCR_MASTER; snd_rme96_setclockmode()
806 rme96->areg &= ~RME96_AR_WSEL; snd_rme96_setclockmode()
810 rme96->wcreg |= RME96_WCR_MASTER; snd_rme96_setclockmode()
811 rme96->areg |= RME96_AR_WSEL; snd_rme96_setclockmode()
816 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_setclockmode()
817 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_setclockmode()
822 snd_rme96_getclockmode(struct rme96 *rme96) snd_rme96_getclockmode() argument
824 if (rme96->areg & RME96_AR_WSEL) { snd_rme96_getclockmode()
827 return (rme96->wcreg & RME96_WCR_MASTER) ? RME96_CLOCKMODE_MASTER : snd_rme96_getclockmode()
832 snd_rme96_setinputtype(struct rme96 *rme96, snd_rme96_setinputtype() argument
839 rme96->wcreg = (rme96->wcreg & ~RME96_WCR_INP_0) & snd_rme96_setinputtype()
843 rme96->wcreg = (rme96->wcreg | RME96_WCR_INP_0) & snd_rme96_setinputtype()
847 rme96->wcreg = (rme96->wcreg & ~RME96_WCR_INP_0) | snd_rme96_setinputtype()
851 if ((rme96->pci->device != PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && snd_rme96_setinputtype()
852 rme96->pci->device != PCI_DEVICE_ID_RME_DIGI96_8_PRO) || snd_rme96_setinputtype()
853 (rme96->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && snd_rme96_setinputtype()
854 rme96->rev > 4)) snd_rme96_setinputtype()
859 rme96->wcreg = (rme96->wcreg | RME96_WCR_INP_0) | snd_rme96_setinputtype()
863 if (!RME96_HAS_ANALOG_IN(rme96)) { snd_rme96_setinputtype()
866 rme96->areg |= RME96_AR_ANALOG; snd_rme96_setinputtype()
867 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_setinputtype()
868 if (rme96->rev < 4) { snd_rme96_setinputtype()
873 if (snd_rme96_capture_getrate(rme96, &n) == 88200) { snd_rme96_setinputtype()
874 snd_rme96_capture_analog_setrate(rme96, 44100); snd_rme96_setinputtype()
876 if (snd_rme96_capture_getrate(rme96, &n) == 64000) { snd_rme96_setinputtype()
877 snd_rme96_capture_analog_setrate(rme96, 32000); snd_rme96_setinputtype()
884 if (type != RME96_INPUT_ANALOG && RME96_HAS_ANALOG_IN(rme96)) { snd_rme96_setinputtype()
885 rme96->areg &= ~RME96_AR_ANALOG; snd_rme96_setinputtype()
886 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_setinputtype()
888 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_setinputtype()
893 snd_rme96_getinputtype(struct rme96 *rme96) snd_rme96_getinputtype() argument
895 if (rme96->areg & RME96_AR_ANALOG) { snd_rme96_getinputtype()
898 return ((rme96->wcreg >> RME96_WCR_BITPOS_INP_0) & 1) + snd_rme96_getinputtype()
899 (((rme96->wcreg >> RME96_WCR_BITPOS_INP_1) & 1) << 1); snd_rme96_getinputtype()
903 snd_rme96_setframelog(struct rme96 *rme96, snd_rme96_setframelog() argument
916 frlog += (rme96->wcreg & RME96_WCR_MODE24) ? 2 : 1; snd_rme96_setframelog()
917 rme96->playback_frlog = frlog; snd_rme96_setframelog()
919 frlog += (rme96->wcreg & RME96_WCR_MODE24_2) ? 2 : 1; snd_rme96_setframelog()
920 rme96->capture_frlog = frlog; snd_rme96_setframelog()
925 snd_rme96_playback_setformat(struct rme96 *rme96, snd_pcm_format_t format) snd_rme96_playback_setformat() argument
929 rme96->wcreg &= ~RME96_WCR_MODE24; snd_rme96_playback_setformat()
932 rme96->wcreg |= RME96_WCR_MODE24; snd_rme96_playback_setformat()
937 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_playback_setformat()
942 snd_rme96_capture_setformat(struct rme96 *rme96, snd_pcm_format_t format) snd_rme96_capture_setformat() argument
946 rme96->wcreg &= ~RME96_WCR_MODE24_2; snd_rme96_capture_setformat()
949 rme96->wcreg |= RME96_WCR_MODE24_2; snd_rme96_capture_setformat()
954 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_capture_setformat()
959 snd_rme96_set_period_properties(struct rme96 *rme96, snd_rme96_set_period_properties() argument
964 rme96->wcreg &= ~RME96_WCR_ISEL; snd_rme96_set_period_properties()
967 rme96->wcreg |= RME96_WCR_ISEL; snd_rme96_set_period_properties()
973 rme96->wcreg &= ~RME96_WCR_IDIS; snd_rme96_set_period_properties()
974 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_set_period_properties()
981 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_hw_params() local
986 runtime->dma_area = (void __force *)(rme96->iobase + snd_rme96_playback_hw_params()
988 runtime->dma_addr = rme96->port + RME96_IO_PLAY_BUFFER; snd_rme96_playback_hw_params()
991 spin_lock_irq(&rme96->lock); snd_rme96_playback_hw_params()
992 if (!(rme96->wcreg & RME96_WCR_MASTER) && snd_rme96_playback_hw_params()
993 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && snd_rme96_playback_hw_params()
994 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) snd_rme96_playback_hw_params()
1002 err = snd_rme96_playback_setrate(rme96, params_rate(params)); snd_rme96_playback_hw_params()
1008 err = snd_rme96_playback_setformat(rme96, params_format(params)); snd_rme96_playback_hw_params()
1011 snd_rme96_setframelog(rme96, params_channels(params), 1); snd_rme96_playback_hw_params()
1012 if (rme96->capture_periodsize != 0) { snd_rme96_playback_hw_params()
1013 if (params_period_size(params) << rme96->playback_frlog != snd_rme96_playback_hw_params()
1014 rme96->capture_periodsize) snd_rme96_playback_hw_params()
1020 rme96->playback_periodsize = snd_rme96_playback_hw_params()
1021 params_period_size(params) << rme96->playback_frlog; snd_rme96_playback_hw_params()
1022 snd_rme96_set_period_properties(rme96, rme96->playback_periodsize); snd_rme96_playback_hw_params()
1024 if ((rme96->wcreg & RME96_WCR_ADAT) == 0) { snd_rme96_playback_hw_params()
1025 rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP); snd_rme96_playback_hw_params()
1026 writel(rme96->wcreg |= rme96->wcreg_spdif_stream, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_playback_hw_params()
1031 spin_unlock_irq(&rme96->lock); snd_rme96_playback_hw_params()
1034 snd_rme96_apply_dac_volume(rme96); snd_rme96_playback_hw_params()
1044 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_hw_params() local
1048 runtime->dma_area = (void __force *)(rme96->iobase + snd_rme96_capture_hw_params()
1050 runtime->dma_addr = rme96->port + RME96_IO_REC_BUFFER; snd_rme96_capture_hw_params()
1053 spin_lock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1054 if ((err = snd_rme96_capture_setformat(rme96, params_format(params))) < 0) { snd_rme96_capture_hw_params()
1055 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1058 if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) { snd_rme96_capture_hw_params()
1059 if ((err = snd_rme96_capture_analog_setrate(rme96, snd_rme96_capture_hw_params()
1062 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1065 } else if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) { snd_rme96_capture_hw_params()
1067 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1073 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1077 snd_rme96_setframelog(rme96, params_channels(params), 0); snd_rme96_capture_hw_params()
1078 if (rme96->playback_periodsize != 0) { snd_rme96_capture_hw_params()
1079 if (params_period_size(params) << rme96->capture_frlog != snd_rme96_capture_hw_params()
1080 rme96->playback_periodsize) snd_rme96_capture_hw_params()
1082 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1086 rme96->capture_periodsize = snd_rme96_capture_hw_params()
1087 params_period_size(params) << rme96->capture_frlog; snd_rme96_capture_hw_params()
1088 snd_rme96_set_period_properties(rme96, rme96->capture_periodsize); snd_rme96_capture_hw_params()
1089 spin_unlock_irq(&rme96->lock); snd_rme96_capture_hw_params()
1095 snd_rme96_trigger(struct rme96 *rme96, snd_rme96_trigger() argument
1099 writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS); snd_rme96_trigger()
1101 writel(0, rme96->iobase + RME96_IO_RESET_REC_POS); snd_rme96_trigger()
1103 rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_trigger()
1104 if (rme96->rcreg & RME96_RCR_IRQ) snd_rme96_trigger()
1105 writel(0, rme96->iobase + RME96_IO_CONFIRM_PLAY_IRQ); snd_rme96_trigger()
1108 rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_trigger()
1109 if (rme96->rcreg & RME96_RCR_IRQ_2) snd_rme96_trigger()
1110 writel(0, rme96->iobase + RME96_IO_CONFIRM_REC_IRQ); snd_rme96_trigger()
1113 rme96->wcreg |= RME96_WCR_START; snd_rme96_trigger()
1115 rme96->wcreg &= ~RME96_WCR_START; snd_rme96_trigger()
1117 rme96->wcreg |= RME96_WCR_START_2; snd_rme96_trigger()
1119 rme96->wcreg &= ~RME96_WCR_START_2; snd_rme96_trigger()
1120 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_trigger()
1129 struct rme96 *rme96 = (struct rme96 *)dev_id; snd_rme96_interrupt() local
1131 rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_interrupt()
1133 if (!((rme96->rcreg & RME96_RCR_IRQ) || snd_rme96_interrupt()
1134 (rme96->rcreg & RME96_RCR_IRQ_2))) snd_rme96_interrupt()
1139 if (rme96->rcreg & RME96_RCR_IRQ) { snd_rme96_interrupt()
1141 snd_pcm_period_elapsed(rme96->playback_substream); snd_rme96_interrupt()
1142 writel(0, rme96->iobase + RME96_IO_CONFIRM_PLAY_IRQ); snd_rme96_interrupt()
1144 if (rme96->rcreg & RME96_RCR_IRQ_2) { snd_rme96_interrupt()
1146 snd_pcm_period_elapsed(rme96->capture_substream); snd_rme96_interrupt()
1147 writel(0, rme96->iobase + RME96_IO_CONFIRM_REC_IRQ); snd_rme96_interrupt()
1161 rme96_set_buffer_size_constraint(struct rme96 *rme96, rme96_set_buffer_size_constraint() argument
1168 if ((size = rme96->playback_periodsize) != 0 || rme96_set_buffer_size_constraint()
1169 (size = rme96->capture_periodsize) != 0) rme96_set_buffer_size_constraint()
1183 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_spdif_open() local
1187 spin_lock_irq(&rme96->lock); snd_rme96_playback_spdif_open()
1188 if (rme96->playback_substream != NULL) { snd_rme96_playback_spdif_open()
1189 spin_unlock_irq(&rme96->lock); snd_rme96_playback_spdif_open()
1192 rme96->wcreg &= ~RME96_WCR_ADAT; snd_rme96_playback_spdif_open()
1193 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_playback_spdif_open()
1194 rme96->playback_substream = substream; snd_rme96_playback_spdif_open()
1195 spin_unlock_irq(&rme96->lock); snd_rme96_playback_spdif_open()
1198 if (!(rme96->wcreg & RME96_WCR_MASTER) && snd_rme96_playback_spdif_open()
1199 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && snd_rme96_playback_spdif_open()
1200 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) snd_rme96_playback_spdif_open()
1207 rme96_set_buffer_size_constraint(rme96, runtime); snd_rme96_playback_spdif_open()
1209 rme96->wcreg_spdif_stream = rme96->wcreg_spdif; snd_rme96_playback_spdif_open()
1210 rme96->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; snd_rme96_playback_spdif_open()
1211 snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE | snd_rme96_playback_spdif_open()
1212 SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id); snd_rme96_playback_spdif_open()
1220 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_spdif_open() local
1225 if (snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && snd_rme96_capture_spdif_open()
1226 (rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) snd_rme96_capture_spdif_open()
1236 spin_lock_irq(&rme96->lock); snd_rme96_capture_spdif_open()
1237 if (rme96->capture_substream != NULL) { snd_rme96_capture_spdif_open()
1238 spin_unlock_irq(&rme96->lock); snd_rme96_capture_spdif_open()
1241 rme96->capture_substream = substream; snd_rme96_capture_spdif_open()
1242 spin_unlock_irq(&rme96->lock); snd_rme96_capture_spdif_open()
1244 rme96_set_buffer_size_constraint(rme96, runtime); snd_rme96_capture_spdif_open()
1252 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_adat_open() local
1256 spin_lock_irq(&rme96->lock); snd_rme96_playback_adat_open()
1257 if (rme96->playback_substream != NULL) { snd_rme96_playback_adat_open()
1258 spin_unlock_irq(&rme96->lock); snd_rme96_playback_adat_open()
1261 rme96->wcreg |= RME96_WCR_ADAT; snd_rme96_playback_adat_open()
1262 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_playback_adat_open()
1263 rme96->playback_substream = substream; snd_rme96_playback_adat_open()
1264 spin_unlock_irq(&rme96->lock); snd_rme96_playback_adat_open()
1267 if (!(rme96->wcreg & RME96_WCR_MASTER) && snd_rme96_playback_adat_open()
1268 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && snd_rme96_playback_adat_open()
1269 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) snd_rme96_playback_adat_open()
1276 rme96_set_buffer_size_constraint(rme96, runtime); snd_rme96_playback_adat_open()
1284 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_adat_open() local
1289 if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) { snd_rme96_capture_adat_open()
1294 if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) { snd_rme96_capture_adat_open()
1303 spin_lock_irq(&rme96->lock); snd_rme96_capture_adat_open()
1304 if (rme96->capture_substream != NULL) { snd_rme96_capture_adat_open()
1305 spin_unlock_irq(&rme96->lock); snd_rme96_capture_adat_open()
1308 rme96->capture_substream = substream; snd_rme96_capture_adat_open()
1309 spin_unlock_irq(&rme96->lock); snd_rme96_capture_adat_open()
1311 rme96_set_buffer_size_constraint(rme96, runtime); snd_rme96_capture_adat_open()
1318 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_close() local
1321 spin_lock_irq(&rme96->lock); snd_rme96_playback_close()
1322 if (RME96_ISPLAYING(rme96)) { snd_rme96_playback_close()
1323 snd_rme96_trigger(rme96, RME96_STOP_PLAYBACK); snd_rme96_playback_close()
1325 rme96->playback_substream = NULL; snd_rme96_playback_close()
1326 rme96->playback_periodsize = 0; snd_rme96_playback_close()
1327 spdif = (rme96->wcreg & RME96_WCR_ADAT) == 0; snd_rme96_playback_close()
1328 spin_unlock_irq(&rme96->lock); snd_rme96_playback_close()
1330 rme96->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; snd_rme96_playback_close()
1331 snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE | snd_rme96_playback_close()
1332 SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id); snd_rme96_playback_close()
1340 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_close() local
1342 spin_lock_irq(&rme96->lock); snd_rme96_capture_close()
1343 if (RME96_ISRECORDING(rme96)) { snd_rme96_capture_close()
1344 snd_rme96_trigger(rme96, RME96_STOP_CAPTURE); snd_rme96_capture_close()
1346 rme96->capture_substream = NULL; snd_rme96_capture_close()
1347 rme96->capture_periodsize = 0; snd_rme96_capture_close()
1348 spin_unlock_irq(&rme96->lock); snd_rme96_capture_close()
1355 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_prepare() local
1357 spin_lock_irq(&rme96->lock); snd_rme96_playback_prepare()
1358 if (RME96_ISPLAYING(rme96)) { snd_rme96_playback_prepare()
1359 snd_rme96_trigger(rme96, RME96_STOP_PLAYBACK); snd_rme96_playback_prepare()
1361 writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS); snd_rme96_playback_prepare()
1362 spin_unlock_irq(&rme96->lock); snd_rme96_playback_prepare()
1369 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_prepare() local
1371 spin_lock_irq(&rme96->lock); snd_rme96_capture_prepare()
1372 if (RME96_ISRECORDING(rme96)) { snd_rme96_capture_prepare()
1373 snd_rme96_trigger(rme96, RME96_STOP_CAPTURE); snd_rme96_capture_prepare()
1375 writel(0, rme96->iobase + RME96_IO_RESET_REC_POS); snd_rme96_capture_prepare()
1376 spin_unlock_irq(&rme96->lock); snd_rme96_capture_prepare()
1384 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_trigger() local
1389 if (snd_pcm_substream_chip(s) == rme96) snd_pcm_group_for_each_entry()
1393 sync = (rme96->playback_substream && rme96->capture_substream) &&
1394 (rme96->playback_substream->group ==
1395 rme96->capture_substream->group);
1399 if (!RME96_ISPLAYING(rme96)) {
1400 if (substream != rme96->playback_substream)
1402 snd_rme96_trigger(rme96, sync ? RME96_START_BOTH
1409 if (RME96_ISPLAYING(rme96)) {
1410 if (substream != rme96->playback_substream)
1412 snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
1418 if (RME96_ISPLAYING(rme96))
1419 snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
1425 if (!RME96_ISPLAYING(rme96))
1426 snd_rme96_trigger(rme96, sync ? RME96_RESUME_BOTH
1441 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_trigger() local
1446 if (snd_pcm_substream_chip(s) == rme96) snd_pcm_group_for_each_entry()
1450 sync = (rme96->playback_substream && rme96->capture_substream) &&
1451 (rme96->playback_substream->group ==
1452 rme96->capture_substream->group);
1456 if (!RME96_ISRECORDING(rme96)) {
1457 if (substream != rme96->capture_substream)
1459 snd_rme96_trigger(rme96, sync ? RME96_START_BOTH
1466 if (RME96_ISRECORDING(rme96)) {
1467 if (substream != rme96->capture_substream)
1469 snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
1475 if (RME96_ISRECORDING(rme96))
1476 snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
1482 if (!RME96_ISRECORDING(rme96))
1483 snd_rme96_trigger(rme96, sync ? RME96_RESUME_BOTH
1497 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_playback_pointer() local
1498 return snd_rme96_playback_ptr(rme96); snd_rme96_playback_pointer()
1504 struct rme96 *rme96 = snd_pcm_substream_chip(substream); snd_rme96_capture_pointer() local
1505 return snd_rme96_capture_ptr(rme96); snd_rme96_capture_pointer()
1561 struct rme96 *rme96 = (struct rme96 *)private_data; snd_rme96_free() local
1563 if (rme96 == NULL) { snd_rme96_free()
1566 if (rme96->irq >= 0) { snd_rme96_free()
1567 snd_rme96_trigger(rme96, RME96_STOP_BOTH); snd_rme96_free()
1568 rme96->areg &= ~RME96_AR_DAC_EN; snd_rme96_free()
1569 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_free()
1570 free_irq(rme96->irq, (void *)rme96); snd_rme96_free()
1571 rme96->irq = -1; snd_rme96_free()
1573 if (rme96->iobase) { snd_rme96_free()
1574 iounmap(rme96->iobase); snd_rme96_free()
1575 rme96->iobase = NULL; snd_rme96_free()
1577 if (rme96->port) { snd_rme96_free()
1578 pci_release_regions(rme96->pci); snd_rme96_free()
1579 rme96->port = 0; snd_rme96_free()
1582 vfree(rme96->playback_suspend_buffer); snd_rme96_free()
1583 vfree(rme96->capture_suspend_buffer); snd_rme96_free()
1585 pci_disable_device(rme96->pci); snd_rme96_free()
1591 struct rme96 *rme96 = pcm->private_data; snd_rme96_free_spdif_pcm() local
1592 rme96->spdif_pcm = NULL; snd_rme96_free_spdif_pcm()
1598 struct rme96 *rme96 = pcm->private_data; snd_rme96_free_adat_pcm() local
1599 rme96->adat_pcm = NULL; snd_rme96_free_adat_pcm()
1603 snd_rme96_create(struct rme96 *rme96) snd_rme96_create() argument
1605 struct pci_dev *pci = rme96->pci; snd_rme96_create()
1608 rme96->irq = -1; snd_rme96_create()
1609 spin_lock_init(&rme96->lock); snd_rme96_create()
1616 rme96->port = pci_resource_start(rme96->pci, 0); snd_rme96_create()
1618 rme96->iobase = ioremap_nocache(rme96->port, RME96_IO_SIZE); snd_rme96_create()
1619 if (!rme96->iobase) { snd_rme96_create()
1620 dev_err(rme96->card->dev, snd_rme96_create()
1622 rme96->port, rme96->port + RME96_IO_SIZE - 1); snd_rme96_create()
1627 KBUILD_MODNAME, rme96)) { snd_rme96_create()
1628 dev_err(rme96->card->dev, "unable to grab IRQ %d\n", pci->irq); snd_rme96_create()
1631 rme96->irq = pci->irq; snd_rme96_create()
1634 pci_read_config_byte(pci, 8, &rme96->rev); snd_rme96_create()
1637 if ((err = snd_pcm_new(rme96->card, "Digi96 IEC958", 0, snd_rme96_create()
1638 1, 1, &rme96->spdif_pcm)) < 0) snd_rme96_create()
1642 rme96->spdif_pcm->private_data = rme96; snd_rme96_create()
1643 rme96->spdif_pcm->private_free = snd_rme96_free_spdif_pcm; snd_rme96_create()
1644 strcpy(rme96->spdif_pcm->name, "Digi96 IEC958"); snd_rme96_create()
1645 snd_pcm_set_ops(rme96->spdif_pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_rme96_playback_spdif_ops); snd_rme96_create()
1646 snd_pcm_set_ops(rme96->spdif_pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_rme96_capture_spdif_ops); snd_rme96_create()
1648 rme96->spdif_pcm->info_flags = 0; snd_rme96_create()
1653 rme96->adat_pcm = NULL; snd_rme96_create()
1655 if ((err = snd_pcm_new(rme96->card, "Digi96 ADAT", 1, snd_rme96_create()
1656 1, 1, &rme96->adat_pcm)) < 0) snd_rme96_create()
1660 rme96->adat_pcm->private_data = rme96; snd_rme96_create()
1661 rme96->adat_pcm->private_free = snd_rme96_free_adat_pcm; snd_rme96_create()
1662 strcpy(rme96->adat_pcm->name, "Digi96 ADAT"); snd_rme96_create()
1663 snd_pcm_set_ops(rme96->adat_pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_rme96_playback_adat_ops); snd_rme96_create()
1664 snd_pcm_set_ops(rme96->adat_pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_rme96_capture_adat_ops); snd_rme96_create()
1666 rme96->adat_pcm->info_flags = 0; snd_rme96_create()
1669 rme96->playback_periodsize = 0; snd_rme96_create()
1670 rme96->capture_periodsize = 0; snd_rme96_create()
1673 snd_rme96_trigger(rme96, RME96_STOP_BOTH); snd_rme96_create()
1676 rme96->wcreg = snd_rme96_create()
1682 rme96->areg = RME96_AR_FREQPAD_1; /* set 44.1 kHz analog capture */ snd_rme96_create()
1684 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_create()
1685 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_create()
1688 writel(rme96->areg | RME96_AR_PD2, snd_rme96_create()
1689 rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_create()
1690 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_create()
1693 snd_rme96_reset_dac(rme96); snd_rme96_create()
1694 rme96->areg |= RME96_AR_DAC_EN; snd_rme96_create()
1695 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); snd_rme96_create()
1698 writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS); snd_rme96_create()
1699 writel(0, rme96->iobase + RME96_IO_RESET_REC_POS); snd_rme96_create()
1702 rme96->vol[0] = rme96->vol[1] = 0; snd_rme96_create()
1703 if (RME96_HAS_ANALOG_OUT(rme96)) { snd_rme96_create()
1704 snd_rme96_apply_dac_volume(rme96); snd_rme96_create()
1708 if ((err = snd_rme96_create_switches(rme96->card, rme96)) < 0) { snd_rme96_create()
1713 snd_rme96_proc_init(rme96); snd_rme96_create()
1726 struct rme96 *rme96 = entry->private_data; snd_rme96_proc_read() local
1728 rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_proc_read()
1730 snd_iprintf(buffer, rme96->card->longname); snd_rme96_proc_read()
1731 snd_iprintf(buffer, " (index #%d)\n", rme96->card->number + 1); snd_rme96_proc_read()
1734 if (rme96->wcreg & RME96_WCR_IDIS) { snd_rme96_proc_read()
1737 } else if (rme96->wcreg & RME96_WCR_ISEL) { snd_rme96_proc_read()
1743 switch (snd_rme96_getinputtype(rme96)) { snd_rme96_proc_read()
1760 if (snd_rme96_capture_getrate(rme96, &n) < 0) { snd_rme96_proc_read()
1769 snd_rme96_capture_getrate(rme96, &n)); snd_rme96_proc_read()
1771 if (rme96->wcreg & RME96_WCR_MODE24_2) { snd_rme96_proc_read()
1778 if (rme96->wcreg & RME96_WCR_SEL) { snd_rme96_proc_read()
1784 snd_rme96_playback_getrate(rme96)); snd_rme96_proc_read()
1785 if (rme96->wcreg & RME96_WCR_MODE24) { snd_rme96_proc_read()
1790 if (rme96->areg & RME96_AR_WSEL) { snd_rme96_proc_read()
1792 } else if (rme96->wcreg & RME96_WCR_MASTER) { snd_rme96_proc_read()
1794 } else if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) { snd_rme96_proc_read()
1796 } else if (snd_rme96_capture_getrate(rme96, &n) < 0) { snd_rme96_proc_read()
1801 if (rme96->wcreg & RME96_WCR_PRO) { snd_rme96_proc_read()
1806 if (rme96->wcreg & RME96_WCR_EMP) { snd_rme96_proc_read()
1811 if (rme96->wcreg & RME96_WCR_DOLBY) { snd_rme96_proc_read()
1816 if (RME96_HAS_ANALOG_IN(rme96)) { snd_rme96_proc_read()
1818 switch (snd_rme96_getmontracks(rme96)) { snd_rme96_proc_read()
1832 switch (snd_rme96_getattenuation(rme96)) { snd_rme96_proc_read()
1846 snd_iprintf(buffer, " volume left: %u\n", rme96->vol[0]); snd_rme96_proc_read()
1847 snd_iprintf(buffer, " volume right: %u\n", rme96->vol[1]); snd_rme96_proc_read()
1851 static void snd_rme96_proc_init(struct rme96 *rme96) snd_rme96_proc_init() argument
1855 if (! snd_card_proc_new(rme96->card, "rme96", &entry)) snd_rme96_proc_init()
1856 snd_info_set_text_ops(entry, rme96, snd_rme96_proc_read); snd_rme96_proc_init()
1868 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_get_loopback_control() local
1870 spin_lock_irq(&rme96->lock); snd_rme96_get_loopback_control()
1871 ucontrol->value.integer.value[0] = rme96->wcreg & RME96_WCR_SEL ? 0 : 1; snd_rme96_get_loopback_control()
1872 spin_unlock_irq(&rme96->lock); snd_rme96_get_loopback_control()
1878 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_put_loopback_control() local
1883 spin_lock_irq(&rme96->lock); snd_rme96_put_loopback_control()
1884 val = (rme96->wcreg & ~RME96_WCR_SEL) | val; snd_rme96_put_loopback_control()
1885 change = val != rme96->wcreg; snd_rme96_put_loopback_control()
1886 rme96->wcreg = val; snd_rme96_put_loopback_control()
1887 writel(val, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_put_loopback_control()
1888 spin_unlock_irq(&rme96->lock); snd_rme96_put_loopback_control()
1898 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_info_inputtype_control() local
1904 switch (rme96->pci->device) { snd_rme96_info_inputtype_control()
1913 if (rme96->rev > 4) { snd_rme96_info_inputtype_control()
1931 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_get_inputtype_control() local
1934 spin_lock_irq(&rme96->lock); snd_rme96_get_inputtype_control()
1935 ucontrol->value.enumerated.item[0] = snd_rme96_getinputtype(rme96); snd_rme96_get_inputtype_control()
1937 switch (rme96->pci->device) { snd_rme96_get_inputtype_control()
1946 if (rme96->rev > 4) { snd_rme96_get_inputtype_control()
1964 spin_unlock_irq(&rme96->lock); snd_rme96_get_inputtype_control()
1970 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_put_inputtype_control() local
1974 switch (rme96->pci->device) { snd_rme96_put_inputtype_control()
1983 if (rme96->rev > 4) { snd_rme96_put_inputtype_control()
1996 if (rme96->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && rme96->rev > 4) { snd_rme96_put_inputtype_control()
2002 spin_lock_irq(&rme96->lock); snd_rme96_put_inputtype_control()
2003 change = (int)val != snd_rme96_getinputtype(rme96); snd_rme96_put_inputtype_control()
2004 snd_rme96_setinputtype(rme96, val); snd_rme96_put_inputtype_control()
2005 spin_unlock_irq(&rme96->lock); snd_rme96_put_inputtype_control()
2019 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_get_clockmode_control() local
2021 spin_lock_irq(&rme96->lock); snd_rme96_get_clockmode_control()
2022 ucontrol->value.enumerated.item[0] = snd_rme96_getclockmode(rme96); snd_rme96_get_clockmode_control()
2023 spin_unlock_irq(&rme96->lock); snd_rme96_get_clockmode_control()
2029 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_put_clockmode_control() local
2034 spin_lock_irq(&rme96->lock); snd_rme96_put_clockmode_control()
2035 change = (int)val != snd_rme96_getclockmode(rme96); snd_rme96_put_clockmode_control()
2036 snd_rme96_setclockmode(rme96, val); snd_rme96_put_clockmode_control()
2037 spin_unlock_irq(&rme96->lock); snd_rme96_put_clockmode_control()
2053 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_get_attenuation_control() local
2055 spin_lock_irq(&rme96->lock); snd_rme96_get_attenuation_control()
2056 ucontrol->value.enumerated.item[0] = snd_rme96_getattenuation(rme96); snd_rme96_get_attenuation_control()
2057 spin_unlock_irq(&rme96->lock); snd_rme96_get_attenuation_control()
2063 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_put_attenuation_control() local
2068 spin_lock_irq(&rme96->lock); snd_rme96_put_attenuation_control()
2070 change = (int)val != snd_rme96_getattenuation(rme96); snd_rme96_put_attenuation_control()
2071 snd_rme96_setattenuation(rme96, val); snd_rme96_put_attenuation_control()
2072 spin_unlock_irq(&rme96->lock); snd_rme96_put_attenuation_control()
2086 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_get_montracks_control() local
2088 spin_lock_irq(&rme96->lock); snd_rme96_get_montracks_control()
2089 ucontrol->value.enumerated.item[0] = snd_rme96_getmontracks(rme96); snd_rme96_get_montracks_control()
2090 spin_unlock_irq(&rme96->lock); snd_rme96_get_montracks_control()
2096 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_put_montracks_control() local
2101 spin_lock_irq(&rme96->lock); snd_rme96_put_montracks_control()
2102 change = (int)val != snd_rme96_getmontracks(rme96); snd_rme96_put_montracks_control()
2103 snd_rme96_setmontracks(rme96, val); snd_rme96_put_montracks_control()
2104 spin_unlock_irq(&rme96->lock); snd_rme96_put_montracks_control()
2139 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_control_spdif_get() local
2141 snd_rme96_convert_to_aes(&ucontrol->value.iec958, rme96->wcreg_spdif); snd_rme96_control_spdif_get()
2147 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_control_spdif_put() local
2152 spin_lock_irq(&rme96->lock); snd_rme96_control_spdif_put()
2153 change = val != rme96->wcreg_spdif; snd_rme96_control_spdif_put()
2154 rme96->wcreg_spdif = val; snd_rme96_control_spdif_put()
2155 spin_unlock_irq(&rme96->lock); snd_rme96_control_spdif_put()
2168 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_control_spdif_stream_get() local
2170 snd_rme96_convert_to_aes(&ucontrol->value.iec958, rme96->wcreg_spdif_stream); snd_rme96_control_spdif_stream_get()
2176 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_control_spdif_stream_put() local
2181 spin_lock_irq(&rme96->lock); snd_rme96_control_spdif_stream_put()
2182 change = val != rme96->wcreg_spdif_stream; snd_rme96_control_spdif_stream_put()
2183 rme96->wcreg_spdif_stream = val; snd_rme96_control_spdif_stream_put()
2184 rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP); snd_rme96_control_spdif_stream_put()
2185 rme96->wcreg |= val; snd_rme96_control_spdif_stream_put()
2186 writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); snd_rme96_control_spdif_stream_put()
2187 spin_unlock_irq(&rme96->lock); snd_rme96_control_spdif_stream_put()
2207 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_dac_volume_info() local
2212 uinfo->value.integer.max = RME96_185X_MAX_OUT(rme96); snd_rme96_dac_volume_info()
2219 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_dac_volume_get() local
2221 spin_lock_irq(&rme96->lock); snd_rme96_dac_volume_get()
2222 u->value.integer.value[0] = rme96->vol[0]; snd_rme96_dac_volume_get()
2223 u->value.integer.value[1] = rme96->vol[1]; snd_rme96_dac_volume_get()
2224 spin_unlock_irq(&rme96->lock); snd_rme96_dac_volume_get()
2232 struct rme96 *rme96 = snd_kcontrol_chip(kcontrol); snd_rme96_dac_volume_put() local
2237 if (!RME96_HAS_ANALOG_OUT(rme96)) snd_rme96_dac_volume_put()
2239 maxvol = RME96_185X_MAX_OUT(rme96); snd_rme96_dac_volume_put()
2240 spin_lock_irq(&rme96->lock); snd_rme96_dac_volume_put()
2242 if (vol != rme96->vol[0] && vol <= maxvol) { snd_rme96_dac_volume_put()
2243 rme96->vol[0] = vol; snd_rme96_dac_volume_put()
2247 if (vol != rme96->vol[1] && vol <= maxvol) { snd_rme96_dac_volume_put()
2248 rme96->vol[1] = vol; snd_rme96_dac_volume_put()
2252 snd_rme96_apply_dac_volume(rme96); snd_rme96_dac_volume_put()
2253 spin_unlock_irq(&rme96->lock); snd_rme96_dac_volume_put()
2340 struct rme96 *rme96) snd_rme96_create_switches()
2346 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0) snd_rme96_create_switches()
2349 rme96->spdif_ctl = kctl; snd_rme96_create_switches()
2352 if (RME96_HAS_ANALOG_OUT(rme96)) { snd_rme96_create_switches()
2354 if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0) snd_rme96_create_switches()
2370 struct rme96 *rme96 = card->private_data; rme96_suspend() local
2373 snd_pcm_suspend(rme96->playback_substream); rme96_suspend()
2374 snd_pcm_suspend(rme96->capture_substream); rme96_suspend()
2377 rme96->playback_pointer = readl(rme96->iobase + RME96_IO_GET_PLAY_POS) rme96_suspend()
2379 rme96->capture_pointer = readl(rme96->iobase + RME96_IO_GET_REC_POS) rme96_suspend()
2383 memcpy_fromio(rme96->playback_suspend_buffer, rme96_suspend()
2384 rme96->iobase + RME96_IO_PLAY_BUFFER, RME96_BUFFER_SIZE); rme96_suspend()
2385 memcpy_fromio(rme96->capture_suspend_buffer, rme96_suspend()
2386 rme96->iobase + RME96_IO_REC_BUFFER, RME96_BUFFER_SIZE); rme96_suspend()
2389 rme96->areg &= ~RME96_AR_DAC_EN; rme96_suspend()
2390 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); rme96_suspend()
2397 struct rme96 *rme96 = card->private_data; rme96_resume() local
2400 writel(0, rme96->iobase + RME96_IO_SET_PLAY_POS rme96_resume()
2401 + rme96->playback_pointer); rme96_resume()
2402 writel(0, rme96->iobase + RME96_IO_SET_REC_POS rme96_resume()
2403 + rme96->capture_pointer); rme96_resume()
2406 memcpy_toio(rme96->iobase + RME96_IO_PLAY_BUFFER, rme96_resume()
2407 rme96->playback_suspend_buffer, RME96_BUFFER_SIZE); rme96_resume()
2408 memcpy_toio(rme96->iobase + RME96_IO_REC_BUFFER, rme96_resume()
2409 rme96->capture_suspend_buffer, RME96_BUFFER_SIZE); rme96_resume()
2412 writel(rme96->areg | RME96_AR_PD2, rme96_resume()
2413 rme96->iobase + RME96_IO_ADDITIONAL_REG); rme96_resume()
2414 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); rme96_resume()
2417 snd_rme96_reset_dac(rme96); rme96_resume()
2418 rme96->areg |= RME96_AR_DAC_EN; rme96_resume()
2419 writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG); rme96_resume()
2420 if (RME96_HAS_ANALOG_OUT(rme96)) { rme96_resume()
2422 snd_rme96_apply_dac_volume(rme96); rme96_resume()
2446 struct rme96 *rme96; snd_rme96_probe() local
2459 sizeof(struct rme96), &card); snd_rme96_probe()
2463 rme96 = card->private_data; snd_rme96_probe()
2464 rme96->card = card; snd_rme96_probe()
2465 rme96->pci = pci; snd_rme96_probe()
2466 if ((err = snd_rme96_create(rme96)) < 0) { snd_rme96_probe()
2472 rme96->playback_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); snd_rme96_probe()
2473 if (!rme96->playback_suspend_buffer) { snd_rme96_probe()
2479 rme96->capture_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); snd_rme96_probe()
2480 if (!rme96->capture_suspend_buffer) { snd_rme96_probe()
2489 switch (rme96->pci->device) { snd_rme96_probe()
2500 pci_read_config_byte(rme96->pci, 8, &val); snd_rme96_probe()
2509 rme96->port, rme96->irq); snd_rme96_probe()
2339 snd_rme96_create_switches(struct snd_card *card, struct rme96 *rme96) snd_rme96_create_switches() argument
H A DMakefile25 snd-rme96-objs := rme96.o
51 obj-$(CONFIG_SND_RME96) += snd-rme96.o
H A Drme32.c47 * This is opposite to the latter rme96 where playing and capturing is totally

Completed in 160 milliseconds