rme96             261 sound/pci/rme96.c #define RME96_ISPLAYING(rme96) ((rme96)->wcreg & RME96_WCR_START)
rme96             262 sound/pci/rme96.c #define RME96_ISRECORDING(rme96) ((rme96)->wcreg & RME96_WCR_START_2)
rme96             263 sound/pci/rme96.c #define	RME96_HAS_ANALOG_IN(rme96) ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST)
rme96             264 sound/pci/rme96.c #define	RME96_HAS_ANALOG_OUT(rme96) ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PRO || \
rme96             265 sound/pci/rme96.c 				     (rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST)
rme96             266 sound/pci/rme96.c #define	RME96_DAC_IS_1852(rme96) (RME96_HAS_ANALOG_OUT(rme96) && (rme96)->rev >= 4)
rme96             267 sound/pci/rme96.c #define	RME96_DAC_IS_1855(rme96) (((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && (rme96)->rev < 4) || \
rme96             268 sound/pci/rme96.c 			          ((rme96)->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PRO && (rme96)->rev == 2))
rme96             269 sound/pci/rme96.c #define	RME96_185X_MAX_OUT(rme96) ((1 << (RME96_DAC_IS_1852(rme96) ? RME96_AD1852_VOL_BITS : RME96_AD1855_VOL_BITS)) - 1)
rme96             291 sound/pci/rme96.c static void snd_rme96_proc_init(struct rme96 *rme96);
rme96             295 sound/pci/rme96.c 			  struct rme96 *rme96);
rme96             298 sound/pci/rme96.c snd_rme96_getinputtype(struct rme96 *rme96);
rme96             301 sound/pci/rme96.c snd_rme96_playback_ptr(struct rme96 *rme96)
rme96             303 sound/pci/rme96.c 	return (readl(rme96->iobase + RME96_IO_GET_PLAY_POS)
rme96             304 sound/pci/rme96.c 		& RME96_RCR_AUDIO_ADDR_MASK) >> rme96->playback_frlog;
rme96             308 sound/pci/rme96.c snd_rme96_capture_ptr(struct rme96 *rme96)
rme96             310 sound/pci/rme96.c 	return (readl(rme96->iobase + RME96_IO_GET_REC_POS)
rme96             311 sound/pci/rme96.c 		& RME96_RCR_AUDIO_ADDR_MASK) >> rme96->capture_frlog;
rme96             318 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             320 sound/pci/rme96.c 	memset_io(rme96->iobase + RME96_IO_PLAY_BUFFER + pos,
rme96             330 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             332 sound/pci/rme96.c 	return copy_from_user_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos,
rme96             341 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             343 sound/pci/rme96.c 	memcpy_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos, src, count);
rme96             352 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             355 sound/pci/rme96.c 				   rme96->iobase + RME96_IO_REC_BUFFER + pos,
rme96             364 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             366 sound/pci/rme96.c 	memcpy_fromio(dst, rme96->iobase + RME96_IO_REC_BUFFER + pos, count);
rme96             499 sound/pci/rme96.c snd_rme96_write_SPI(struct rme96 *rme96, u16 val)
rme96             505 sound/pci/rme96.c 			rme96->areg |= RME96_AR_CDATA;
rme96             507 sound/pci/rme96.c 			rme96->areg &= ~RME96_AR_CDATA;
rme96             509 sound/pci/rme96.c 		rme96->areg &= ~(RME96_AR_CCLK | RME96_AR_CLATCH);
rme96             510 sound/pci/rme96.c 		writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             512 sound/pci/rme96.c 		rme96->areg |= RME96_AR_CCLK;
rme96             513 sound/pci/rme96.c 		writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             517 sound/pci/rme96.c 	rme96->areg &= ~(RME96_AR_CCLK | RME96_AR_CDATA);
rme96             518 sound/pci/rme96.c 	rme96->areg |= RME96_AR_CLATCH;
rme96             519 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             521 sound/pci/rme96.c 	rme96->areg &= ~RME96_AR_CLATCH;
rme96             522 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             526 sound/pci/rme96.c snd_rme96_apply_dac_volume(struct rme96 *rme96)
rme96             528 sound/pci/rme96.c 	if (RME96_DAC_IS_1852(rme96)) {
rme96             529 sound/pci/rme96.c 		snd_rme96_write_SPI(rme96, (rme96->vol[0] << 2) | 0x0);
rme96             530 sound/pci/rme96.c 		snd_rme96_write_SPI(rme96, (rme96->vol[1] << 2) | 0x2);
rme96             531 sound/pci/rme96.c 	} else if (RME96_DAC_IS_1855(rme96)) {
rme96             532 sound/pci/rme96.c 		snd_rme96_write_SPI(rme96, (rme96->vol[0] & 0x3FF) | 0x000);
rme96             533 sound/pci/rme96.c 		snd_rme96_write_SPI(rme96, (rme96->vol[1] & 0x3FF) | 0x400);
rme96             538 sound/pci/rme96.c snd_rme96_reset_dac(struct rme96 *rme96)
rme96             540 sound/pci/rme96.c 	writel(rme96->wcreg | RME96_WCR_PD,
rme96             541 sound/pci/rme96.c 	       rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             542 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             546 sound/pci/rme96.c snd_rme96_getmontracks(struct rme96 *rme96)
rme96             548 sound/pci/rme96.c 	return ((rme96->wcreg >> RME96_WCR_BITPOS_MONITOR_0) & 1) +
rme96             549 sound/pci/rme96.c 		(((rme96->wcreg >> RME96_WCR_BITPOS_MONITOR_1) & 1) << 1);
rme96             553 sound/pci/rme96.c snd_rme96_setmontracks(struct rme96 *rme96,
rme96             557 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MONITOR_0;
rme96             559 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_MONITOR_0;
rme96             562 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MONITOR_1;
rme96             564 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_MONITOR_1;
rme96             566 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             571 sound/pci/rme96.c snd_rme96_getattenuation(struct rme96 *rme96)
rme96             573 sound/pci/rme96.c 	return ((rme96->wcreg >> RME96_WCR_BITPOS_GAIN_0) & 1) +
rme96             574 sound/pci/rme96.c 		(((rme96->wcreg >> RME96_WCR_BITPOS_GAIN_1) & 1) << 1);
rme96             578 sound/pci/rme96.c snd_rme96_setattenuation(struct rme96 *rme96,
rme96             583 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg & ~RME96_WCR_GAIN_0) &
rme96             587 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_GAIN_0) &
rme96             591 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg & ~RME96_WCR_GAIN_0) |
rme96             595 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_GAIN_0) |
rme96             601 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             606 sound/pci/rme96.c snd_rme96_capture_getrate(struct rme96 *rme96,
rme96             612 sound/pci/rme96.c 	if (rme96->areg & RME96_AR_ANALOG) {
rme96             614 sound/pci/rme96.c 		n = ((rme96->areg >> RME96_AR_BITPOS_F0) & 1) +
rme96             615 sound/pci/rme96.c 			(((rme96->areg >> RME96_AR_BITPOS_F1) & 1) << 1);
rme96             629 sound/pci/rme96.c 		return (rme96->areg & RME96_AR_BITPOS_F2) ? rate << 1 : rate;
rme96             632 sound/pci/rme96.c 	rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             633 sound/pci/rme96.c 	if (rme96->rcreg & RME96_RCR_LOCK) {
rme96             636 sound/pci/rme96.c 		if (rme96->rcreg & RME96_RCR_T_OUT) {
rme96             642 sound/pci/rme96.c 	if (rme96->rcreg & RME96_RCR_VERF) {
rme96             647 sound/pci/rme96.c 	n = ((rme96->rcreg >> RME96_RCR_BITPOS_F0) & 1) +
rme96             648 sound/pci/rme96.c 		(((rme96->rcreg >> RME96_RCR_BITPOS_F1) & 1) << 1) +
rme96             649 sound/pci/rme96.c 		(((rme96->rcreg >> RME96_RCR_BITPOS_F2) & 1) << 2);
rme96             653 sound/pci/rme96.c 		if (rme96->rcreg & RME96_RCR_T_OUT) {
rme96             669 sound/pci/rme96.c snd_rme96_playback_getrate(struct rme96 *rme96)
rme96             673 sound/pci/rme96.c 	if (!(rme96->wcreg & RME96_WCR_MASTER) &&
rme96             674 sound/pci/rme96.c             snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG &&
rme96             675 sound/pci/rme96.c 	    (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0)
rme96             680 sound/pci/rme96.c 	rate = ((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_0) & 1) +
rme96             681 sound/pci/rme96.c 		(((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_1) & 1) << 1);
rme96             695 sound/pci/rme96.c 	return (rme96->wcreg & RME96_WCR_DS) ? rate << 1 : rate;
rme96             699 sound/pci/rme96.c snd_rme96_playback_setrate(struct rme96 *rme96,
rme96             704 sound/pci/rme96.c 	ds = rme96->wcreg & RME96_WCR_DS;
rme96             707 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_DS;
rme96             708 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) &
rme96             712 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_DS;
rme96             713 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_1) &
rme96             717 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_DS;
rme96             718 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) |
rme96             722 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_DS;
rme96             723 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) &
rme96             727 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_DS;
rme96             728 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_1) &
rme96             732 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_DS;
rme96             733 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_FREQ_0) |
rme96             739 sound/pci/rme96.c 	if ((!ds && rme96->wcreg & RME96_WCR_DS) ||
rme96             740 sound/pci/rme96.c 	    (ds && !(rme96->wcreg & RME96_WCR_DS)))
rme96             743 sound/pci/rme96.c 		snd_rme96_reset_dac(rme96);
rme96             746 sound/pci/rme96.c 		writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             752 sound/pci/rme96.c snd_rme96_capture_analog_setrate(struct rme96 *rme96,
rme96             757 sound/pci/rme96.c 		rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) &
rme96             761 sound/pci/rme96.c 		rme96->areg = ((rme96->areg & ~RME96_AR_FREQPAD_0) |
rme96             765 sound/pci/rme96.c 		rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) |
rme96             769 sound/pci/rme96.c 		if (rme96->rev < 4) {
rme96             772 sound/pci/rme96.c 		rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) &
rme96             776 sound/pci/rme96.c 		if (rme96->rev < 4) {
rme96             779 sound/pci/rme96.c 		rme96->areg = ((rme96->areg & ~RME96_AR_FREQPAD_0) |
rme96             783 sound/pci/rme96.c 		rme96->areg = ((rme96->areg | RME96_AR_FREQPAD_0) |
rme96             789 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             794 sound/pci/rme96.c snd_rme96_setclockmode(struct rme96 *rme96,
rme96             800 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_MASTER;
rme96             801 sound/pci/rme96.c 		rme96->areg &= ~RME96_AR_WSEL;
rme96             805 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MASTER;
rme96             806 sound/pci/rme96.c 		rme96->areg &= ~RME96_AR_WSEL;
rme96             810 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MASTER; 
rme96             811 sound/pci/rme96.c 		rme96->areg |= RME96_AR_WSEL;
rme96             816 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             817 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             822 sound/pci/rme96.c snd_rme96_getclockmode(struct rme96 *rme96)
rme96             824 sound/pci/rme96.c 	if (rme96->areg & RME96_AR_WSEL) {
rme96             827 sound/pci/rme96.c 	return (rme96->wcreg & RME96_WCR_MASTER) ? RME96_CLOCKMODE_MASTER :
rme96             832 sound/pci/rme96.c snd_rme96_setinputtype(struct rme96 *rme96,
rme96             839 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg & ~RME96_WCR_INP_0) &
rme96             843 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_INP_0) &
rme96             847 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg & ~RME96_WCR_INP_0) |
rme96             851 sound/pci/rme96.c 		if ((rme96->pci->device != PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST &&
rme96             852 sound/pci/rme96.c 		     rme96->pci->device != PCI_DEVICE_ID_RME_DIGI96_8_PRO) ||
rme96             853 sound/pci/rme96.c 		    (rme96->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST &&
rme96             854 sound/pci/rme96.c 		     rme96->rev > 4))
rme96             859 sound/pci/rme96.c 		rme96->wcreg = (rme96->wcreg | RME96_WCR_INP_0) |
rme96             863 sound/pci/rme96.c 		if (!RME96_HAS_ANALOG_IN(rme96)) {
rme96             866 sound/pci/rme96.c 		rme96->areg |= RME96_AR_ANALOG;
rme96             867 sound/pci/rme96.c 		writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             868 sound/pci/rme96.c 		if (rme96->rev < 4) {
rme96             873 sound/pci/rme96.c 			if (snd_rme96_capture_getrate(rme96, &n) == 88200) {
rme96             874 sound/pci/rme96.c 				snd_rme96_capture_analog_setrate(rme96, 44100);
rme96             876 sound/pci/rme96.c 			if (snd_rme96_capture_getrate(rme96, &n) == 64000) {
rme96             877 sound/pci/rme96.c 				snd_rme96_capture_analog_setrate(rme96, 32000);
rme96             884 sound/pci/rme96.c 	if (type != RME96_INPUT_ANALOG && RME96_HAS_ANALOG_IN(rme96)) {
rme96             885 sound/pci/rme96.c 		rme96->areg &= ~RME96_AR_ANALOG;
rme96             886 sound/pci/rme96.c 		writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96             888 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             893 sound/pci/rme96.c snd_rme96_getinputtype(struct rme96 *rme96)
rme96             895 sound/pci/rme96.c 	if (rme96->areg & RME96_AR_ANALOG) {
rme96             898 sound/pci/rme96.c 	return ((rme96->wcreg >> RME96_WCR_BITPOS_INP_0) & 1) +
rme96             899 sound/pci/rme96.c 		(((rme96->wcreg >> RME96_WCR_BITPOS_INP_1) & 1) << 1);
rme96             903 sound/pci/rme96.c snd_rme96_setframelog(struct rme96 *rme96,
rme96             916 sound/pci/rme96.c 		frlog += (rme96->wcreg & RME96_WCR_MODE24) ? 2 : 1;
rme96             917 sound/pci/rme96.c 		rme96->playback_frlog = frlog;
rme96             919 sound/pci/rme96.c 		frlog += (rme96->wcreg & RME96_WCR_MODE24_2) ? 2 : 1;
rme96             920 sound/pci/rme96.c 		rme96->capture_frlog = frlog;
rme96             925 sound/pci/rme96.c snd_rme96_playback_setformat(struct rme96 *rme96, snd_pcm_format_t format)
rme96             929 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_MODE24;
rme96             932 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MODE24;
rme96             937 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             942 sound/pci/rme96.c snd_rme96_capture_setformat(struct rme96 *rme96, snd_pcm_format_t format)
rme96             946 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_MODE24_2;
rme96             949 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_MODE24_2;
rme96             954 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             959 sound/pci/rme96.c snd_rme96_set_period_properties(struct rme96 *rme96,
rme96             964 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_ISEL;
rme96             967 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_ISEL;
rme96             973 sound/pci/rme96.c 	rme96->wcreg &= ~RME96_WCR_IDIS;
rme96             974 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96             981 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96             986 sound/pci/rme96.c 	runtime->dma_area = (void __force *)(rme96->iobase +
rme96             988 sound/pci/rme96.c 	runtime->dma_addr = rme96->port + RME96_IO_PLAY_BUFFER;
rme96             991 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96             992 sound/pci/rme96.c 	if (!(rme96->wcreg & RME96_WCR_MASTER) &&
rme96             993 sound/pci/rme96.c             snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG &&
rme96             994 sound/pci/rme96.c 	    (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0)
rme96            1002 sound/pci/rme96.c 		err = snd_rme96_playback_setrate(rme96, params_rate(params));
rme96            1008 sound/pci/rme96.c 	err = snd_rme96_playback_setformat(rme96, params_format(params));
rme96            1011 sound/pci/rme96.c 	snd_rme96_setframelog(rme96, params_channels(params), 1);
rme96            1012 sound/pci/rme96.c 	if (rme96->capture_periodsize != 0) {
rme96            1013 sound/pci/rme96.c 		if (params_period_size(params) << rme96->playback_frlog !=
rme96            1014 sound/pci/rme96.c 		    rme96->capture_periodsize)
rme96            1020 sound/pci/rme96.c 	rme96->playback_periodsize =
rme96            1021 sound/pci/rme96.c 		params_period_size(params) << rme96->playback_frlog;
rme96            1022 sound/pci/rme96.c 	snd_rme96_set_period_properties(rme96, rme96->playback_periodsize);
rme96            1024 sound/pci/rme96.c 	if ((rme96->wcreg & RME96_WCR_ADAT) == 0) {
rme96            1025 sound/pci/rme96.c 		rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP);
rme96            1026 sound/pci/rme96.c 		writel(rme96->wcreg |= rme96->wcreg_spdif_stream, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1031 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1034 sound/pci/rme96.c 		snd_rme96_apply_dac_volume(rme96);
rme96            1044 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1048 sound/pci/rme96.c 	runtime->dma_area = (void __force *)(rme96->iobase +
rme96            1050 sound/pci/rme96.c 	runtime->dma_addr = rme96->port + RME96_IO_REC_BUFFER;
rme96            1053 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            1054 sound/pci/rme96.c 	if ((err = snd_rme96_capture_setformat(rme96, params_format(params))) < 0) {
rme96            1055 sound/pci/rme96.c 		spin_unlock_irq(&rme96->lock);
rme96            1058 sound/pci/rme96.c 	if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) {
rme96            1059 sound/pci/rme96.c 		if ((err = snd_rme96_capture_analog_setrate(rme96,
rme96            1062 sound/pci/rme96.c 			spin_unlock_irq(&rme96->lock);
rme96            1065 sound/pci/rme96.c 	} else if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) {
rme96            1067 sound/pci/rme96.c 			spin_unlock_irq(&rme96->lock);
rme96            1073 sound/pci/rme96.c 			spin_unlock_irq(&rme96->lock);
rme96            1077 sound/pci/rme96.c 	snd_rme96_setframelog(rme96, params_channels(params), 0);
rme96            1078 sound/pci/rme96.c 	if (rme96->playback_periodsize != 0) {
rme96            1079 sound/pci/rme96.c 		if (params_period_size(params) << rme96->capture_frlog !=
rme96            1080 sound/pci/rme96.c 		    rme96->playback_periodsize)
rme96            1082 sound/pci/rme96.c 			spin_unlock_irq(&rme96->lock);
rme96            1086 sound/pci/rme96.c 	rme96->capture_periodsize =
rme96            1087 sound/pci/rme96.c 		params_period_size(params) << rme96->capture_frlog;
rme96            1088 sound/pci/rme96.c 	snd_rme96_set_period_properties(rme96, rme96->capture_periodsize);
rme96            1089 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1095 sound/pci/rme96.c snd_rme96_trigger(struct rme96 *rme96,
rme96            1099 sound/pci/rme96.c 		writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS);
rme96            1101 sound/pci/rme96.c 		writel(0, rme96->iobase + RME96_IO_RESET_REC_POS);
rme96            1103 sound/pci/rme96.c 		rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1104 sound/pci/rme96.c 		if (rme96->rcreg & RME96_RCR_IRQ)
rme96            1105 sound/pci/rme96.c 			writel(0, rme96->iobase + RME96_IO_CONFIRM_PLAY_IRQ);
rme96            1108 sound/pci/rme96.c 		rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1109 sound/pci/rme96.c 		if (rme96->rcreg & RME96_RCR_IRQ_2)
rme96            1110 sound/pci/rme96.c 			writel(0, rme96->iobase + RME96_IO_CONFIRM_REC_IRQ);
rme96            1113 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_START;
rme96            1115 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_START;
rme96            1117 sound/pci/rme96.c 		rme96->wcreg |= RME96_WCR_START_2;
rme96            1119 sound/pci/rme96.c 		rme96->wcreg &= ~RME96_WCR_START_2;
rme96            1120 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1129 sound/pci/rme96.c 	struct rme96 *rme96 = (struct rme96 *)dev_id;
rme96            1131 sound/pci/rme96.c 	rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1133 sound/pci/rme96.c 	if (!((rme96->rcreg & RME96_RCR_IRQ) ||
rme96            1134 sound/pci/rme96.c 	      (rme96->rcreg & RME96_RCR_IRQ_2)))
rme96            1139 sound/pci/rme96.c 	if (rme96->rcreg & RME96_RCR_IRQ) {
rme96            1141 sound/pci/rme96.c                 snd_pcm_period_elapsed(rme96->playback_substream);
rme96            1142 sound/pci/rme96.c 		writel(0, rme96->iobase + RME96_IO_CONFIRM_PLAY_IRQ);
rme96            1144 sound/pci/rme96.c 	if (rme96->rcreg & RME96_RCR_IRQ_2) {
rme96            1146 sound/pci/rme96.c 		snd_pcm_period_elapsed(rme96->capture_substream);		
rme96            1147 sound/pci/rme96.c 		writel(0, rme96->iobase + RME96_IO_CONFIRM_REC_IRQ);
rme96            1161 sound/pci/rme96.c rme96_set_buffer_size_constraint(struct rme96 *rme96,
rme96            1168 sound/pci/rme96.c 	if ((size = rme96->playback_periodsize) != 0 ||
rme96            1169 sound/pci/rme96.c 	    (size = rme96->capture_periodsize) != 0)
rme96            1183 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1187 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1188 sound/pci/rme96.c 	if (rme96->playback_substream) {
rme96            1189 sound/pci/rme96.c 		spin_unlock_irq(&rme96->lock);
rme96            1192 sound/pci/rme96.c 	rme96->wcreg &= ~RME96_WCR_ADAT;
rme96            1193 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1194 sound/pci/rme96.c 	rme96->playback_substream = substream;
rme96            1195 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1198 sound/pci/rme96.c 	if (!(rme96->wcreg & RME96_WCR_MASTER) &&
rme96            1199 sound/pci/rme96.c             snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG &&
rme96            1200 sound/pci/rme96.c 	    (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0)
rme96            1207 sound/pci/rme96.c 	rme96_set_buffer_size_constraint(rme96, runtime);
rme96            1209 sound/pci/rme96.c 	rme96->wcreg_spdif_stream = rme96->wcreg_spdif;
rme96            1210 sound/pci/rme96.c 	rme96->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
rme96            1211 sound/pci/rme96.c 	snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE |
rme96            1212 sound/pci/rme96.c 		       SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id);
rme96            1220 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1225 sound/pci/rme96.c         if (snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG &&
rme96            1226 sound/pci/rme96.c             (rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0)
rme96            1236 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            1237 sound/pci/rme96.c 	if (rme96->capture_substream) {
rme96            1238 sound/pci/rme96.c 		spin_unlock_irq(&rme96->lock);
rme96            1241 sound/pci/rme96.c 	rme96->capture_substream = substream;
rme96            1242 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1244 sound/pci/rme96.c 	rme96_set_buffer_size_constraint(rme96, runtime);
rme96            1252 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1256 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1257 sound/pci/rme96.c 	if (rme96->playback_substream) {
rme96            1258 sound/pci/rme96.c 		spin_unlock_irq(&rme96->lock);
rme96            1261 sound/pci/rme96.c 	rme96->wcreg |= RME96_WCR_ADAT;
rme96            1262 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1263 sound/pci/rme96.c 	rme96->playback_substream = substream;
rme96            1264 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1267 sound/pci/rme96.c 	if (!(rme96->wcreg & RME96_WCR_MASTER) &&
rme96            1268 sound/pci/rme96.c             snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG &&
rme96            1269 sound/pci/rme96.c 	    (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0)
rme96            1276 sound/pci/rme96.c 	rme96_set_buffer_size_constraint(rme96, runtime);
rme96            1284 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1289 sound/pci/rme96.c         if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) {
rme96            1294 sound/pci/rme96.c         if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) {
rme96            1303 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1304 sound/pci/rme96.c 	if (rme96->capture_substream) {
rme96            1305 sound/pci/rme96.c 		spin_unlock_irq(&rme96->lock);
rme96            1308 sound/pci/rme96.c 	rme96->capture_substream = substream;
rme96            1309 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1311 sound/pci/rme96.c 	rme96_set_buffer_size_constraint(rme96, runtime);
rme96            1318 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1321 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1322 sound/pci/rme96.c 	if (RME96_ISPLAYING(rme96)) {
rme96            1323 sound/pci/rme96.c 		snd_rme96_trigger(rme96, RME96_STOP_PLAYBACK);
rme96            1325 sound/pci/rme96.c 	rme96->playback_substream = NULL;
rme96            1326 sound/pci/rme96.c 	rme96->playback_periodsize = 0;
rme96            1327 sound/pci/rme96.c 	spdif = (rme96->wcreg & RME96_WCR_ADAT) == 0;
rme96            1328 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1330 sound/pci/rme96.c 		rme96->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
rme96            1331 sound/pci/rme96.c 		snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE |
rme96            1332 sound/pci/rme96.c 			       SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id);
rme96            1340 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1342 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1343 sound/pci/rme96.c 	if (RME96_ISRECORDING(rme96)) {
rme96            1344 sound/pci/rme96.c 		snd_rme96_trigger(rme96, RME96_STOP_CAPTURE);
rme96            1346 sound/pci/rme96.c 	rme96->capture_substream = NULL;
rme96            1347 sound/pci/rme96.c 	rme96->capture_periodsize = 0;
rme96            1348 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1355 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1357 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1358 sound/pci/rme96.c 	if (RME96_ISPLAYING(rme96)) {
rme96            1359 sound/pci/rme96.c 		snd_rme96_trigger(rme96, RME96_STOP_PLAYBACK);
rme96            1361 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS);
rme96            1362 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1369 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1371 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);	
rme96            1372 sound/pci/rme96.c 	if (RME96_ISRECORDING(rme96)) {
rme96            1373 sound/pci/rme96.c 		snd_rme96_trigger(rme96, RME96_STOP_CAPTURE);
rme96            1375 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_RESET_REC_POS);
rme96            1376 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1384 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1389 sound/pci/rme96.c 		if (snd_pcm_substream_chip(s) == rme96)
rme96            1393 sound/pci/rme96.c 	sync = (rme96->playback_substream && rme96->capture_substream) &&
rme96            1394 sound/pci/rme96.c 	       (rme96->playback_substream->group ==
rme96            1395 sound/pci/rme96.c 		rme96->capture_substream->group);
rme96            1399 sound/pci/rme96.c 		if (!RME96_ISPLAYING(rme96)) {
rme96            1400 sound/pci/rme96.c 			if (substream != rme96->playback_substream)
rme96            1402 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_START_BOTH
rme96            1409 sound/pci/rme96.c 		if (RME96_ISPLAYING(rme96)) {
rme96            1410 sound/pci/rme96.c 			if (substream != rme96->playback_substream)
rme96            1412 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
rme96            1418 sound/pci/rme96.c 		if (RME96_ISPLAYING(rme96))
rme96            1419 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
rme96            1425 sound/pci/rme96.c 		if (!RME96_ISPLAYING(rme96))
rme96            1426 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_RESUME_BOTH
rme96            1441 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1446 sound/pci/rme96.c 		if (snd_pcm_substream_chip(s) == rme96)
rme96            1450 sound/pci/rme96.c 	sync = (rme96->playback_substream && rme96->capture_substream) &&
rme96            1451 sound/pci/rme96.c 	       (rme96->playback_substream->group ==
rme96            1452 sound/pci/rme96.c 		rme96->capture_substream->group);
rme96            1456 sound/pci/rme96.c 		if (!RME96_ISRECORDING(rme96)) {
rme96            1457 sound/pci/rme96.c 			if (substream != rme96->capture_substream)
rme96            1459 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_START_BOTH
rme96            1466 sound/pci/rme96.c 		if (RME96_ISRECORDING(rme96)) {
rme96            1467 sound/pci/rme96.c 			if (substream != rme96->capture_substream)
rme96            1469 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
rme96            1475 sound/pci/rme96.c 		if (RME96_ISRECORDING(rme96))
rme96            1476 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_STOP_BOTH
rme96            1482 sound/pci/rme96.c 		if (!RME96_ISRECORDING(rme96))
rme96            1483 sound/pci/rme96.c 			snd_rme96_trigger(rme96, sync ? RME96_RESUME_BOTH
rme96            1497 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1498 sound/pci/rme96.c 	return snd_rme96_playback_ptr(rme96);
rme96            1504 sound/pci/rme96.c 	struct rme96 *rme96 = snd_pcm_substream_chip(substream);
rme96            1505 sound/pci/rme96.c 	return snd_rme96_capture_ptr(rme96);
rme96            1565 sound/pci/rme96.c 	struct rme96 *rme96 = (struct rme96 *)private_data;
rme96            1567 sound/pci/rme96.c 	if (!rme96)
rme96            1570 sound/pci/rme96.c 	if (rme96->irq >= 0) {
rme96            1571 sound/pci/rme96.c 		snd_rme96_trigger(rme96, RME96_STOP_BOTH);
rme96            1572 sound/pci/rme96.c 		rme96->areg &= ~RME96_AR_DAC_EN;
rme96            1573 sound/pci/rme96.c 		writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            1574 sound/pci/rme96.c 		free_irq(rme96->irq, (void *)rme96);
rme96            1575 sound/pci/rme96.c 		rme96->irq = -1;
rme96            1577 sound/pci/rme96.c 	if (rme96->iobase) {
rme96            1578 sound/pci/rme96.c 		iounmap(rme96->iobase);
rme96            1579 sound/pci/rme96.c 		rme96->iobase = NULL;
rme96            1581 sound/pci/rme96.c 	if (rme96->port) {
rme96            1582 sound/pci/rme96.c 		pci_release_regions(rme96->pci);
rme96            1583 sound/pci/rme96.c 		rme96->port = 0;
rme96            1586 sound/pci/rme96.c 	vfree(rme96->playback_suspend_buffer);
rme96            1587 sound/pci/rme96.c 	vfree(rme96->capture_suspend_buffer);
rme96            1589 sound/pci/rme96.c 	pci_disable_device(rme96->pci);
rme96            1595 sound/pci/rme96.c 	struct rme96 *rme96 = pcm->private_data;
rme96            1596 sound/pci/rme96.c 	rme96->spdif_pcm = NULL;
rme96            1602 sound/pci/rme96.c 	struct rme96 *rme96 = pcm->private_data;
rme96            1603 sound/pci/rme96.c 	rme96->adat_pcm = NULL;
rme96            1607 sound/pci/rme96.c snd_rme96_create(struct rme96 *rme96)
rme96            1609 sound/pci/rme96.c 	struct pci_dev *pci = rme96->pci;
rme96            1612 sound/pci/rme96.c 	rme96->irq = -1;
rme96            1613 sound/pci/rme96.c 	spin_lock_init(&rme96->lock);
rme96            1620 sound/pci/rme96.c 	rme96->port = pci_resource_start(rme96->pci, 0);
rme96            1622 sound/pci/rme96.c 	rme96->iobase = ioremap_nocache(rme96->port, RME96_IO_SIZE);
rme96            1623 sound/pci/rme96.c 	if (!rme96->iobase) {
rme96            1624 sound/pci/rme96.c 		dev_err(rme96->card->dev,
rme96            1626 sound/pci/rme96.c 			rme96->port, rme96->port + RME96_IO_SIZE - 1);
rme96            1631 sound/pci/rme96.c 			KBUILD_MODNAME, rme96)) {
rme96            1632 sound/pci/rme96.c 		dev_err(rme96->card->dev, "unable to grab IRQ %d\n", pci->irq);
rme96            1635 sound/pci/rme96.c 	rme96->irq = pci->irq;
rme96            1638 sound/pci/rme96.c 	pci_read_config_byte(pci, 8, &rme96->rev);	
rme96            1641 sound/pci/rme96.c 	if ((err = snd_pcm_new(rme96->card, "Digi96 IEC958", 0,
rme96            1642 sound/pci/rme96.c 			       1, 1, &rme96->spdif_pcm)) < 0)
rme96            1646 sound/pci/rme96.c 	rme96->spdif_pcm->private_data = rme96;
rme96            1647 sound/pci/rme96.c 	rme96->spdif_pcm->private_free = snd_rme96_free_spdif_pcm;
rme96            1648 sound/pci/rme96.c 	strcpy(rme96->spdif_pcm->name, "Digi96 IEC958");
rme96            1649 sound/pci/rme96.c 	snd_pcm_set_ops(rme96->spdif_pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_rme96_playback_spdif_ops);
rme96            1650 sound/pci/rme96.c 	snd_pcm_set_ops(rme96->spdif_pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_rme96_capture_spdif_ops);
rme96            1652 sound/pci/rme96.c 	rme96->spdif_pcm->info_flags = 0;
rme96            1657 sound/pci/rme96.c 		rme96->adat_pcm = NULL;
rme96            1659 sound/pci/rme96.c 		if ((err = snd_pcm_new(rme96->card, "Digi96 ADAT", 1,
rme96            1660 sound/pci/rme96.c 				       1, 1, &rme96->adat_pcm)) < 0)
rme96            1664 sound/pci/rme96.c 		rme96->adat_pcm->private_data = rme96;
rme96            1665 sound/pci/rme96.c 		rme96->adat_pcm->private_free = snd_rme96_free_adat_pcm;
rme96            1666 sound/pci/rme96.c 		strcpy(rme96->adat_pcm->name, "Digi96 ADAT");
rme96            1667 sound/pci/rme96.c 		snd_pcm_set_ops(rme96->adat_pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_rme96_playback_adat_ops);
rme96            1668 sound/pci/rme96.c 		snd_pcm_set_ops(rme96->adat_pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_rme96_capture_adat_ops);
rme96            1670 sound/pci/rme96.c 		rme96->adat_pcm->info_flags = 0;
rme96            1673 sound/pci/rme96.c 	rme96->playback_periodsize = 0;
rme96            1674 sound/pci/rme96.c 	rme96->capture_periodsize = 0;
rme96            1677 sound/pci/rme96.c 	snd_rme96_trigger(rme96, RME96_STOP_BOTH);
rme96            1680 sound/pci/rme96.c 	rme96->wcreg =
rme96            1686 sound/pci/rme96.c 	rme96->areg = RME96_AR_FREQPAD_1; /* set 44.1 kHz analog capture */
rme96            1688 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1689 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            1692 sound/pci/rme96.c 	writel(rme96->areg | RME96_AR_PD2,
rme96            1693 sound/pci/rme96.c 	       rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            1694 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);	
rme96            1697 sound/pci/rme96.c 	snd_rme96_reset_dac(rme96);
rme96            1698 sound/pci/rme96.c 	rme96->areg |= RME96_AR_DAC_EN;
rme96            1699 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            1702 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_RESET_PLAY_POS);
rme96            1703 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_RESET_REC_POS);
rme96            1706 sound/pci/rme96.c 	rme96->vol[0] = rme96->vol[1] = 0;
rme96            1707 sound/pci/rme96.c 	if (RME96_HAS_ANALOG_OUT(rme96)) {
rme96            1708 sound/pci/rme96.c 		snd_rme96_apply_dac_volume(rme96);
rme96            1712 sound/pci/rme96.c 	if ((err = snd_rme96_create_switches(rme96->card, rme96)) < 0) {
rme96            1717 sound/pci/rme96.c 	snd_rme96_proc_init(rme96);
rme96            1730 sound/pci/rme96.c 	struct rme96 *rme96 = entry->private_data;
rme96            1732 sound/pci/rme96.c 	rme96->rcreg = readl(rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1734 sound/pci/rme96.c 	snd_iprintf(buffer, rme96->card->longname);
rme96            1735 sound/pci/rme96.c 	snd_iprintf(buffer, " (index #%d)\n", rme96->card->number + 1);
rme96            1738 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_IDIS) {
rme96            1741 sound/pci/rme96.c 	} else if (rme96->wcreg & RME96_WCR_ISEL) {
rme96            1747 sound/pci/rme96.c 	switch (snd_rme96_getinputtype(rme96)) {
rme96            1764 sound/pci/rme96.c 	if (snd_rme96_capture_getrate(rme96, &n) < 0) {
rme96            1773 sound/pci/rme96.c 			    snd_rme96_capture_getrate(rme96, &n));
rme96            1775 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_MODE24_2) {
rme96            1782 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_SEL) {
rme96            1788 sound/pci/rme96.c 		    snd_rme96_playback_getrate(rme96));
rme96            1789 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_MODE24) {
rme96            1794 sound/pci/rme96.c 	if (rme96->areg & RME96_AR_WSEL) {
rme96            1796 sound/pci/rme96.c 	} else if (rme96->wcreg & RME96_WCR_MASTER) {
rme96            1798 sound/pci/rme96.c 	} else if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) {
rme96            1800 sound/pci/rme96.c 	} else if (snd_rme96_capture_getrate(rme96, &n) < 0) {
rme96            1805 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_PRO) {
rme96            1810 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_EMP) {
rme96            1815 sound/pci/rme96.c 	if (rme96->wcreg & RME96_WCR_DOLBY) {
rme96            1820 sound/pci/rme96.c 	if (RME96_HAS_ANALOG_IN(rme96)) {
rme96            1822 sound/pci/rme96.c 		switch (snd_rme96_getmontracks(rme96)) {
rme96            1836 sound/pci/rme96.c 		switch (snd_rme96_getattenuation(rme96)) {
rme96            1850 sound/pci/rme96.c 		snd_iprintf(buffer, "  volume left: %u\n", rme96->vol[0]);
rme96            1851 sound/pci/rme96.c 		snd_iprintf(buffer, "  volume right: %u\n", rme96->vol[1]);
rme96            1855 sound/pci/rme96.c static void snd_rme96_proc_init(struct rme96 *rme96)
rme96            1857 sound/pci/rme96.c 	snd_card_ro_proc_new(rme96->card, "rme96", rme96, snd_rme96_proc_read);
rme96            1869 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            1871 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            1872 sound/pci/rme96.c 	ucontrol->value.integer.value[0] = rme96->wcreg & RME96_WCR_SEL ? 0 : 1;
rme96            1873 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1879 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            1884 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            1885 sound/pci/rme96.c 	val = (rme96->wcreg & ~RME96_WCR_SEL) | val;
rme96            1886 sound/pci/rme96.c 	change = val != rme96->wcreg;
rme96            1887 sound/pci/rme96.c 	rme96->wcreg = val;
rme96            1888 sound/pci/rme96.c 	writel(val, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            1889 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1899 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            1905 sound/pci/rme96.c 	switch (rme96->pci->device) {
rme96            1914 sound/pci/rme96.c 		if (rme96->rev > 4) {
rme96            1932 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            1935 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            1936 sound/pci/rme96.c 	ucontrol->value.enumerated.item[0] = snd_rme96_getinputtype(rme96);
rme96            1938 sound/pci/rme96.c 	switch (rme96->pci->device) {
rme96            1947 sound/pci/rme96.c 		if (rme96->rev > 4) {
rme96            1965 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            1971 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            1975 sound/pci/rme96.c 	switch (rme96->pci->device) {
rme96            1984 sound/pci/rme96.c 		if (rme96->rev > 4) {
rme96            1997 sound/pci/rme96.c 	if (rme96->pci->device == PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST && rme96->rev > 4) {
rme96            2003 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2004 sound/pci/rme96.c 	change = (int)val != snd_rme96_getinputtype(rme96);
rme96            2005 sound/pci/rme96.c 	snd_rme96_setinputtype(rme96, val);
rme96            2006 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2020 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2022 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2023 sound/pci/rme96.c 	ucontrol->value.enumerated.item[0] = snd_rme96_getclockmode(rme96);
rme96            2024 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2030 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2035 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2036 sound/pci/rme96.c 	change = (int)val != snd_rme96_getclockmode(rme96);
rme96            2037 sound/pci/rme96.c 	snd_rme96_setclockmode(rme96, val);
rme96            2038 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2054 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2056 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2057 sound/pci/rme96.c 	ucontrol->value.enumerated.item[0] = snd_rme96_getattenuation(rme96);
rme96            2058 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2064 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2069 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2071 sound/pci/rme96.c 	change = (int)val != snd_rme96_getattenuation(rme96);
rme96            2072 sound/pci/rme96.c 	snd_rme96_setattenuation(rme96, val);
rme96            2073 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2087 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2089 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2090 sound/pci/rme96.c 	ucontrol->value.enumerated.item[0] = snd_rme96_getmontracks(rme96);
rme96            2091 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2097 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2102 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2103 sound/pci/rme96.c 	change = (int)val != snd_rme96_getmontracks(rme96);
rme96            2104 sound/pci/rme96.c 	snd_rme96_setmontracks(rme96, val);
rme96            2105 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2140 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2142 sound/pci/rme96.c 	snd_rme96_convert_to_aes(&ucontrol->value.iec958, rme96->wcreg_spdif);
rme96            2148 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2153 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2154 sound/pci/rme96.c 	change = val != rme96->wcreg_spdif;
rme96            2155 sound/pci/rme96.c 	rme96->wcreg_spdif = val;
rme96            2156 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2169 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2171 sound/pci/rme96.c 	snd_rme96_convert_to_aes(&ucontrol->value.iec958, rme96->wcreg_spdif_stream);
rme96            2177 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2182 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2183 sound/pci/rme96.c 	change = val != rme96->wcreg_spdif_stream;
rme96            2184 sound/pci/rme96.c 	rme96->wcreg_spdif_stream = val;
rme96            2185 sound/pci/rme96.c 	rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP);
rme96            2186 sound/pci/rme96.c 	rme96->wcreg |= val;
rme96            2187 sound/pci/rme96.c 	writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
rme96            2188 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2208 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2213 sound/pci/rme96.c 	uinfo->value.integer.max = RME96_185X_MAX_OUT(rme96);
rme96            2220 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2222 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2223 sound/pci/rme96.c         u->value.integer.value[0] = rme96->vol[0];
rme96            2224 sound/pci/rme96.c         u->value.integer.value[1] = rme96->vol[1];
rme96            2225 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2233 sound/pci/rme96.c 	struct rme96 *rme96 = snd_kcontrol_chip(kcontrol);
rme96            2238 sound/pci/rme96.c 	if (!RME96_HAS_ANALOG_OUT(rme96))
rme96            2240 sound/pci/rme96.c 	maxvol = RME96_185X_MAX_OUT(rme96);
rme96            2241 sound/pci/rme96.c 	spin_lock_irq(&rme96->lock);
rme96            2243 sound/pci/rme96.c 	if (vol != rme96->vol[0] && vol <= maxvol) {
rme96            2244 sound/pci/rme96.c 		rme96->vol[0] = vol;
rme96            2248 sound/pci/rme96.c 	if (vol != rme96->vol[1] && vol <= maxvol) {
rme96            2249 sound/pci/rme96.c 		rme96->vol[1] = vol;
rme96            2253 sound/pci/rme96.c 		snd_rme96_apply_dac_volume(rme96);
rme96            2254 sound/pci/rme96.c 	spin_unlock_irq(&rme96->lock);
rme96            2341 sound/pci/rme96.c 			  struct rme96 *rme96)
rme96            2347 sound/pci/rme96.c 		if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0)
rme96            2350 sound/pci/rme96.c 			rme96->spdif_ctl = kctl;
rme96            2353 sound/pci/rme96.c 	if (RME96_HAS_ANALOG_OUT(rme96)) {
rme96            2355 sound/pci/rme96.c 			if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0)
rme96            2371 sound/pci/rme96.c 	struct rme96 *rme96 = card->private_data;
rme96            2376 sound/pci/rme96.c 	rme96->playback_pointer = readl(rme96->iobase + RME96_IO_GET_PLAY_POS)
rme96            2378 sound/pci/rme96.c 	rme96->capture_pointer = readl(rme96->iobase + RME96_IO_GET_REC_POS)
rme96            2382 sound/pci/rme96.c 	memcpy_fromio(rme96->playback_suspend_buffer,
rme96            2383 sound/pci/rme96.c 		      rme96->iobase + RME96_IO_PLAY_BUFFER, RME96_BUFFER_SIZE);
rme96            2384 sound/pci/rme96.c 	memcpy_fromio(rme96->capture_suspend_buffer,
rme96            2385 sound/pci/rme96.c 		      rme96->iobase + RME96_IO_REC_BUFFER, RME96_BUFFER_SIZE);
rme96            2388 sound/pci/rme96.c 	rme96->areg &= ~RME96_AR_DAC_EN;
rme96            2389 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            2396 sound/pci/rme96.c 	struct rme96 *rme96 = card->private_data;
rme96            2399 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_SET_PLAY_POS
rme96            2400 sound/pci/rme96.c 		  + rme96->playback_pointer);
rme96            2401 sound/pci/rme96.c 	writel(0, rme96->iobase + RME96_IO_SET_REC_POS
rme96            2402 sound/pci/rme96.c 		  + rme96->capture_pointer);
rme96            2405 sound/pci/rme96.c 	memcpy_toio(rme96->iobase + RME96_IO_PLAY_BUFFER,
rme96            2406 sound/pci/rme96.c 		    rme96->playback_suspend_buffer, RME96_BUFFER_SIZE);
rme96            2407 sound/pci/rme96.c 	memcpy_toio(rme96->iobase + RME96_IO_REC_BUFFER,
rme96            2408 sound/pci/rme96.c 		    rme96->capture_suspend_buffer, RME96_BUFFER_SIZE);
rme96            2411 sound/pci/rme96.c 	writel(rme96->areg | RME96_AR_PD2,
rme96            2412 sound/pci/rme96.c 	       rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            2413 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            2416 sound/pci/rme96.c 	snd_rme96_reset_dac(rme96);
rme96            2417 sound/pci/rme96.c 	rme96->areg |= RME96_AR_DAC_EN;
rme96            2418 sound/pci/rme96.c 	writel(rme96->areg, rme96->iobase + RME96_IO_ADDITIONAL_REG);
rme96            2419 sound/pci/rme96.c 	if (RME96_HAS_ANALOG_OUT(rme96)) {
rme96            2421 sound/pci/rme96.c 		snd_rme96_apply_dac_volume(rme96);
rme96            2445 sound/pci/rme96.c 	struct rme96 *rme96;
rme96            2458 sound/pci/rme96.c 			   sizeof(struct rme96), &card);
rme96            2462 sound/pci/rme96.c 	rme96 = card->private_data;
rme96            2463 sound/pci/rme96.c 	rme96->card = card;
rme96            2464 sound/pci/rme96.c 	rme96->pci = pci;
rme96            2465 sound/pci/rme96.c 	err = snd_rme96_create(rme96);
rme96            2470 sound/pci/rme96.c 	rme96->playback_suspend_buffer = vmalloc(RME96_BUFFER_SIZE);
rme96            2471 sound/pci/rme96.c 	if (!rme96->playback_suspend_buffer) {
rme96            2475 sound/pci/rme96.c 	rme96->capture_suspend_buffer = vmalloc(RME96_BUFFER_SIZE);
rme96            2476 sound/pci/rme96.c 	if (!rme96->capture_suspend_buffer) {
rme96            2483 sound/pci/rme96.c 	switch (rme96->pci->device) {
rme96            2494 sound/pci/rme96.c 		pci_read_config_byte(rme96->pci, 8, &val);
rme96            2503 sound/pci/rme96.c 		rme96->port, rme96->irq);