Lines Matching refs:rme9652

299 static inline void rme9652_write(struct snd_rme9652 *rme9652, int reg, int val)  in rme9652_write()  argument
301 writel(val, rme9652->iobase + reg); in rme9652_write()
304 static inline unsigned int rme9652_read(struct snd_rme9652 *rme9652, int reg) in rme9652_read() argument
306 return readl(rme9652->iobase + reg); in rme9652_read()
309 static inline int snd_rme9652_use_is_exclusive(struct snd_rme9652 *rme9652) in snd_rme9652_use_is_exclusive() argument
314 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
315 if ((rme9652->playback_pid != rme9652->capture_pid) && in snd_rme9652_use_is_exclusive()
316 (rme9652->playback_pid >= 0) && (rme9652->capture_pid >= 0)) { in snd_rme9652_use_is_exclusive()
319 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
323 static inline int rme9652_adat_sample_rate(struct snd_rme9652 *rme9652) in rme9652_adat_sample_rate() argument
325 if (rme9652_running_double_speed(rme9652)) { in rme9652_adat_sample_rate()
326 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
329 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
334 static inline void rme9652_compute_period_size(struct snd_rme9652 *rme9652) in rme9652_compute_period_size() argument
338 i = rme9652->control_register & RME9652_latency; in rme9652_compute_period_size()
339 rme9652->period_bytes = 1 << ((rme9652_decode_latency(i) + 8)); in rme9652_compute_period_size()
340 rme9652->hw_offsetmask = in rme9652_compute_period_size()
341 (rme9652->period_bytes * 2 - 1) & RME9652_buf_pos; in rme9652_compute_period_size()
342 rme9652->max_jitter = 80; in rme9652_compute_period_size()
345 static snd_pcm_uframes_t rme9652_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_hw_pointer() argument
349 snd_pcm_uframes_t period_size = rme9652->period_bytes / 4; in rme9652_hw_pointer()
352 status = rme9652_read(rme9652, RME9652_status_register); in rme9652_hw_pointer()
353 if (!rme9652->precise_ptr) in rme9652_hw_pointer()
361 delta = rme9652->prev_hw_offset - offset; in rme9652_hw_pointer()
363 if (delta <= (snd_pcm_sframes_t)rme9652->max_jitter * 4) in rme9652_hw_pointer()
364 offset = rme9652->prev_hw_offset; in rme9652_hw_pointer()
366 rme9652->prev_hw_offset = offset; in rme9652_hw_pointer()
367 offset &= rme9652->hw_offsetmask; in rme9652_hw_pointer()
372 if (offset > rme9652->max_jitter) { in rme9652_hw_pointer()
374 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
379 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
383 if (offset > period_size + rme9652->max_jitter) { in rme9652_hw_pointer()
385 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
390 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
396 static inline void rme9652_reset_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_reset_hw_pointer() argument
407 rme9652_write(rme9652, i * 4, 0); in rme9652_reset_hw_pointer()
410 rme9652->prev_hw_offset = 0; in rme9652_reset_hw_pointer()
459 static int rme9652_set_rate(struct snd_rme9652 *rme9652, int rate) in rme9652_set_rate() argument
465 if (!snd_rme9652_use_is_exclusive (rme9652)) { in rme9652_set_rate()
480 spin_lock_irq(&rme9652->lock); in rme9652_set_rate()
481 xrate = rme9652_adat_sample_rate(rme9652); in rme9652_set_rate()
509 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
513 if (reject_if_open && (rme9652->capture_pid >= 0 || rme9652->playback_pid >= 0)) { in rme9652_set_rate()
514 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
518 restart = rme9652->running; in rme9652_set_rate()
520 rme9652_stop(rme9652); in rme9652_set_rate()
521 rme9652->control_register &= ~(RME9652_freq | RME9652_DS); in rme9652_set_rate()
522 rme9652->control_register |= rate; in rme9652_set_rate()
523 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_rate()
526 rme9652_start(rme9652); in rme9652_set_rate()
529 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
530 rme9652->channel_map = channel_map_9652_ds; in rme9652_set_rate()
532 rme9652->channel_map = channel_map_9636_ds; in rme9652_set_rate()
535 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
536 rme9652->channel_map = channel_map_9652_ss; in rme9652_set_rate()
538 rme9652->channel_map = channel_map_9636_ss; in rme9652_set_rate()
542 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
546 static void rme9652_set_thru(struct snd_rme9652 *rme9652, int channel, int enable) in rme9652_set_thru() argument
550 rme9652->passthru = 0; in rme9652_set_thru()
558 rme9652->thru_bits |= (1 << i); in rme9652_set_thru()
559 rme9652_write(rme9652, RME9652_thru_base + i * 4, 1); in rme9652_set_thru()
563 rme9652->thru_bits &= ~(1 << i); in rme9652_set_thru()
564 rme9652_write(rme9652, RME9652_thru_base + i * 4, 0); in rme9652_set_thru()
571 mapped_channel = rme9652->channel_map[channel]; in rme9652_set_thru()
574 rme9652->thru_bits |= (1 << mapped_channel); in rme9652_set_thru()
576 rme9652->thru_bits &= ~(1 << mapped_channel); in rme9652_set_thru()
579 rme9652_write(rme9652, in rme9652_set_thru()
585 static int rme9652_set_passthru(struct snd_rme9652 *rme9652, int onoff) in rme9652_set_passthru() argument
588 rme9652_set_thru(rme9652, -1, 1); in rme9652_set_passthru()
594 rme9652->control_register = in rme9652_set_passthru()
599 rme9652_reset_hw_pointer(rme9652); in rme9652_set_passthru()
601 rme9652_write(rme9652, RME9652_control_register, in rme9652_set_passthru()
602 rme9652->control_register); in rme9652_set_passthru()
603 rme9652->passthru = 1; in rme9652_set_passthru()
605 rme9652_set_thru(rme9652, -1, 0); in rme9652_set_passthru()
606 rme9652_stop(rme9652); in rme9652_set_passthru()
607 rme9652->passthru = 0; in rme9652_set_passthru()
613 static void rme9652_spdif_set_bit (struct snd_rme9652 *rme9652, int mask, int onoff) in rme9652_spdif_set_bit() argument
616 rme9652->control_register |= mask; in rme9652_spdif_set_bit()
618 rme9652->control_register &= ~mask; in rme9652_spdif_set_bit()
620 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_spdif_set_bit()
623 static void rme9652_spdif_write_byte (struct snd_rme9652 *rme9652, const int val) in rme9652_spdif_write_byte() argument
630 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 1); in rme9652_spdif_write_byte()
632 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 0); in rme9652_spdif_write_byte()
634 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_write_byte()
635 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_write_byte()
639 static int rme9652_spdif_read_byte (struct snd_rme9652 *rme9652) in rme9652_spdif_read_byte() argument
648 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_read_byte()
649 if (rme9652_read (rme9652, RME9652_status_register) & RME9652_SPDIF_READ) in rme9652_spdif_read_byte()
651 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_read_byte()
657 static void rme9652_write_spdif_codec (struct snd_rme9652 *rme9652, const int address, const int da… in rme9652_write_spdif_codec() argument
659 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_write_spdif_codec()
660 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_write_spdif_codec()
661 rme9652_spdif_write_byte (rme9652, address); in rme9652_write_spdif_codec()
662 rme9652_spdif_write_byte (rme9652, data); in rme9652_write_spdif_codec()
663 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_write_spdif_codec()
667 static int rme9652_spdif_read_codec (struct snd_rme9652 *rme9652, const int address) in rme9652_spdif_read_codec() argument
671 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
672 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_spdif_read_codec()
673 rme9652_spdif_write_byte (rme9652, address); in rme9652_spdif_read_codec()
674 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
675 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
677 rme9652_spdif_write_byte (rme9652, 0x21); in rme9652_spdif_read_codec()
678 ret = rme9652_spdif_read_byte (rme9652); in rme9652_spdif_read_codec()
679 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
684 static void rme9652_initialize_spdif_receiver (struct snd_rme9652 *rme9652) in rme9652_initialize_spdif_receiver() argument
688 rme9652->control_register |= RME9652_SPDIF_RESET; in rme9652_initialize_spdif_receiver()
690 rme9652_write_spdif_codec (rme9652, 4, 0x40); in rme9652_initialize_spdif_receiver()
691 rme9652_write_spdif_codec (rme9652, 17, 0x13); in rme9652_initialize_spdif_receiver()
692 rme9652_write_spdif_codec (rme9652, 6, 0x02); in rme9652_initialize_spdif_receiver()
788 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_get() local
790 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif); in snd_rme9652_control_spdif_get()
796 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_put() local
801 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
802 change = val != rme9652->creg_spdif; in snd_rme9652_control_spdif_put()
803 rme9652->creg_spdif = val; in snd_rme9652_control_spdif_put()
804 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
817 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_get() local
819 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif_stream); in snd_rme9652_control_spdif_stream_get()
825 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_put() local
830 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
831 change = val != rme9652->creg_spdif_stream; in snd_rme9652_control_spdif_stream_put()
832 rme9652->creg_spdif_stream = val; in snd_rme9652_control_spdif_stream_put()
833 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_control_spdif_stream_put()
834 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= val); in snd_rme9652_control_spdif_stream_put()
835 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
858 static unsigned int rme9652_adat1_in(struct snd_rme9652 *rme9652) in rme9652_adat1_in() argument
860 if (rme9652->control_register & RME9652_ADAT1_INTERNAL) in rme9652_adat1_in()
865 static int rme9652_set_adat1_input(struct snd_rme9652 *rme9652, int internal) in rme9652_set_adat1_input() argument
870 rme9652->control_register |= RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
872 rme9652->control_register &= ~RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
877 restart = rme9652->running; in rme9652_set_adat1_input()
879 rme9652_stop(rme9652); in rme9652_set_adat1_input()
881 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_adat1_input()
884 rme9652_start(rme9652); in rme9652_set_adat1_input()
898 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat1_in() local
900 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
901 ucontrol->value.enumerated.item[0] = rme9652_adat1_in(rme9652); in snd_rme9652_get_adat1_in()
902 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
908 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_adat1_in() local
912 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_adat1_in()
915 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
916 change = val != rme9652_adat1_in(rme9652); in snd_rme9652_put_adat1_in()
918 rme9652_set_adat1_input(rme9652, val); in snd_rme9652_put_adat1_in()
919 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
928 static unsigned int rme9652_spdif_in(struct snd_rme9652 *rme9652) in rme9652_spdif_in() argument
930 return rme9652_decode_spdif_in(rme9652->control_register & in rme9652_spdif_in()
934 static int rme9652_set_spdif_input(struct snd_rme9652 *rme9652, int in) in rme9652_set_spdif_input() argument
938 rme9652->control_register &= ~RME9652_inp; in rme9652_set_spdif_input()
939 rme9652->control_register |= rme9652_encode_spdif_in(in); in rme9652_set_spdif_input()
941 restart = rme9652->running; in rme9652_set_spdif_input()
943 rme9652_stop(rme9652); in rme9652_set_spdif_input()
945 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_input()
948 rme9652_start(rme9652); in rme9652_set_spdif_input()
962 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_in() local
964 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
965 ucontrol->value.enumerated.item[0] = rme9652_spdif_in(rme9652); in snd_rme9652_get_spdif_in()
966 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
972 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_in() local
976 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_in()
979 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
980 change = val != rme9652_spdif_in(rme9652); in snd_rme9652_put_spdif_in()
982 rme9652_set_spdif_input(rme9652, val); in snd_rme9652_put_spdif_in()
983 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
992 static int rme9652_spdif_out(struct snd_rme9652 *rme9652) in rme9652_spdif_out() argument
994 return (rme9652->control_register & RME9652_opt_out) ? 1 : 0; in rme9652_spdif_out()
997 static int rme9652_set_spdif_output(struct snd_rme9652 *rme9652, int out) in rme9652_set_spdif_output() argument
1002 rme9652->control_register |= RME9652_opt_out; in rme9652_set_spdif_output()
1004 rme9652->control_register &= ~RME9652_opt_out; in rme9652_set_spdif_output()
1007 restart = rme9652->running; in rme9652_set_spdif_output()
1009 rme9652_stop(rme9652); in rme9652_set_spdif_output()
1011 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_output()
1014 rme9652_start(rme9652); in rme9652_set_spdif_output()
1023 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_out() local
1025 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1026 ucontrol->value.integer.value[0] = rme9652_spdif_out(rme9652); in snd_rme9652_get_spdif_out()
1027 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1033 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_out() local
1037 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_out()
1040 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1041 change = (int)val != rme9652_spdif_out(rme9652); in snd_rme9652_put_spdif_out()
1042 rme9652_set_spdif_output(rme9652, val); in snd_rme9652_put_spdif_out()
1043 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1052 static int rme9652_sync_mode(struct snd_rme9652 *rme9652) in rme9652_sync_mode() argument
1054 if (rme9652->control_register & RME9652_wsel) { in rme9652_sync_mode()
1056 } else if (rme9652->control_register & RME9652_Master) { in rme9652_sync_mode()
1063 static int rme9652_set_sync_mode(struct snd_rme9652 *rme9652, int mode) in rme9652_set_sync_mode() argument
1069 rme9652->control_register &= in rme9652_set_sync_mode()
1073 rme9652->control_register = in rme9652_set_sync_mode()
1074 (rme9652->control_register & ~RME9652_wsel) | RME9652_Master; in rme9652_set_sync_mode()
1077 rme9652->control_register |= in rme9652_set_sync_mode()
1082 restart = rme9652->running; in rme9652_set_sync_mode()
1084 rme9652_stop(rme9652); in rme9652_set_sync_mode()
1086 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_mode()
1089 rme9652_start(rme9652); in rme9652_set_sync_mode()
1105 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_mode() local
1107 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1108 ucontrol->value.enumerated.item[0] = rme9652_sync_mode(rme9652); in snd_rme9652_get_sync_mode()
1109 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1115 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_mode() local
1120 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1121 change = (int)val != rme9652_sync_mode(rme9652); in snd_rme9652_put_sync_mode()
1122 rme9652_set_sync_mode(rme9652, val); in snd_rme9652_put_sync_mode()
1123 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1132 static int rme9652_sync_pref(struct snd_rme9652 *rme9652) in rme9652_sync_pref() argument
1134 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in rme9652_sync_pref()
1148 static int rme9652_set_sync_pref(struct snd_rme9652 *rme9652, int pref) in rme9652_set_sync_pref() argument
1152 rme9652->control_register &= ~RME9652_SyncPref_Mask; in rme9652_set_sync_pref()
1155 rme9652->control_register |= RME9652_SyncPref_ADAT1; in rme9652_set_sync_pref()
1158 rme9652->control_register |= RME9652_SyncPref_ADAT2; in rme9652_set_sync_pref()
1161 rme9652->control_register |= RME9652_SyncPref_ADAT3; in rme9652_set_sync_pref()
1164 rme9652->control_register |= RME9652_SyncPref_SPDIF; in rme9652_set_sync_pref()
1168 restart = rme9652->running; in rme9652_set_sync_pref()
1170 rme9652_stop(rme9652); in rme9652_set_sync_pref()
1172 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_pref()
1175 rme9652_start(rme9652); in rme9652_set_sync_pref()
1185 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_sync_pref() local
1188 rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3, in snd_rme9652_info_sync_pref()
1194 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_pref() local
1196 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1197 ucontrol->value.enumerated.item[0] = rme9652_sync_pref(rme9652); in snd_rme9652_get_sync_pref()
1198 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1204 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_pref() local
1208 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_sync_pref()
1210 max = rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3; in snd_rme9652_put_sync_pref()
1212 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1213 change = (int)val != rme9652_sync_pref(rme9652); in snd_rme9652_put_sync_pref()
1214 rme9652_set_sync_pref(rme9652, val); in snd_rme9652_put_sync_pref()
1215 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1221 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_thru() local
1223 uinfo->count = rme9652->ss_channels; in snd_rme9652_info_thru()
1231 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_thru() local
1233 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_get_thru()
1235 for (k = 0; k < rme9652->ss_channels; ++k) { in snd_rme9652_get_thru()
1243 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_thru() local
1248 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_thru()
1251 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1256 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1257 change = thru_bits ^ rme9652->thru_bits; in snd_rme9652_put_thru()
1259 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1262 rme9652_set_thru(rme9652,chn,thru_bits&(1<<chn)); in snd_rme9652_put_thru()
1265 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1279 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_passthru() local
1281 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1282 ucontrol->value.integer.value[0] = rme9652->passthru; in snd_rme9652_get_passthru()
1283 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1289 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_passthru() local
1294 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_passthru()
1298 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1299 change = (ucontrol->value.integer.value[0] != rme9652->passthru); in snd_rme9652_put_passthru()
1301 err = rme9652_set_passthru(rme9652, val); in snd_rme9652_put_passthru()
1302 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1325 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_rate() local
1327 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1328 ucontrol->value.integer.value[0] = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_get_spdif_rate()
1329 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1350 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat_sync() local
1359 val = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_get_adat_sync()
1375 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_tc_valid() local
1378 (rme9652_read(rme9652, RME9652_status_register) & RME9652_tc_valid) ? 1 : 0; in snd_rme9652_get_tc_valid()
1500 static int snd_rme9652_create_controls(struct snd_card *card, struct snd_rme9652 *rme9652) in snd_rme9652_create_controls() argument
1507 kctl = snd_ctl_new1(&snd_rme9652_controls[idx], rme9652); in snd_rme9652_create_controls()
1512 rme9652->spdif_ctl = kctl; in snd_rme9652_create_controls()
1515 if (rme9652->ss_channels == RME9652_NCHANNELS) { in snd_rme9652_create_controls()
1516 kctl = snd_ctl_new1(&snd_rme9652_adat3_check, rme9652); in snd_rme9652_create_controls()
1522 if (rme9652->hw_rev >= 15) { in snd_rme9652_create_controls()
1523 kctl = snd_ctl_new1(&snd_rme9652_adat1_input, rme9652); in snd_rme9652_create_controls()
1539 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) entry->private_data; in snd_rme9652_proc_read() local
1540 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_proc_read()
1546 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_proc_read()
1548 snd_iprintf(buffer, "%s (Card #%d)\n", rme9652->card_name, rme9652->card->number + 1); in snd_rme9652_proc_read()
1550 rme9652->capture_buffer, rme9652->playback_buffer); in snd_rme9652_proc_read()
1552 rme9652->irq, rme9652->port, (unsigned long)rme9652->iobase); in snd_rme9652_proc_read()
1553 snd_iprintf(buffer, "Control register: %x\n", rme9652->control_register); in snd_rme9652_proc_read()
1557 x = 1 << (6 + rme9652_decode_latency(rme9652->control_register & in snd_rme9652_proc_read()
1561 x, (unsigned long) rme9652->period_bytes); in snd_rme9652_proc_read()
1563 rme9652_hw_pointer(rme9652)); in snd_rme9652_proc_read()
1565 rme9652->passthru ? "yes" : "no"); in snd_rme9652_proc_read()
1567 if ((rme9652->control_register & (RME9652_Master | RME9652_wsel)) == 0) { in snd_rme9652_proc_read()
1570 } else if (rme9652->control_register & RME9652_wsel) { in snd_rme9652_proc_read()
1581 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in snd_rme9652_proc_read()
1599 if (rme9652->hw_rev >= 15) in snd_rme9652_proc_read()
1601 (rme9652->control_register & RME9652_ADAT1_INTERNAL) ? in snd_rme9652_proc_read()
1606 switch (rme9652_decode_spdif_in(rme9652->control_register & in snd_rme9652_proc_read()
1622 if (rme9652->control_register & RME9652_opt_out) { in snd_rme9652_proc_read()
1628 if (rme9652->control_register & RME9652_PRO) { in snd_rme9652_proc_read()
1634 if (rme9652->control_register & RME9652_EMP) { in snd_rme9652_proc_read()
1640 if (rme9652->control_register & RME9652_Dolby) { in snd_rme9652_proc_read()
1646 i = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_proc_read()
1660 rme9652_adat_sample_rate(rme9652)); in snd_rme9652_proc_read()
1694 for (i = 0; i < rme9652->ss_channels; i++) { in snd_rme9652_proc_read()
1709 static void snd_rme9652_proc_init(struct snd_rme9652 *rme9652) in snd_rme9652_proc_init() argument
1711 snd_card_ro_proc_new(rme9652->card, "rme9652", rme9652, in snd_rme9652_proc_init()
1717 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_card_free() local
1719 if (rme9652->irq >= 0) in snd_rme9652_card_free()
1720 rme9652_stop(rme9652); in snd_rme9652_card_free()
1723 static int snd_rme9652_initialize_memory(struct snd_rme9652 *rme9652) in snd_rme9652_initialize_memory() argument
1727 capture_dma = snd_hammerfall_get_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES); in snd_rme9652_initialize_memory()
1728 playback_dma = snd_hammerfall_get_buffer(rme9652->pci, RME9652_DMA_AREA_BYTES); in snd_rme9652_initialize_memory()
1730 dev_err(rme9652->card->dev, in snd_rme9652_initialize_memory()
1731 "%s: no buffers available\n", rme9652->card_name); in snd_rme9652_initialize_memory()
1736 rme9652->capture_dma_buf = *capture_dma; in snd_rme9652_initialize_memory()
1737 rme9652->playback_dma_buf = *playback_dma; in snd_rme9652_initialize_memory()
1740 rme9652->capture_dma_buf.addr = ALIGN(capture_dma->addr, 0x10000ul); in snd_rme9652_initialize_memory()
1741 rme9652->playback_dma_buf.addr = ALIGN(playback_dma->addr, 0x10000ul); in snd_rme9652_initialize_memory()
1744 rme9652_write(rme9652, RME9652_rec_buffer, rme9652->capture_dma_buf.addr); in snd_rme9652_initialize_memory()
1745 rme9652_write(rme9652, RME9652_play_buffer, rme9652->playback_dma_buf.addr); in snd_rme9652_initialize_memory()
1747 rme9652->capture_dma_buf.area += rme9652->capture_dma_buf.addr - capture_dma->addr; in snd_rme9652_initialize_memory()
1748 rme9652->playback_dma_buf.area += rme9652->playback_dma_buf.addr - playback_dma->addr; in snd_rme9652_initialize_memory()
1749 rme9652->capture_buffer = rme9652->capture_dma_buf.area; in snd_rme9652_initialize_memory()
1750 rme9652->playback_buffer = rme9652->playback_dma_buf.area; in snd_rme9652_initialize_memory()
1755 static void snd_rme9652_set_defaults(struct snd_rme9652 *rme9652) in snd_rme9652_set_defaults() argument
1775 rme9652->control_register = in snd_rme9652_set_defaults()
1778 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in snd_rme9652_set_defaults()
1780 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_set_defaults()
1781 rme9652_compute_period_size(rme9652); in snd_rme9652_set_defaults()
1786 rme9652_write(rme9652, RME9652_thru_base + k * 4, 0); in snd_rme9652_set_defaults()
1788 rme9652->thru_bits = 0; in snd_rme9652_set_defaults()
1789 rme9652->passthru = 0; in snd_rme9652_set_defaults()
1793 rme9652_set_rate(rme9652, 48000); in snd_rme9652_set_defaults()
1798 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id; in snd_rme9652_interrupt() local
1800 if (!(rme9652_read(rme9652, RME9652_status_register) & RME9652_IRQ)) { in snd_rme9652_interrupt()
1804 rme9652_write(rme9652, RME9652_irq_clear, 0); in snd_rme9652_interrupt()
1806 if (rme9652->capture_substream) { in snd_rme9652_interrupt()
1807 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); in snd_rme9652_interrupt()
1810 if (rme9652->playback_substream) { in snd_rme9652_interrupt()
1811 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); in snd_rme9652_interrupt()
1818 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_pointer() local
1819 return rme9652_hw_pointer(rme9652); in snd_rme9652_hw_pointer()
1822 static signed char *rme9652_channel_buffer_location(struct snd_rme9652 *rme9652, in rme9652_channel_buffer_location() argument
1832 mapped_channel = rme9652->channel_map[channel]; in rme9652_channel_buffer_location()
1837 return rme9652->capture_buffer + in rme9652_channel_buffer_location()
1840 return rme9652->playback_buffer + in rme9652_channel_buffer_location()
1849 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_copy() local
1855 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_playback_copy()
1869 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_copy() local
1875 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_capture_copy()
1889 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_silence() local
1892 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_hw_silence()
1904 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_reset() local
1907 other = rme9652->capture_substream; in snd_rme9652_reset()
1909 other = rme9652->playback_substream; in snd_rme9652_reset()
1910 if (rme9652->running) in snd_rme9652_reset()
1911 runtime->status->hw_ptr = rme9652_hw_pointer(rme9652); in snd_rme9652_reset()
1930 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_params() local
1935 spin_lock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1938 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_hw_params()
1939 …rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= rme9652->creg_spdif_… in snd_rme9652_hw_params()
1940 this_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
1941 other_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1943 this_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1944 other_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
1955 rme9652_adat_sample_rate(rme9652)) { in snd_rme9652_hw_params()
1956 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1961 if (params_period_size(params) != rme9652->period_bytes / 4) { in snd_rme9652_hw_params()
1962 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1969 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1973 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1979 err = rme9652_set_rate(rme9652, params_rate(params)); in snd_rme9652_hw_params()
1985 err = rme9652_set_interrupt_interval(rme9652, params_period_size(params)); in snd_rme9652_hw_params()
1997 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_channel_info() local
2003 chn = rme9652->channel_map[array_index_nospec(info->channel, in snd_rme9652_channel_info()
2034 static void rme9652_silence_playback(struct snd_rme9652 *rme9652) in rme9652_silence_playback() argument
2036 memset(rme9652->playback_buffer, 0, RME9652_DMA_AREA_BYTES); in rme9652_silence_playback()
2042 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_trigger() local
2045 spin_lock(&rme9652->lock); in snd_rme9652_trigger()
2046 running = rme9652->running; in snd_rme9652_trigger()
2056 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2060 other = rme9652->capture_substream; in snd_rme9652_trigger()
2062 other = rme9652->playback_substream; in snd_rme9652_trigger()
2079 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2083 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2087 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2091 if (!rme9652->running && running) in snd_rme9652_trigger()
2092 rme9652_start(rme9652); in snd_rme9652_trigger()
2093 else if (rme9652->running && !running) in snd_rme9652_trigger()
2094 rme9652_stop(rme9652); in snd_rme9652_trigger()
2095 rme9652->running = running; in snd_rme9652_trigger()
2096 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2103 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_prepare() local
2106 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_prepare()
2107 if (!rme9652->running) in snd_rme9652_prepare()
2108 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_prepare()
2109 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_prepare()
2171 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels() local
2173 unsigned int list[2] = { rme9652->ds_channels, rme9652->ss_channels }; in snd_rme9652_hw_rule_channels()
2180 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels_rate() local
2185 .min = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2186 .max = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2192 .min = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2193 .max = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2204 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_rate_channels() local
2207 if (c->min >= rme9652->ss_channels) { in snd_rme9652_hw_rule_rate_channels()
2214 } else if (c->max <= rme9652->ds_channels) { in snd_rme9652_hw_rule_rate_channels()
2227 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_open() local
2230 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2235 snd_pcm_set_runtime_buffer(substream, &rme9652->playback_dma_buf); in snd_rme9652_playback_open()
2237 if (rme9652->capture_substream == NULL) { in snd_rme9652_playback_open()
2238 rme9652_stop(rme9652); in snd_rme9652_playback_open()
2239 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_playback_open()
2242 rme9652->playback_pid = current->pid; in snd_rme9652_playback_open()
2243 rme9652->playback_substream = substream; in snd_rme9652_playback_open()
2245 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2250 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_playback_open()
2253 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_playback_open()
2256 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_playback_open()
2259 rme9652->creg_spdif_stream = rme9652->creg_spdif; in snd_rme9652_playback_open()
2260 rme9652->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_open()
2261 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_open()
2262 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_open()
2268 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_release() local
2270 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2272 rme9652->playback_pid = -1; in snd_rme9652_playback_release()
2273 rme9652->playback_substream = NULL; in snd_rme9652_playback_release()
2275 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2277 rme9652->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_release()
2278 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_release()
2279 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_release()
2286 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_open() local
2289 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2294 snd_pcm_set_runtime_buffer(substream, &rme9652->capture_dma_buf); in snd_rme9652_capture_open()
2296 if (rme9652->playback_substream == NULL) { in snd_rme9652_capture_open()
2297 rme9652_stop(rme9652); in snd_rme9652_capture_open()
2298 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_capture_open()
2301 rme9652->capture_pid = current->pid; in snd_rme9652_capture_open()
2302 rme9652->capture_substream = substream; in snd_rme9652_capture_open()
2304 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2309 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_capture_open()
2312 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_capture_open()
2315 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_capture_open()
2322 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_release() local
2324 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2326 rme9652->capture_pid = -1; in snd_rme9652_capture_release()
2327 rme9652->capture_substream = NULL; in snd_rme9652_capture_release()
2329 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2357 struct snd_rme9652 *rme9652) in snd_rme9652_create_pcm() argument
2362 err = snd_pcm_new(card, rme9652->card_name, 0, 1, 1, &pcm); in snd_rme9652_create_pcm()
2366 rme9652->pcm = pcm; in snd_rme9652_create_pcm()
2367 pcm->private_data = rme9652; in snd_rme9652_create_pcm()
2368 strcpy(pcm->name, rme9652->card_name); in snd_rme9652_create_pcm()
2379 struct snd_rme9652 *rme9652, in snd_rme9652_create() argument
2382 struct pci_dev *pci = rme9652->pci; in snd_rme9652_create()
2387 rme9652->irq = -1; in snd_rme9652_create()
2388 rme9652->card = card; in snd_rme9652_create()
2390 pci_read_config_word(rme9652->pci, PCI_CLASS_REVISION, &rev); in snd_rme9652_create()
2408 spin_lock_init(&rme9652->lock); in snd_rme9652_create()
2413 rme9652->port = pci_resource_start(pci, 0); in snd_rme9652_create()
2414 rme9652->iobase = devm_ioremap(&pci->dev, rme9652->port, RME9652_IO_EXTENT); in snd_rme9652_create()
2415 if (rme9652->iobase == NULL) { in snd_rme9652_create()
2417 rme9652->port, rme9652->port + RME9652_IO_EXTENT - 1); in snd_rme9652_create()
2422 IRQF_SHARED, KBUILD_MODNAME, rme9652)) { in snd_rme9652_create()
2426 rme9652->irq = pci->irq; in snd_rme9652_create()
2427 card->sync_irq = rme9652->irq; in snd_rme9652_create()
2428 rme9652->precise_ptr = precise_ptr; in snd_rme9652_create()
2435 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_create()
2437 rme9652->hw_rev = 15; in snd_rme9652_create()
2439 rme9652->hw_rev = 11; in snd_rme9652_create()
2452 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2453 rme9652->card_name = "RME Digi9636 (Rev 1.5)"; in snd_rme9652_create()
2455 rme9652->card_name = "RME Digi9636"; in snd_rme9652_create()
2457 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2461 rme9652->card_name = "RME Digi9636 (Rev G)"; in snd_rme9652_create()
2462 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2466 rme9652->card_name = "RME Digi9652 (Rev G)"; in snd_rme9652_create()
2467 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2471 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2472 rme9652->card_name = "RME Digi9652 (Rev 1.5)"; in snd_rme9652_create()
2474 rme9652->card_name = "RME Digi9652"; in snd_rme9652_create()
2476 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2480 rme9652->ds_channels = (rme9652->ss_channels - 2) / 2 + 2; in snd_rme9652_create()
2482 pci_set_master(rme9652->pci); in snd_rme9652_create()
2484 err = snd_rme9652_initialize_memory(rme9652); in snd_rme9652_create()
2488 err = snd_rme9652_create_pcm(card, rme9652); in snd_rme9652_create()
2492 err = snd_rme9652_create_controls(card, rme9652); in snd_rme9652_create()
2496 snd_rme9652_proc_init(rme9652); in snd_rme9652_create()
2498 rme9652->last_spdif_sample_rate = -1; in snd_rme9652_create()
2499 rme9652->last_adat_sample_rate = -1; in snd_rme9652_create()
2500 rme9652->playback_pid = -1; in snd_rme9652_create()
2501 rme9652->capture_pid = -1; in snd_rme9652_create()
2502 rme9652->capture_substream = NULL; in snd_rme9652_create()
2503 rme9652->playback_substream = NULL; in snd_rme9652_create()
2505 snd_rme9652_set_defaults(rme9652); in snd_rme9652_create()
2507 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2508 rme9652_initialize_spdif_receiver (rme9652); in snd_rme9652_create()
2518 struct snd_rme9652 *rme9652; in snd_rme9652_probe() local
2535 rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_probe()
2537 rme9652->dev = dev; in snd_rme9652_probe()
2538 rme9652->pci = pci; in snd_rme9652_probe()
2539 err = snd_rme9652_create(card, rme9652, precise_ptr[dev]); in snd_rme9652_probe()
2543 strcpy(card->shortname, rme9652->card_name); in snd_rme9652_probe()
2546 card->shortname, rme9652->port, rme9652->irq); in snd_rme9652_probe()