rme9652 309 sound/pci/rme9652/rme9652.c static inline void rme9652_write(struct snd_rme9652 *rme9652, int reg, int val) rme9652 311 sound/pci/rme9652/rme9652.c writel(val, rme9652->iobase + reg); rme9652 314 sound/pci/rme9652/rme9652.c static inline unsigned int rme9652_read(struct snd_rme9652 *rme9652, int reg) rme9652 316 sound/pci/rme9652/rme9652.c return readl(rme9652->iobase + reg); rme9652 319 sound/pci/rme9652/rme9652.c static inline int snd_rme9652_use_is_exclusive(struct snd_rme9652 *rme9652) rme9652 324 sound/pci/rme9652/rme9652.c spin_lock_irqsave(&rme9652->lock, flags); rme9652 325 sound/pci/rme9652/rme9652.c if ((rme9652->playback_pid != rme9652->capture_pid) && rme9652 326 sound/pci/rme9652/rme9652.c (rme9652->playback_pid >= 0) && (rme9652->capture_pid >= 0)) { rme9652 329 sound/pci/rme9652/rme9652.c spin_unlock_irqrestore(&rme9652->lock, flags); rme9652 333 sound/pci/rme9652/rme9652.c static inline int rme9652_adat_sample_rate(struct snd_rme9652 *rme9652) rme9652 335 sound/pci/rme9652/rme9652.c if (rme9652_running_double_speed(rme9652)) { rme9652 336 sound/pci/rme9652/rme9652.c return (rme9652_read(rme9652, RME9652_status_register) & rme9652 339 sound/pci/rme9652/rme9652.c return (rme9652_read(rme9652, RME9652_status_register) & rme9652 344 sound/pci/rme9652/rme9652.c static inline void rme9652_compute_period_size(struct snd_rme9652 *rme9652) rme9652 348 sound/pci/rme9652/rme9652.c i = rme9652->control_register & RME9652_latency; rme9652 349 sound/pci/rme9652/rme9652.c rme9652->period_bytes = 1 << ((rme9652_decode_latency(i) + 8)); rme9652 350 sound/pci/rme9652/rme9652.c rme9652->hw_offsetmask = rme9652 351 sound/pci/rme9652/rme9652.c (rme9652->period_bytes * 2 - 1) & RME9652_buf_pos; rme9652 352 sound/pci/rme9652/rme9652.c rme9652->max_jitter = 80; rme9652 355 sound/pci/rme9652/rme9652.c static snd_pcm_uframes_t rme9652_hw_pointer(struct snd_rme9652 *rme9652) rme9652 359 sound/pci/rme9652/rme9652.c snd_pcm_uframes_t period_size = rme9652->period_bytes / 4; rme9652 362 sound/pci/rme9652/rme9652.c status = rme9652_read(rme9652, RME9652_status_register); rme9652 363 sound/pci/rme9652/rme9652.c if (!rme9652->precise_ptr) rme9652 371 sound/pci/rme9652/rme9652.c delta = rme9652->prev_hw_offset - offset; rme9652 373 sound/pci/rme9652/rme9652.c if (delta <= (snd_pcm_sframes_t)rme9652->max_jitter * 4) rme9652 374 sound/pci/rme9652/rme9652.c offset = rme9652->prev_hw_offset; rme9652 376 sound/pci/rme9652/rme9652.c rme9652->prev_hw_offset = offset; rme9652 377 sound/pci/rme9652/rme9652.c offset &= rme9652->hw_offsetmask; rme9652 382 sound/pci/rme9652/rme9652.c if (offset > rme9652->max_jitter) { rme9652 384 sound/pci/rme9652/rme9652.c dev_err(rme9652->card->dev, rme9652 389 sound/pci/rme9652/rme9652.c offset -= rme9652->max_jitter; rme9652 393 sound/pci/rme9652/rme9652.c if (offset > period_size + rme9652->max_jitter) { rme9652 395 sound/pci/rme9652/rme9652.c dev_err(rme9652->card->dev, rme9652 400 sound/pci/rme9652/rme9652.c offset -= rme9652->max_jitter; rme9652 406 sound/pci/rme9652/rme9652.c static inline void rme9652_reset_hw_pointer(struct snd_rme9652 *rme9652) rme9652 417 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, i * 4, 0); rme9652 420 sound/pci/rme9652/rme9652.c rme9652->prev_hw_offset = 0; rme9652 469 sound/pci/rme9652/rme9652.c static int rme9652_set_rate(struct snd_rme9652 *rme9652, int rate) rme9652 475 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive (rme9652)) { rme9652 490 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 491 sound/pci/rme9652/rme9652.c xrate = rme9652_adat_sample_rate(rme9652); rme9652 519 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 523 sound/pci/rme9652/rme9652.c if (reject_if_open && (rme9652->capture_pid >= 0 || rme9652->playback_pid >= 0)) { rme9652 524 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 528 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 529 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 531 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~(RME9652_freq | RME9652_DS); rme9652 532 sound/pci/rme9652/rme9652.c rme9652->control_register |= rate; rme9652 533 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 536 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 540 sound/pci/rme9652/rme9652.c if (rme9652->ss_channels == RME9652_NCHANNELS) { rme9652 541 sound/pci/rme9652/rme9652.c rme9652->channel_map = channel_map_9652_ds; rme9652 543 sound/pci/rme9652/rme9652.c rme9652->channel_map = channel_map_9636_ds; rme9652 546 sound/pci/rme9652/rme9652.c if (rme9652->ss_channels == RME9652_NCHANNELS) { rme9652 547 sound/pci/rme9652/rme9652.c rme9652->channel_map = channel_map_9652_ss; rme9652 549 sound/pci/rme9652/rme9652.c rme9652->channel_map = channel_map_9636_ss; rme9652 553 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 557 sound/pci/rme9652/rme9652.c static void rme9652_set_thru(struct snd_rme9652 *rme9652, int channel, int enable) rme9652 561 sound/pci/rme9652/rme9652.c rme9652->passthru = 0; rme9652 569 sound/pci/rme9652/rme9652.c rme9652->thru_bits |= (1 << i); rme9652 570 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_thru_base + i * 4, 1); rme9652 574 sound/pci/rme9652/rme9652.c rme9652->thru_bits &= ~(1 << i); rme9652 575 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_thru_base + i * 4, 0); rme9652 582 sound/pci/rme9652/rme9652.c mapped_channel = rme9652->channel_map[channel]; rme9652 585 sound/pci/rme9652/rme9652.c rme9652->thru_bits |= (1 << mapped_channel); rme9652 587 sound/pci/rme9652/rme9652.c rme9652->thru_bits &= ~(1 << mapped_channel); rme9652 590 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, rme9652 596 sound/pci/rme9652/rme9652.c static int rme9652_set_passthru(struct snd_rme9652 *rme9652, int onoff) rme9652 599 sound/pci/rme9652/rme9652.c rme9652_set_thru(rme9652, -1, 1); rme9652 605 sound/pci/rme9652/rme9652.c rme9652->control_register = rme9652 610 sound/pci/rme9652/rme9652.c rme9652_reset_hw_pointer(rme9652); rme9652 612 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652 613 sound/pci/rme9652/rme9652.c rme9652->control_register); rme9652 614 sound/pci/rme9652/rme9652.c rme9652->passthru = 1; rme9652 616 sound/pci/rme9652/rme9652.c rme9652_set_thru(rme9652, -1, 0); rme9652 617 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 618 sound/pci/rme9652/rme9652.c rme9652->passthru = 0; rme9652 624 sound/pci/rme9652/rme9652.c static void rme9652_spdif_set_bit (struct snd_rme9652 *rme9652, int mask, int onoff) rme9652 627 sound/pci/rme9652/rme9652.c rme9652->control_register |= mask; rme9652 629 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~mask; rme9652 631 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 634 sound/pci/rme9652/rme9652.c static void rme9652_spdif_write_byte (struct snd_rme9652 *rme9652, const int val) rme9652 641 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 1); rme9652 643 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 0); rme9652 645 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); rme9652 646 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); rme9652 650 sound/pci/rme9652/rme9652.c static int rme9652_spdif_read_byte (struct snd_rme9652 *rme9652) rme9652 659 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); rme9652 660 sound/pci/rme9652/rme9652.c if (rme9652_read (rme9652, RME9652_status_register) & RME9652_SPDIF_READ) rme9652 662 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); rme9652 668 sound/pci/rme9652/rme9652.c static void rme9652_write_spdif_codec (struct snd_rme9652 *rme9652, const int address, const int data) rme9652 670 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); rme9652 671 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, 0x20); rme9652 672 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, address); rme9652 673 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, data); rme9652 674 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); rme9652 678 sound/pci/rme9652/rme9652.c static int rme9652_spdif_read_codec (struct snd_rme9652 *rme9652, const int address) rme9652 682 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); rme9652 683 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, 0x20); rme9652 684 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, address); rme9652 685 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); rme9652 686 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); rme9652 688 sound/pci/rme9652/rme9652.c rme9652_spdif_write_byte (rme9652, 0x21); rme9652 689 sound/pci/rme9652/rme9652.c ret = rme9652_spdif_read_byte (rme9652); rme9652 690 sound/pci/rme9652/rme9652.c rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); rme9652 695 sound/pci/rme9652/rme9652.c static void rme9652_initialize_spdif_receiver (struct snd_rme9652 *rme9652) rme9652 699 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_SPDIF_RESET; rme9652 701 sound/pci/rme9652/rme9652.c rme9652_write_spdif_codec (rme9652, 4, 0x40); rme9652 702 sound/pci/rme9652/rme9652.c rme9652_write_spdif_codec (rme9652, 17, 0x13); rme9652 703 sound/pci/rme9652/rme9652.c rme9652_write_spdif_codec (rme9652, 6, 0x02); rme9652 806 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 808 sound/pci/rme9652/rme9652.c snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif); rme9652 814 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 819 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 820 sound/pci/rme9652/rme9652.c change = val != rme9652->creg_spdif; rme9652 821 sound/pci/rme9652/rme9652.c rme9652->creg_spdif = val; rme9652 822 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 835 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 837 sound/pci/rme9652/rme9652.c snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif_stream); rme9652 843 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 848 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 849 sound/pci/rme9652/rme9652.c change = val != rme9652->creg_spdif_stream; rme9652 850 sound/pci/rme9652/rme9652.c rme9652->creg_spdif_stream = val; rme9652 851 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); rme9652 852 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= val); rme9652 853 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 876 sound/pci/rme9652/rme9652.c static unsigned int rme9652_adat1_in(struct snd_rme9652 *rme9652) rme9652 878 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_ADAT1_INTERNAL) rme9652 883 sound/pci/rme9652/rme9652.c static int rme9652_set_adat1_input(struct snd_rme9652 *rme9652, int internal) rme9652 888 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_ADAT1_INTERNAL; rme9652 890 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~RME9652_ADAT1_INTERNAL; rme9652 895 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 896 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 899 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 902 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 917 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 919 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 920 sound/pci/rme9652/rme9652.c ucontrol->value.enumerated.item[0] = rme9652_adat1_in(rme9652); rme9652 921 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 927 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 931 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 934 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 935 sound/pci/rme9652/rme9652.c change = val != rme9652_adat1_in(rme9652); rme9652 937 sound/pci/rme9652/rme9652.c rme9652_set_adat1_input(rme9652, val); rme9652 938 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 947 sound/pci/rme9652/rme9652.c static unsigned int rme9652_spdif_in(struct snd_rme9652 *rme9652) rme9652 949 sound/pci/rme9652/rme9652.c return rme9652_decode_spdif_in(rme9652->control_register & rme9652 953 sound/pci/rme9652/rme9652.c static int rme9652_set_spdif_input(struct snd_rme9652 *rme9652, int in) rme9652 957 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~RME9652_inp; rme9652 958 sound/pci/rme9652/rme9652.c rme9652->control_register |= rme9652_encode_spdif_in(in); rme9652 960 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 961 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 964 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 967 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 982 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 984 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 985 sound/pci/rme9652/rme9652.c ucontrol->value.enumerated.item[0] = rme9652_spdif_in(rme9652); rme9652 986 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 992 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 996 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 999 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1000 sound/pci/rme9652/rme9652.c change = val != rme9652_spdif_in(rme9652); rme9652 1002 sound/pci/rme9652/rme9652.c rme9652_set_spdif_input(rme9652, val); rme9652 1003 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1012 sound/pci/rme9652/rme9652.c static int rme9652_spdif_out(struct snd_rme9652 *rme9652) rme9652 1014 sound/pci/rme9652/rme9652.c return (rme9652->control_register & RME9652_opt_out) ? 1 : 0; rme9652 1017 sound/pci/rme9652/rme9652.c static int rme9652_set_spdif_output(struct snd_rme9652 *rme9652, int out) rme9652 1022 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_opt_out; rme9652 1024 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~RME9652_opt_out; rme9652 1027 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 1028 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 1031 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 1034 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 1044 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1046 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1047 sound/pci/rme9652/rme9652.c ucontrol->value.integer.value[0] = rme9652_spdif_out(rme9652); rme9652 1048 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1054 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1058 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 1061 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1062 sound/pci/rme9652/rme9652.c change = (int)val != rme9652_spdif_out(rme9652); rme9652 1063 sound/pci/rme9652/rme9652.c rme9652_set_spdif_output(rme9652, val); rme9652 1064 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1073 sound/pci/rme9652/rme9652.c static int rme9652_sync_mode(struct snd_rme9652 *rme9652) rme9652 1075 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_wsel) { rme9652 1077 sound/pci/rme9652/rme9652.c } else if (rme9652->control_register & RME9652_Master) { rme9652 1084 sound/pci/rme9652/rme9652.c static int rme9652_set_sync_mode(struct snd_rme9652 *rme9652, int mode) rme9652 1090 sound/pci/rme9652/rme9652.c rme9652->control_register &= rme9652 1094 sound/pci/rme9652/rme9652.c rme9652->control_register = rme9652 1095 sound/pci/rme9652/rme9652.c (rme9652->control_register & ~RME9652_wsel) | RME9652_Master; rme9652 1098 sound/pci/rme9652/rme9652.c rme9652->control_register |= rme9652 1103 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 1104 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 1107 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 1110 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 1127 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1129 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1130 sound/pci/rme9652/rme9652.c ucontrol->value.enumerated.item[0] = rme9652_sync_mode(rme9652); rme9652 1131 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1137 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1142 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1143 sound/pci/rme9652/rme9652.c change = (int)val != rme9652_sync_mode(rme9652); rme9652 1144 sound/pci/rme9652/rme9652.c rme9652_set_sync_mode(rme9652, val); rme9652 1145 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1154 sound/pci/rme9652/rme9652.c static int rme9652_sync_pref(struct snd_rme9652 *rme9652) rme9652 1156 sound/pci/rme9652/rme9652.c switch (rme9652->control_register & RME9652_SyncPref_Mask) { rme9652 1170 sound/pci/rme9652/rme9652.c static int rme9652_set_sync_pref(struct snd_rme9652 *rme9652, int pref) rme9652 1174 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~RME9652_SyncPref_Mask; rme9652 1177 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_SyncPref_ADAT1; rme9652 1180 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_SyncPref_ADAT2; rme9652 1183 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_SyncPref_ADAT3; rme9652 1186 sound/pci/rme9652/rme9652.c rme9652->control_register |= RME9652_SyncPref_SPDIF; rme9652 1190 sound/pci/rme9652/rme9652.c if ((restart = rme9652->running)) { rme9652 1191 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 1194 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 1197 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 1208 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1211 sound/pci/rme9652/rme9652.c rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3, rme9652 1217 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1219 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1220 sound/pci/rme9652/rme9652.c ucontrol->value.enumerated.item[0] = rme9652_sync_pref(rme9652); rme9652 1221 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1227 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1231 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 1233 sound/pci/rme9652/rme9652.c max = rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3; rme9652 1235 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1236 sound/pci/rme9652/rme9652.c change = (int)val != rme9652_sync_pref(rme9652); rme9652 1237 sound/pci/rme9652/rme9652.c rme9652_set_sync_pref(rme9652, val); rme9652 1238 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1244 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1246 sound/pci/rme9652/rme9652.c uinfo->count = rme9652->ss_channels; rme9652 1254 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1256 sound/pci/rme9652/rme9652.c u32 thru_bits = rme9652->thru_bits; rme9652 1258 sound/pci/rme9652/rme9652.c for (k = 0; k < rme9652->ss_channels; ++k) { rme9652 1266 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1271 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 1274 sound/pci/rme9652/rme9652.c for (chn = 0; chn < rme9652->ss_channels; ++chn) { rme9652 1279 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1280 sound/pci/rme9652/rme9652.c change = thru_bits ^ rme9652->thru_bits; rme9652 1282 sound/pci/rme9652/rme9652.c for (chn = 0; chn < rme9652->ss_channels; ++chn) { rme9652 1285 sound/pci/rme9652/rme9652.c rme9652_set_thru(rme9652,chn,thru_bits&(1<<chn)); rme9652 1288 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1302 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1304 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1305 sound/pci/rme9652/rme9652.c ucontrol->value.integer.value[0] = rme9652->passthru; rme9652 1306 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1312 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1317 sound/pci/rme9652/rme9652.c if (!snd_rme9652_use_is_exclusive(rme9652)) rme9652 1321 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1322 sound/pci/rme9652/rme9652.c change = (ucontrol->value.integer.value[0] != rme9652->passthru); rme9652 1324 sound/pci/rme9652/rme9652.c err = rme9652_set_passthru(rme9652, val); rme9652 1325 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1348 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1350 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1351 sound/pci/rme9652/rme9652.c ucontrol->value.integer.value[0] = rme9652_spdif_sample_rate(rme9652); rme9652 1352 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 1373 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1382 sound/pci/rme9652/rme9652.c val = rme9652_read(rme9652, RME9652_status_register); rme9652 1398 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); rme9652 1401 sound/pci/rme9652/rme9652.c (rme9652_read(rme9652, RME9652_status_register) & RME9652_tc_valid) ? 1 : 0; rme9652 1523 sound/pci/rme9652/rme9652.c static int snd_rme9652_create_controls(struct snd_card *card, struct snd_rme9652 *rme9652) rme9652 1530 sound/pci/rme9652/rme9652.c if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_controls[idx], rme9652))) < 0) rme9652 1533 sound/pci/rme9652/rme9652.c rme9652->spdif_ctl = kctl; rme9652 1536 sound/pci/rme9652/rme9652.c if (rme9652->ss_channels == RME9652_NCHANNELS) rme9652 1537 sound/pci/rme9652/rme9652.c if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat3_check, rme9652))) < 0) rme9652 1540 sound/pci/rme9652/rme9652.c if (rme9652->hw_rev >= 15) rme9652 1541 sound/pci/rme9652/rme9652.c if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat1_input, rme9652))) < 0) rme9652 1554 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) entry->private_data; rme9652 1555 sound/pci/rme9652/rme9652.c u32 thru_bits = rme9652->thru_bits; rme9652 1561 sound/pci/rme9652/rme9652.c status = rme9652_read(rme9652, RME9652_status_register); rme9652 1563 sound/pci/rme9652/rme9652.c snd_iprintf(buffer, "%s (Card #%d)\n", rme9652->card_name, rme9652->card->number + 1); rme9652 1565 sound/pci/rme9652/rme9652.c rme9652->capture_buffer, rme9652->playback_buffer); rme9652 1567 sound/pci/rme9652/rme9652.c rme9652->irq, rme9652->port, (unsigned long)rme9652->iobase); rme9652 1568 sound/pci/rme9652/rme9652.c snd_iprintf(buffer, "Control register: %x\n", rme9652->control_register); rme9652 1572 sound/pci/rme9652/rme9652.c x = 1 << (6 + rme9652_decode_latency(rme9652->control_register & rme9652 1576 sound/pci/rme9652/rme9652.c x, (unsigned long) rme9652->period_bytes); rme9652 1578 sound/pci/rme9652/rme9652.c rme9652_hw_pointer(rme9652)); rme9652 1580 sound/pci/rme9652/rme9652.c rme9652->passthru ? "yes" : "no"); rme9652 1582 sound/pci/rme9652/rme9652.c if ((rme9652->control_register & (RME9652_Master | RME9652_wsel)) == 0) { rme9652 1585 sound/pci/rme9652/rme9652.c } else if (rme9652->control_register & RME9652_wsel) { rme9652 1596 sound/pci/rme9652/rme9652.c switch (rme9652->control_register & RME9652_SyncPref_Mask) { rme9652 1614 sound/pci/rme9652/rme9652.c if (rme9652->hw_rev >= 15) rme9652 1616 sound/pci/rme9652/rme9652.c (rme9652->control_register & RME9652_ADAT1_INTERNAL) ? rme9652 1621 sound/pci/rme9652/rme9652.c switch (rme9652_decode_spdif_in(rme9652->control_register & rme9652 1637 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_opt_out) { rme9652 1643 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_PRO) { rme9652 1649 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_EMP) { rme9652 1655 sound/pci/rme9652/rme9652.c if (rme9652->control_register & RME9652_Dolby) { rme9652 1661 sound/pci/rme9652/rme9652.c i = rme9652_spdif_sample_rate(rme9652); rme9652 1675 sound/pci/rme9652/rme9652.c rme9652_adat_sample_rate(rme9652)); rme9652 1709 sound/pci/rme9652/rme9652.c for (i = 0; i < rme9652->ss_channels; i++) { rme9652 1724 sound/pci/rme9652/rme9652.c static void snd_rme9652_proc_init(struct snd_rme9652 *rme9652) rme9652 1726 sound/pci/rme9652/rme9652.c snd_card_ro_proc_new(rme9652->card, "rme9652", rme9652, rme9652 1730 sound/pci/rme9652/rme9652.c static void snd_rme9652_free_buffers(struct snd_rme9652 *rme9652) rme9652 1732 sound/pci/rme9652/rme9652.c snd_hammerfall_free_buffer(&rme9652->capture_dma_buf, rme9652->pci); rme9652 1733 sound/pci/rme9652/rme9652.c snd_hammerfall_free_buffer(&rme9652->playback_dma_buf, rme9652->pci); rme9652 1736 sound/pci/rme9652/rme9652.c static int snd_rme9652_free(struct snd_rme9652 *rme9652) rme9652 1738 sound/pci/rme9652/rme9652.c if (rme9652->irq >= 0) rme9652 1739 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 1740 sound/pci/rme9652/rme9652.c snd_rme9652_free_buffers(rme9652); rme9652 1742 sound/pci/rme9652/rme9652.c if (rme9652->irq >= 0) rme9652 1743 sound/pci/rme9652/rme9652.c free_irq(rme9652->irq, (void *)rme9652); rme9652 1744 sound/pci/rme9652/rme9652.c iounmap(rme9652->iobase); rme9652 1745 sound/pci/rme9652/rme9652.c if (rme9652->port) rme9652 1746 sound/pci/rme9652/rme9652.c pci_release_regions(rme9652->pci); rme9652 1748 sound/pci/rme9652/rme9652.c pci_disable_device(rme9652->pci); rme9652 1752 sound/pci/rme9652/rme9652.c static int snd_rme9652_initialize_memory(struct snd_rme9652 *rme9652) rme9652 1756 sound/pci/rme9652/rme9652.c if (snd_hammerfall_get_buffer(rme9652->pci, &rme9652->capture_dma_buf, RME9652_DMA_AREA_BYTES) < 0 || rme9652 1757 sound/pci/rme9652/rme9652.c snd_hammerfall_get_buffer(rme9652->pci, &rme9652->playback_dma_buf, RME9652_DMA_AREA_BYTES) < 0) { rme9652 1758 sound/pci/rme9652/rme9652.c if (rme9652->capture_dma_buf.area) rme9652 1759 sound/pci/rme9652/rme9652.c snd_dma_free_pages(&rme9652->capture_dma_buf); rme9652 1760 sound/pci/rme9652/rme9652.c dev_err(rme9652->card->dev, rme9652 1761 sound/pci/rme9652/rme9652.c "%s: no buffers available\n", rme9652->card_name); rme9652 1767 sound/pci/rme9652/rme9652.c cb_bus = ALIGN(rme9652->capture_dma_buf.addr, 0x10000ul); rme9652 1768 sound/pci/rme9652/rme9652.c pb_bus = ALIGN(rme9652->playback_dma_buf.addr, 0x10000ul); rme9652 1772 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_rec_buffer, cb_bus); rme9652 1773 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_play_buffer, pb_bus); rme9652 1775 sound/pci/rme9652/rme9652.c rme9652->capture_buffer = rme9652->capture_dma_buf.area + (cb_bus - rme9652->capture_dma_buf.addr); rme9652 1776 sound/pci/rme9652/rme9652.c rme9652->playback_buffer = rme9652->playback_dma_buf.area + (pb_bus - rme9652->playback_dma_buf.addr); rme9652 1781 sound/pci/rme9652/rme9652.c static void snd_rme9652_set_defaults(struct snd_rme9652 *rme9652) rme9652 1801 sound/pci/rme9652/rme9652.c rme9652->control_register = rme9652 1804 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); rme9652 1806 sound/pci/rme9652/rme9652.c rme9652_reset_hw_pointer(rme9652); rme9652 1807 sound/pci/rme9652/rme9652.c rme9652_compute_period_size(rme9652); rme9652 1812 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_thru_base + k * 4, 0); rme9652 1814 sound/pci/rme9652/rme9652.c rme9652->thru_bits = 0; rme9652 1815 sound/pci/rme9652/rme9652.c rme9652->passthru = 0; rme9652 1819 sound/pci/rme9652/rme9652.c rme9652_set_rate(rme9652, 48000); rme9652 1824 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id; rme9652 1826 sound/pci/rme9652/rme9652.c if (!(rme9652_read(rme9652, RME9652_status_register) & RME9652_IRQ)) { rme9652 1830 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_irq_clear, 0); rme9652 1832 sound/pci/rme9652/rme9652.c if (rme9652->capture_substream) { rme9652 1833 sound/pci/rme9652/rme9652.c snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); rme9652 1836 sound/pci/rme9652/rme9652.c if (rme9652->playback_substream) { rme9652 1837 sound/pci/rme9652/rme9652.c snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); rme9652 1844 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1845 sound/pci/rme9652/rme9652.c return rme9652_hw_pointer(rme9652); rme9652 1848 sound/pci/rme9652/rme9652.c static char *rme9652_channel_buffer_location(struct snd_rme9652 *rme9652, rme9652 1858 sound/pci/rme9652/rme9652.c if ((mapped_channel = rme9652->channel_map[channel]) < 0) { rme9652 1863 sound/pci/rme9652/rme9652.c return rme9652->capture_buffer + rme9652 1866 sound/pci/rme9652/rme9652.c return rme9652->playback_buffer + rme9652 1875 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1881 sound/pci/rme9652/rme9652.c channel_buf = rme9652_channel_buffer_location (rme9652, rme9652 1895 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1898 sound/pci/rme9652/rme9652.c channel_buf = rme9652_channel_buffer_location(rme9652, rme9652 1911 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1917 sound/pci/rme9652/rme9652.c channel_buf = rme9652_channel_buffer_location (rme9652, rme9652 1931 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1934 sound/pci/rme9652/rme9652.c channel_buf = rme9652_channel_buffer_location(rme9652, rme9652 1947 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1950 sound/pci/rme9652/rme9652.c channel_buf = rme9652_channel_buffer_location (rme9652, rme9652 1962 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1965 sound/pci/rme9652/rme9652.c other = rme9652->capture_substream; rme9652 1967 sound/pci/rme9652/rme9652.c other = rme9652->playback_substream; rme9652 1968 sound/pci/rme9652/rme9652.c if (rme9652->running) rme9652 1969 sound/pci/rme9652/rme9652.c runtime->status->hw_ptr = rme9652_hw_pointer(rme9652); rme9652 1988 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 1993 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 1996 sound/pci/rme9652/rme9652.c rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); rme9652 1997 sound/pci/rme9652/rme9652.c rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= rme9652->creg_spdif_stream); rme9652 1998 sound/pci/rme9652/rme9652.c this_pid = rme9652->playback_pid; rme9652 1999 sound/pci/rme9652/rme9652.c other_pid = rme9652->capture_pid; rme9652 2001 sound/pci/rme9652/rme9652.c this_pid = rme9652->capture_pid; rme9652 2002 sound/pci/rme9652/rme9652.c other_pid = rme9652->playback_pid; rme9652 2013 sound/pci/rme9652/rme9652.c rme9652_adat_sample_rate(rme9652)) { rme9652 2014 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2019 sound/pci/rme9652/rme9652.c if (params_period_size(params) != rme9652->period_bytes / 4) { rme9652 2020 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2027 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2031 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2037 sound/pci/rme9652/rme9652.c if ((err = rme9652_set_rate(rme9652, params_rate(params))) < 0) { rme9652 2042 sound/pci/rme9652/rme9652.c if ((err = rme9652_set_interrupt_interval(rme9652, params_period_size(params))) < 0) { rme9652 2053 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2059 sound/pci/rme9652/rme9652.c chn = rme9652->channel_map[array_index_nospec(info->channel, rme9652 2090 sound/pci/rme9652/rme9652.c static void rme9652_silence_playback(struct snd_rme9652 *rme9652) rme9652 2092 sound/pci/rme9652/rme9652.c memset(rme9652->playback_buffer, 0, RME9652_DMA_AREA_BYTES); rme9652 2098 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2101 sound/pci/rme9652/rme9652.c spin_lock(&rme9652->lock); rme9652 2102 sound/pci/rme9652/rme9652.c running = rme9652->running; rme9652 2112 sound/pci/rme9652/rme9652.c spin_unlock(&rme9652->lock); rme9652 2116 sound/pci/rme9652/rme9652.c other = rme9652->capture_substream; rme9652 2118 sound/pci/rme9652/rme9652.c other = rme9652->playback_substream; rme9652 2135 sound/pci/rme9652/rme9652.c rme9652_silence_playback(rme9652); rme9652 2139 sound/pci/rme9652/rme9652.c rme9652_silence_playback(rme9652); rme9652 2143 sound/pci/rme9652/rme9652.c rme9652_silence_playback(rme9652); rme9652 2147 sound/pci/rme9652/rme9652.c if (!rme9652->running && running) rme9652 2148 sound/pci/rme9652/rme9652.c rme9652_start(rme9652); rme9652 2149 sound/pci/rme9652/rme9652.c else if (rme9652->running && !running) rme9652 2150 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 2151 sound/pci/rme9652/rme9652.c rme9652->running = running; rme9652 2152 sound/pci/rme9652/rme9652.c spin_unlock(&rme9652->lock); rme9652 2159 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2162 sound/pci/rme9652/rme9652.c spin_lock_irqsave(&rme9652->lock, flags); rme9652 2163 sound/pci/rme9652/rme9652.c if (!rme9652->running) rme9652 2164 sound/pci/rme9652/rme9652.c rme9652_reset_hw_pointer(rme9652); rme9652 2165 sound/pci/rme9652/rme9652.c spin_unlock_irqrestore(&rme9652->lock, flags); rme9652 2227 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = rule->private; rme9652 2229 sound/pci/rme9652/rme9652.c unsigned int list[2] = { rme9652->ds_channels, rme9652->ss_channels }; rme9652 2236 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = rule->private; rme9652 2241 sound/pci/rme9652/rme9652.c .min = rme9652->ds_channels, rme9652 2242 sound/pci/rme9652/rme9652.c .max = rme9652->ds_channels, rme9652 2248 sound/pci/rme9652/rme9652.c .min = rme9652->ss_channels, rme9652 2249 sound/pci/rme9652/rme9652.c .max = rme9652->ss_channels, rme9652 2260 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = rule->private; rme9652 2263 sound/pci/rme9652/rme9652.c if (c->min >= rme9652->ss_channels) { rme9652 2270 sound/pci/rme9652/rme9652.c } else if (c->max <= rme9652->ds_channels) { rme9652 2283 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2286 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 2291 sound/pci/rme9652/rme9652.c runtime->dma_area = rme9652->playback_buffer; rme9652 2294 sound/pci/rme9652/rme9652.c if (rme9652->capture_substream == NULL) { rme9652 2295 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 2296 sound/pci/rme9652/rme9652.c rme9652_set_thru(rme9652, -1, 0); rme9652 2299 sound/pci/rme9652/rme9652.c rme9652->playback_pid = current->pid; rme9652 2300 sound/pci/rme9652/rme9652.c rme9652->playback_substream = substream; rme9652 2302 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2307 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_channels, rme9652, rme9652 2310 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_channels_rate, rme9652, rme9652 2313 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_rate_channels, rme9652, rme9652 2316 sound/pci/rme9652/rme9652.c rme9652->creg_spdif_stream = rme9652->creg_spdif; rme9652 2317 sound/pci/rme9652/rme9652.c rme9652->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; rme9652 2318 sound/pci/rme9652/rme9652.c snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | rme9652 2319 sound/pci/rme9652/rme9652.c SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); rme9652 2325 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2327 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 2329 sound/pci/rme9652/rme9652.c rme9652->playback_pid = -1; rme9652 2330 sound/pci/rme9652/rme9652.c rme9652->playback_substream = NULL; rme9652 2332 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2334 sound/pci/rme9652/rme9652.c rme9652->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; rme9652 2335 sound/pci/rme9652/rme9652.c snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | rme9652 2336 sound/pci/rme9652/rme9652.c SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); rme9652 2343 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2346 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 2351 sound/pci/rme9652/rme9652.c runtime->dma_area = rme9652->capture_buffer; rme9652 2354 sound/pci/rme9652/rme9652.c if (rme9652->playback_substream == NULL) { rme9652 2355 sound/pci/rme9652/rme9652.c rme9652_stop(rme9652); rme9652 2356 sound/pci/rme9652/rme9652.c rme9652_set_thru(rme9652, -1, 0); rme9652 2359 sound/pci/rme9652/rme9652.c rme9652->capture_pid = current->pid; rme9652 2360 sound/pci/rme9652/rme9652.c rme9652->capture_substream = substream; rme9652 2362 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2367 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_channels, rme9652, rme9652 2370 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_channels_rate, rme9652, rme9652 2373 sound/pci/rme9652/rme9652.c snd_rme9652_hw_rule_rate_channels, rme9652, rme9652 2380 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); rme9652 2382 sound/pci/rme9652/rme9652.c spin_lock_irq(&rme9652->lock); rme9652 2384 sound/pci/rme9652/rme9652.c rme9652->capture_pid = -1; rme9652 2385 sound/pci/rme9652/rme9652.c rme9652->capture_substream = NULL; rme9652 2387 sound/pci/rme9652/rme9652.c spin_unlock_irq(&rme9652->lock); rme9652 2417 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652) rme9652 2423 sound/pci/rme9652/rme9652.c rme9652->card_name, rme9652 2428 sound/pci/rme9652/rme9652.c rme9652->pcm = pcm; rme9652 2429 sound/pci/rme9652/rme9652.c pcm->private_data = rme9652; rme9652 2430 sound/pci/rme9652/rme9652.c strcpy(pcm->name, rme9652->card_name); rme9652 2441 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652, rme9652 2444 sound/pci/rme9652/rme9652.c struct pci_dev *pci = rme9652->pci; rme9652 2449 sound/pci/rme9652/rme9652.c rme9652->irq = -1; rme9652 2450 sound/pci/rme9652/rme9652.c rme9652->card = card; rme9652 2452 sound/pci/rme9652/rme9652.c pci_read_config_word(rme9652->pci, PCI_CLASS_REVISION, &rev); rme9652 2469 sound/pci/rme9652/rme9652.c spin_lock_init(&rme9652->lock); rme9652 2473 sound/pci/rme9652/rme9652.c rme9652->port = pci_resource_start(pci, 0); rme9652 2474 sound/pci/rme9652/rme9652.c rme9652->iobase = ioremap_nocache(rme9652->port, RME9652_IO_EXTENT); rme9652 2475 sound/pci/rme9652/rme9652.c if (rme9652->iobase == NULL) { rme9652 2477 sound/pci/rme9652/rme9652.c rme9652->port, rme9652->port + RME9652_IO_EXTENT - 1); rme9652 2482 sound/pci/rme9652/rme9652.c KBUILD_MODNAME, rme9652)) { rme9652 2486 sound/pci/rme9652/rme9652.c rme9652->irq = pci->irq; rme9652 2487 sound/pci/rme9652/rme9652.c rme9652->precise_ptr = precise_ptr; rme9652 2494 sound/pci/rme9652/rme9652.c status = rme9652_read(rme9652, RME9652_status_register); rme9652 2496 sound/pci/rme9652/rme9652.c rme9652->hw_rev = 15; rme9652 2498 sound/pci/rme9652/rme9652.c rme9652->hw_rev = 11; rme9652 2511 sound/pci/rme9652/rme9652.c if (rme9652->hw_rev == 15) { rme9652 2512 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9636 (Rev 1.5)"; rme9652 2514 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9636"; rme9652 2516 sound/pci/rme9652/rme9652.c rme9652->ss_channels = RME9636_NCHANNELS; rme9652 2520 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9636 (Rev G)"; rme9652 2521 sound/pci/rme9652/rme9652.c rme9652->ss_channels = RME9636_NCHANNELS; rme9652 2525 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9652 (Rev G)"; rme9652 2526 sound/pci/rme9652/rme9652.c rme9652->ss_channels = RME9652_NCHANNELS; rme9652 2530 sound/pci/rme9652/rme9652.c if (rme9652->hw_rev == 15) { rme9652 2531 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9652 (Rev 1.5)"; rme9652 2533 sound/pci/rme9652/rme9652.c rme9652->card_name = "RME Digi9652"; rme9652 2535 sound/pci/rme9652/rme9652.c rme9652->ss_channels = RME9652_NCHANNELS; rme9652 2539 sound/pci/rme9652/rme9652.c rme9652->ds_channels = (rme9652->ss_channels - 2) / 2 + 2; rme9652 2541 sound/pci/rme9652/rme9652.c pci_set_master(rme9652->pci); rme9652 2543 sound/pci/rme9652/rme9652.c if ((err = snd_rme9652_initialize_memory(rme9652)) < 0) { rme9652 2547 sound/pci/rme9652/rme9652.c if ((err = snd_rme9652_create_pcm(card, rme9652)) < 0) { rme9652 2551 sound/pci/rme9652/rme9652.c if ((err = snd_rme9652_create_controls(card, rme9652)) < 0) { rme9652 2555 sound/pci/rme9652/rme9652.c snd_rme9652_proc_init(rme9652); rme9652 2557 sound/pci/rme9652/rme9652.c rme9652->last_spdif_sample_rate = -1; rme9652 2558 sound/pci/rme9652/rme9652.c rme9652->last_adat_sample_rate = -1; rme9652 2559 sound/pci/rme9652/rme9652.c rme9652->playback_pid = -1; rme9652 2560 sound/pci/rme9652/rme9652.c rme9652->capture_pid = -1; rme9652 2561 sound/pci/rme9652/rme9652.c rme9652->capture_substream = NULL; rme9652 2562 sound/pci/rme9652/rme9652.c rme9652->playback_substream = NULL; rme9652 2564 sound/pci/rme9652/rme9652.c snd_rme9652_set_defaults(rme9652); rme9652 2566 sound/pci/rme9652/rme9652.c if (rme9652->hw_rev == 15) { rme9652 2567 sound/pci/rme9652/rme9652.c rme9652_initialize_spdif_receiver (rme9652); rme9652 2575 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) card->private_data; rme9652 2577 sound/pci/rme9652/rme9652.c if (rme9652) rme9652 2578 sound/pci/rme9652/rme9652.c snd_rme9652_free(rme9652); rme9652 2585 sound/pci/rme9652/rme9652.c struct snd_rme9652 *rme9652; rme9652 2602 sound/pci/rme9652/rme9652.c rme9652 = (struct snd_rme9652 *) card->private_data; rme9652 2604 sound/pci/rme9652/rme9652.c rme9652->dev = dev; rme9652 2605 sound/pci/rme9652/rme9652.c rme9652->pci = pci; rme9652 2606 sound/pci/rme9652/rme9652.c err = snd_rme9652_create(card, rme9652, precise_ptr[dev]); rme9652 2610 sound/pci/rme9652/rme9652.c strcpy(card->shortname, rme9652->card_name); rme9652 2613 sound/pci/rme9652/rme9652.c card->shortname, rme9652->port, rme9652->irq);