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);