Lines Matching refs:rme9652

304 static inline void rme9652_write(struct snd_rme9652 *rme9652, int reg, int val)  in rme9652_write()  argument
306 writel(val, rme9652->iobase + reg); in rme9652_write()
309 static inline unsigned int rme9652_read(struct snd_rme9652 *rme9652, int reg) in rme9652_read() argument
311 return readl(rme9652->iobase + reg); in rme9652_read()
314 static inline int snd_rme9652_use_is_exclusive(struct snd_rme9652 *rme9652) in snd_rme9652_use_is_exclusive() argument
319 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
320 if ((rme9652->playback_pid != rme9652->capture_pid) && in snd_rme9652_use_is_exclusive()
321 (rme9652->playback_pid >= 0) && (rme9652->capture_pid >= 0)) { in snd_rme9652_use_is_exclusive()
324 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
328 static inline int rme9652_adat_sample_rate(struct snd_rme9652 *rme9652) in rme9652_adat_sample_rate() argument
330 if (rme9652_running_double_speed(rme9652)) { in rme9652_adat_sample_rate()
331 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
334 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
339 static inline void rme9652_compute_period_size(struct snd_rme9652 *rme9652) in rme9652_compute_period_size() argument
343 i = rme9652->control_register & RME9652_latency; in rme9652_compute_period_size()
344 rme9652->period_bytes = 1 << ((rme9652_decode_latency(i) + 8)); in rme9652_compute_period_size()
345 rme9652->hw_offsetmask = in rme9652_compute_period_size()
346 (rme9652->period_bytes * 2 - 1) & RME9652_buf_pos; in rme9652_compute_period_size()
347 rme9652->max_jitter = 80; in rme9652_compute_period_size()
350 static snd_pcm_uframes_t rme9652_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_hw_pointer() argument
354 snd_pcm_uframes_t period_size = rme9652->period_bytes / 4; in rme9652_hw_pointer()
357 status = rme9652_read(rme9652, RME9652_status_register); in rme9652_hw_pointer()
358 if (!rme9652->precise_ptr) in rme9652_hw_pointer()
366 delta = rme9652->prev_hw_offset - offset; in rme9652_hw_pointer()
368 if (delta <= (snd_pcm_sframes_t)rme9652->max_jitter * 4) in rme9652_hw_pointer()
369 offset = rme9652->prev_hw_offset; in rme9652_hw_pointer()
371 rme9652->prev_hw_offset = offset; in rme9652_hw_pointer()
372 offset &= rme9652->hw_offsetmask; in rme9652_hw_pointer()
377 if (offset > rme9652->max_jitter) { in rme9652_hw_pointer()
379 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
384 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
388 if (offset > period_size + rme9652->max_jitter) { in rme9652_hw_pointer()
390 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
395 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
401 static inline void rme9652_reset_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_reset_hw_pointer() argument
412 rme9652_write(rme9652, i * 4, 0); in rme9652_reset_hw_pointer()
415 rme9652->prev_hw_offset = 0; in rme9652_reset_hw_pointer()
464 static int rme9652_set_rate(struct snd_rme9652 *rme9652, int rate) in rme9652_set_rate() argument
470 if (!snd_rme9652_use_is_exclusive (rme9652)) { in rme9652_set_rate()
485 spin_lock_irq(&rme9652->lock); in rme9652_set_rate()
486 xrate = rme9652_adat_sample_rate(rme9652); in rme9652_set_rate()
514 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
518 if (reject_if_open && (rme9652->capture_pid >= 0 || rme9652->playback_pid >= 0)) { in rme9652_set_rate()
519 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
523 if ((restart = rme9652->running)) { in rme9652_set_rate()
524 rme9652_stop(rme9652); in rme9652_set_rate()
526 rme9652->control_register &= ~(RME9652_freq | RME9652_DS); in rme9652_set_rate()
527 rme9652->control_register |= rate; in rme9652_set_rate()
528 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_rate()
531 rme9652_start(rme9652); in rme9652_set_rate()
535 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
536 rme9652->channel_map = channel_map_9652_ds; in rme9652_set_rate()
538 rme9652->channel_map = channel_map_9636_ds; in rme9652_set_rate()
541 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
542 rme9652->channel_map = channel_map_9652_ss; in rme9652_set_rate()
544 rme9652->channel_map = channel_map_9636_ss; in rme9652_set_rate()
548 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
552 static void rme9652_set_thru(struct snd_rme9652 *rme9652, int channel, int enable) in rme9652_set_thru() argument
556 rme9652->passthru = 0; in rme9652_set_thru()
564 rme9652->thru_bits |= (1 << i); in rme9652_set_thru()
565 rme9652_write(rme9652, RME9652_thru_base + i * 4, 1); in rme9652_set_thru()
569 rme9652->thru_bits &= ~(1 << i); in rme9652_set_thru()
570 rme9652_write(rme9652, RME9652_thru_base + i * 4, 0); in rme9652_set_thru()
577 mapped_channel = rme9652->channel_map[channel]; in rme9652_set_thru()
580 rme9652->thru_bits |= (1 << mapped_channel); in rme9652_set_thru()
582 rme9652->thru_bits &= ~(1 << mapped_channel); in rme9652_set_thru()
585 rme9652_write(rme9652, in rme9652_set_thru()
591 static int rme9652_set_passthru(struct snd_rme9652 *rme9652, int onoff) in rme9652_set_passthru() argument
594 rme9652_set_thru(rme9652, -1, 1); in rme9652_set_passthru()
600 rme9652->control_register = in rme9652_set_passthru()
605 rme9652_reset_hw_pointer(rme9652); in rme9652_set_passthru()
607 rme9652_write(rme9652, RME9652_control_register, in rme9652_set_passthru()
608 rme9652->control_register); in rme9652_set_passthru()
609 rme9652->passthru = 1; in rme9652_set_passthru()
611 rme9652_set_thru(rme9652, -1, 0); in rme9652_set_passthru()
612 rme9652_stop(rme9652); in rme9652_set_passthru()
613 rme9652->passthru = 0; in rme9652_set_passthru()
619 static void rme9652_spdif_set_bit (struct snd_rme9652 *rme9652, int mask, int onoff) in rme9652_spdif_set_bit() argument
622 rme9652->control_register |= mask; in rme9652_spdif_set_bit()
624 rme9652->control_register &= ~mask; in rme9652_spdif_set_bit()
626 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_spdif_set_bit()
629 static void rme9652_spdif_write_byte (struct snd_rme9652 *rme9652, const int val) in rme9652_spdif_write_byte() argument
636 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 1); in rme9652_spdif_write_byte()
638 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 0); in rme9652_spdif_write_byte()
640 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_write_byte()
641 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_write_byte()
645 static int rme9652_spdif_read_byte (struct snd_rme9652 *rme9652) in rme9652_spdif_read_byte() argument
654 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_read_byte()
655 if (rme9652_read (rme9652, RME9652_status_register) & RME9652_SPDIF_READ) in rme9652_spdif_read_byte()
657 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_read_byte()
663 static void rme9652_write_spdif_codec (struct snd_rme9652 *rme9652, const int address, const int da… in rme9652_write_spdif_codec() argument
665 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_write_spdif_codec()
666 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_write_spdif_codec()
667 rme9652_spdif_write_byte (rme9652, address); in rme9652_write_spdif_codec()
668 rme9652_spdif_write_byte (rme9652, data); in rme9652_write_spdif_codec()
669 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_write_spdif_codec()
673 static int rme9652_spdif_read_codec (struct snd_rme9652 *rme9652, const int address) in rme9652_spdif_read_codec() argument
677 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
678 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_spdif_read_codec()
679 rme9652_spdif_write_byte (rme9652, address); in rme9652_spdif_read_codec()
680 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
681 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
683 rme9652_spdif_write_byte (rme9652, 0x21); in rme9652_spdif_read_codec()
684 ret = rme9652_spdif_read_byte (rme9652); in rme9652_spdif_read_codec()
685 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
690 static void rme9652_initialize_spdif_receiver (struct snd_rme9652 *rme9652) in rme9652_initialize_spdif_receiver() argument
694 rme9652->control_register |= RME9652_SPDIF_RESET; in rme9652_initialize_spdif_receiver()
696 rme9652_write_spdif_codec (rme9652, 4, 0x40); in rme9652_initialize_spdif_receiver()
697 rme9652_write_spdif_codec (rme9652, 17, 0x13); in rme9652_initialize_spdif_receiver()
698 rme9652_write_spdif_codec (rme9652, 6, 0x02); in rme9652_initialize_spdif_receiver()
801 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_get() local
803 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif); in snd_rme9652_control_spdif_get()
809 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_put() local
814 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
815 change = val != rme9652->creg_spdif; in snd_rme9652_control_spdif_put()
816 rme9652->creg_spdif = val; in snd_rme9652_control_spdif_put()
817 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
830 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_get() local
832 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif_stream); in snd_rme9652_control_spdif_stream_get()
838 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_put() local
843 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
844 change = val != rme9652->creg_spdif_stream; in snd_rme9652_control_spdif_stream_put()
845 rme9652->creg_spdif_stream = val; in snd_rme9652_control_spdif_stream_put()
846 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_control_spdif_stream_put()
847 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= val); in snd_rme9652_control_spdif_stream_put()
848 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
871 static unsigned int rme9652_adat1_in(struct snd_rme9652 *rme9652) in rme9652_adat1_in() argument
873 if (rme9652->control_register & RME9652_ADAT1_INTERNAL) in rme9652_adat1_in()
878 static int rme9652_set_adat1_input(struct snd_rme9652 *rme9652, int internal) in rme9652_set_adat1_input() argument
883 rme9652->control_register |= RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
885 rme9652->control_register &= ~RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
890 if ((restart = rme9652->running)) { in rme9652_set_adat1_input()
891 rme9652_stop(rme9652); in rme9652_set_adat1_input()
894 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_adat1_input()
897 rme9652_start(rme9652); in rme9652_set_adat1_input()
912 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat1_in() local
914 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
915 ucontrol->value.enumerated.item[0] = rme9652_adat1_in(rme9652); in snd_rme9652_get_adat1_in()
916 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
922 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_adat1_in() local
926 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_adat1_in()
929 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
930 change = val != rme9652_adat1_in(rme9652); in snd_rme9652_put_adat1_in()
932 rme9652_set_adat1_input(rme9652, val); in snd_rme9652_put_adat1_in()
933 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
942 static unsigned int rme9652_spdif_in(struct snd_rme9652 *rme9652) in rme9652_spdif_in() argument
944 return rme9652_decode_spdif_in(rme9652->control_register & in rme9652_spdif_in()
948 static int rme9652_set_spdif_input(struct snd_rme9652 *rme9652, int in) in rme9652_set_spdif_input() argument
952 rme9652->control_register &= ~RME9652_inp; in rme9652_set_spdif_input()
953 rme9652->control_register |= rme9652_encode_spdif_in(in); in rme9652_set_spdif_input()
955 if ((restart = rme9652->running)) { in rme9652_set_spdif_input()
956 rme9652_stop(rme9652); in rme9652_set_spdif_input()
959 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_input()
962 rme9652_start(rme9652); in rme9652_set_spdif_input()
977 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_in() local
979 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
980 ucontrol->value.enumerated.item[0] = rme9652_spdif_in(rme9652); in snd_rme9652_get_spdif_in()
981 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
987 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_in() local
991 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_in()
994 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
995 change = val != rme9652_spdif_in(rme9652); in snd_rme9652_put_spdif_in()
997 rme9652_set_spdif_input(rme9652, val); in snd_rme9652_put_spdif_in()
998 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
1007 static int rme9652_spdif_out(struct snd_rme9652 *rme9652) in rme9652_spdif_out() argument
1009 return (rme9652->control_register & RME9652_opt_out) ? 1 : 0; in rme9652_spdif_out()
1012 static int rme9652_set_spdif_output(struct snd_rme9652 *rme9652, int out) in rme9652_set_spdif_output() argument
1017 rme9652->control_register |= RME9652_opt_out; in rme9652_set_spdif_output()
1019 rme9652->control_register &= ~RME9652_opt_out; in rme9652_set_spdif_output()
1022 if ((restart = rme9652->running)) { in rme9652_set_spdif_output()
1023 rme9652_stop(rme9652); in rme9652_set_spdif_output()
1026 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_output()
1029 rme9652_start(rme9652); in rme9652_set_spdif_output()
1039 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_out() local
1041 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1042 ucontrol->value.integer.value[0] = rme9652_spdif_out(rme9652); in snd_rme9652_get_spdif_out()
1043 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1049 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_out() local
1053 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_out()
1056 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1057 change = (int)val != rme9652_spdif_out(rme9652); in snd_rme9652_put_spdif_out()
1058 rme9652_set_spdif_output(rme9652, val); in snd_rme9652_put_spdif_out()
1059 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1068 static int rme9652_sync_mode(struct snd_rme9652 *rme9652) in rme9652_sync_mode() argument
1070 if (rme9652->control_register & RME9652_wsel) { in rme9652_sync_mode()
1072 } else if (rme9652->control_register & RME9652_Master) { in rme9652_sync_mode()
1079 static int rme9652_set_sync_mode(struct snd_rme9652 *rme9652, int mode) in rme9652_set_sync_mode() argument
1085 rme9652->control_register &= in rme9652_set_sync_mode()
1089 rme9652->control_register = in rme9652_set_sync_mode()
1090 (rme9652->control_register & ~RME9652_wsel) | RME9652_Master; in rme9652_set_sync_mode()
1093 rme9652->control_register |= in rme9652_set_sync_mode()
1098 if ((restart = rme9652->running)) { in rme9652_set_sync_mode()
1099 rme9652_stop(rme9652); in rme9652_set_sync_mode()
1102 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_mode()
1105 rme9652_start(rme9652); in rme9652_set_sync_mode()
1122 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_mode() local
1124 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1125 ucontrol->value.enumerated.item[0] = rme9652_sync_mode(rme9652); in snd_rme9652_get_sync_mode()
1126 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1132 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_mode() local
1137 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1138 change = (int)val != rme9652_sync_mode(rme9652); in snd_rme9652_put_sync_mode()
1139 rme9652_set_sync_mode(rme9652, val); in snd_rme9652_put_sync_mode()
1140 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1149 static int rme9652_sync_pref(struct snd_rme9652 *rme9652) in rme9652_sync_pref() argument
1151 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in rme9652_sync_pref()
1165 static int rme9652_set_sync_pref(struct snd_rme9652 *rme9652, int pref) in rme9652_set_sync_pref() argument
1169 rme9652->control_register &= ~RME9652_SyncPref_Mask; in rme9652_set_sync_pref()
1172 rme9652->control_register |= RME9652_SyncPref_ADAT1; in rme9652_set_sync_pref()
1175 rme9652->control_register |= RME9652_SyncPref_ADAT2; in rme9652_set_sync_pref()
1178 rme9652->control_register |= RME9652_SyncPref_ADAT3; in rme9652_set_sync_pref()
1181 rme9652->control_register |= RME9652_SyncPref_SPDIF; in rme9652_set_sync_pref()
1185 if ((restart = rme9652->running)) { in rme9652_set_sync_pref()
1186 rme9652_stop(rme9652); in rme9652_set_sync_pref()
1189 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_pref()
1192 rme9652_start(rme9652); in rme9652_set_sync_pref()
1203 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_sync_pref() local
1206 rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3, in snd_rme9652_info_sync_pref()
1212 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_pref() local
1214 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1215 ucontrol->value.enumerated.item[0] = rme9652_sync_pref(rme9652); in snd_rme9652_get_sync_pref()
1216 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1222 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_pref() local
1226 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_sync_pref()
1228 max = rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3; in snd_rme9652_put_sync_pref()
1230 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1231 change = (int)val != rme9652_sync_pref(rme9652); in snd_rme9652_put_sync_pref()
1232 rme9652_set_sync_pref(rme9652, val); in snd_rme9652_put_sync_pref()
1233 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1239 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_thru() local
1241 uinfo->count = rme9652->ss_channels; in snd_rme9652_info_thru()
1249 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_thru() local
1251 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_get_thru()
1253 for (k = 0; k < rme9652->ss_channels; ++k) { in snd_rme9652_get_thru()
1261 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_thru() local
1266 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_thru()
1269 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1274 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1275 change = thru_bits ^ rme9652->thru_bits; in snd_rme9652_put_thru()
1277 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1280 rme9652_set_thru(rme9652,chn,thru_bits&(1<<chn)); in snd_rme9652_put_thru()
1283 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1297 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_passthru() local
1299 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1300 ucontrol->value.integer.value[0] = rme9652->passthru; in snd_rme9652_get_passthru()
1301 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1307 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_passthru() local
1312 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_passthru()
1316 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1317 change = (ucontrol->value.integer.value[0] != rme9652->passthru); in snd_rme9652_put_passthru()
1319 err = rme9652_set_passthru(rme9652, val); in snd_rme9652_put_passthru()
1320 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1343 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_rate() local
1345 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1346 ucontrol->value.integer.value[0] = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_get_spdif_rate()
1347 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1368 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat_sync() local
1377 val = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_get_adat_sync()
1393 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_tc_valid() local
1396 (rme9652_read(rme9652, RME9652_status_register) & RME9652_tc_valid) ? 1 : 0; in snd_rme9652_get_tc_valid()
1518 static int snd_rme9652_create_controls(struct snd_card *card, struct snd_rme9652 *rme9652) in snd_rme9652_create_controls() argument
1525 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_controls[idx], rme9652))) < 0) in snd_rme9652_create_controls()
1528 rme9652->spdif_ctl = kctl; in snd_rme9652_create_controls()
1531 if (rme9652->ss_channels == RME9652_NCHANNELS) in snd_rme9652_create_controls()
1532 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat3_check, rme9652))) < 0) in snd_rme9652_create_controls()
1535 if (rme9652->hw_rev >= 15) in snd_rme9652_create_controls()
1536 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat1_input, rme9652))) < 0) in snd_rme9652_create_controls()
1549 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) entry->private_data; in snd_rme9652_proc_read() local
1550 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_proc_read()
1556 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_proc_read()
1558 snd_iprintf(buffer, "%s (Card #%d)\n", rme9652->card_name, rme9652->card->number + 1); in snd_rme9652_proc_read()
1560 rme9652->capture_buffer, rme9652->playback_buffer); in snd_rme9652_proc_read()
1562 rme9652->irq, rme9652->port, (unsigned long)rme9652->iobase); in snd_rme9652_proc_read()
1563 snd_iprintf(buffer, "Control register: %x\n", rme9652->control_register); in snd_rme9652_proc_read()
1567 x = 1 << (6 + rme9652_decode_latency(rme9652->control_register & in snd_rme9652_proc_read()
1571 x, (unsigned long) rme9652->period_bytes); in snd_rme9652_proc_read()
1573 rme9652_hw_pointer(rme9652)); in snd_rme9652_proc_read()
1575 rme9652->passthru ? "yes" : "no"); in snd_rme9652_proc_read()
1577 if ((rme9652->control_register & (RME9652_Master | RME9652_wsel)) == 0) { in snd_rme9652_proc_read()
1580 } else if (rme9652->control_register & RME9652_wsel) { in snd_rme9652_proc_read()
1591 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in snd_rme9652_proc_read()
1609 if (rme9652->hw_rev >= 15) in snd_rme9652_proc_read()
1611 (rme9652->control_register & RME9652_ADAT1_INTERNAL) ? in snd_rme9652_proc_read()
1616 switch (rme9652_decode_spdif_in(rme9652->control_register & in snd_rme9652_proc_read()
1632 if (rme9652->control_register & RME9652_opt_out) { in snd_rme9652_proc_read()
1638 if (rme9652->control_register & RME9652_PRO) { in snd_rme9652_proc_read()
1644 if (rme9652->control_register & RME9652_EMP) { in snd_rme9652_proc_read()
1650 if (rme9652->control_register & RME9652_Dolby) { in snd_rme9652_proc_read()
1656 i = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_proc_read()
1670 rme9652_adat_sample_rate(rme9652)); in snd_rme9652_proc_read()
1704 for (i = 0; i < rme9652->ss_channels; i++) { in snd_rme9652_proc_read()
1719 static void snd_rme9652_proc_init(struct snd_rme9652 *rme9652) in snd_rme9652_proc_init() argument
1721 snd_card_ro_proc_new(rme9652->card, "rme9652", rme9652, in snd_rme9652_proc_init()
1725 static void snd_rme9652_free_buffers(struct snd_rme9652 *rme9652) in snd_rme9652_free_buffers() argument
1727 snd_hammerfall_free_buffer(&rme9652->capture_dma_buf, rme9652->pci); in snd_rme9652_free_buffers()
1728 snd_hammerfall_free_buffer(&rme9652->playback_dma_buf, rme9652->pci); in snd_rme9652_free_buffers()
1731 static int snd_rme9652_free(struct snd_rme9652 *rme9652) in snd_rme9652_free() argument
1733 if (rme9652->irq >= 0) in snd_rme9652_free()
1734 rme9652_stop(rme9652); in snd_rme9652_free()
1735 snd_rme9652_free_buffers(rme9652); in snd_rme9652_free()
1737 if (rme9652->irq >= 0) in snd_rme9652_free()
1738 free_irq(rme9652->irq, (void *)rme9652); in snd_rme9652_free()
1739 iounmap(rme9652->iobase); in snd_rme9652_free()
1740 if (rme9652->port) in snd_rme9652_free()
1741 pci_release_regions(rme9652->pci); in snd_rme9652_free()
1743 if (pci_is_enabled(rme9652->pci)) in snd_rme9652_free()
1744 pci_disable_device(rme9652->pci); in snd_rme9652_free()
1748 static int snd_rme9652_initialize_memory(struct snd_rme9652 *rme9652) in snd_rme9652_initialize_memory() argument
1752 …if (snd_hammerfall_get_buffer(rme9652->pci, &rme9652->capture_dma_buf, RME9652_DMA_AREA_BYTES) < 0… in snd_rme9652_initialize_memory()
1753 … snd_hammerfall_get_buffer(rme9652->pci, &rme9652->playback_dma_buf, RME9652_DMA_AREA_BYTES) < 0) { in snd_rme9652_initialize_memory()
1754 if (rme9652->capture_dma_buf.area) in snd_rme9652_initialize_memory()
1755 snd_dma_free_pages(&rme9652->capture_dma_buf); in snd_rme9652_initialize_memory()
1756 dev_err(rme9652->card->dev, in snd_rme9652_initialize_memory()
1757 "%s: no buffers available\n", rme9652->card_name); in snd_rme9652_initialize_memory()
1763 cb_bus = ALIGN(rme9652->capture_dma_buf.addr, 0x10000ul); in snd_rme9652_initialize_memory()
1764 pb_bus = ALIGN(rme9652->playback_dma_buf.addr, 0x10000ul); in snd_rme9652_initialize_memory()
1768 rme9652_write(rme9652, RME9652_rec_buffer, cb_bus); in snd_rme9652_initialize_memory()
1769 rme9652_write(rme9652, RME9652_play_buffer, pb_bus); in snd_rme9652_initialize_memory()
1771 rme9652->capture_buffer = rme9652->capture_dma_buf.area + (cb_bus - rme9652->capture_dma_buf.addr); in snd_rme9652_initialize_memory()
1772rme9652->playback_buffer = rme9652->playback_dma_buf.area + (pb_bus - rme9652->playback_dma_buf.ad… in snd_rme9652_initialize_memory()
1777 static void snd_rme9652_set_defaults(struct snd_rme9652 *rme9652) in snd_rme9652_set_defaults() argument
1797 rme9652->control_register = in snd_rme9652_set_defaults()
1800 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in snd_rme9652_set_defaults()
1802 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_set_defaults()
1803 rme9652_compute_period_size(rme9652); in snd_rme9652_set_defaults()
1808 rme9652_write(rme9652, RME9652_thru_base + k * 4, 0); in snd_rme9652_set_defaults()
1810 rme9652->thru_bits = 0; in snd_rme9652_set_defaults()
1811 rme9652->passthru = 0; in snd_rme9652_set_defaults()
1815 rme9652_set_rate(rme9652, 48000); in snd_rme9652_set_defaults()
1820 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id; in snd_rme9652_interrupt() local
1822 if (!(rme9652_read(rme9652, RME9652_status_register) & RME9652_IRQ)) { in snd_rme9652_interrupt()
1826 rme9652_write(rme9652, RME9652_irq_clear, 0); in snd_rme9652_interrupt()
1828 if (rme9652->capture_substream) { in snd_rme9652_interrupt()
1829 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); in snd_rme9652_interrupt()
1832 if (rme9652->playback_substream) { in snd_rme9652_interrupt()
1833 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); in snd_rme9652_interrupt()
1840 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_pointer() local
1841 return rme9652_hw_pointer(rme9652); in snd_rme9652_hw_pointer()
1844 static signed char *rme9652_channel_buffer_location(struct snd_rme9652 *rme9652, in rme9652_channel_buffer_location() argument
1854 if ((mapped_channel = rme9652->channel_map[channel]) < 0) { in rme9652_channel_buffer_location()
1859 return rme9652->capture_buffer + in rme9652_channel_buffer_location()
1862 return rme9652->playback_buffer + in rme9652_channel_buffer_location()
1871 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_copy() local
1877 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_playback_copy()
1891 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_copy_kernel() local
1894 channel_buf = rme9652_channel_buffer_location(rme9652, in snd_rme9652_playback_copy_kernel()
1907 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_copy() local
1913 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_capture_copy()
1927 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_copy_kernel() local
1930 channel_buf = rme9652_channel_buffer_location(rme9652, in snd_rme9652_capture_copy_kernel()
1943 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_silence() local
1946 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_hw_silence()
1958 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_reset() local
1961 other = rme9652->capture_substream; in snd_rme9652_reset()
1963 other = rme9652->playback_substream; in snd_rme9652_reset()
1964 if (rme9652->running) in snd_rme9652_reset()
1965 runtime->status->hw_ptr = rme9652_hw_pointer(rme9652); in snd_rme9652_reset()
1984 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_params() local
1989 spin_lock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1992 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_hw_params()
1993 …rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= rme9652->creg_spdif_… in snd_rme9652_hw_params()
1994 this_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
1995 other_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1997 this_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1998 other_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
2009 rme9652_adat_sample_rate(rme9652)) { in snd_rme9652_hw_params()
2010 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2015 if (params_period_size(params) != rme9652->period_bytes / 4) { in snd_rme9652_hw_params()
2016 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2023 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2027 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2033 if ((err = rme9652_set_rate(rme9652, params_rate(params))) < 0) { in snd_rme9652_hw_params()
2038 if ((err = rme9652_set_interrupt_interval(rme9652, params_period_size(params))) < 0) { in snd_rme9652_hw_params()
2049 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_channel_info() local
2055 chn = rme9652->channel_map[array_index_nospec(info->channel, in snd_rme9652_channel_info()
2086 static void rme9652_silence_playback(struct snd_rme9652 *rme9652) in rme9652_silence_playback() argument
2088 memset(rme9652->playback_buffer, 0, RME9652_DMA_AREA_BYTES); in rme9652_silence_playback()
2094 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_trigger() local
2097 spin_lock(&rme9652->lock); in snd_rme9652_trigger()
2098 running = rme9652->running; in snd_rme9652_trigger()
2108 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2112 other = rme9652->capture_substream; in snd_rme9652_trigger()
2114 other = rme9652->playback_substream; in snd_rme9652_trigger()
2131 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2135 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2139 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2143 if (!rme9652->running && running) in snd_rme9652_trigger()
2144 rme9652_start(rme9652); in snd_rme9652_trigger()
2145 else if (rme9652->running && !running) in snd_rme9652_trigger()
2146 rme9652_stop(rme9652); in snd_rme9652_trigger()
2147 rme9652->running = running; in snd_rme9652_trigger()
2148 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2155 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_prepare() local
2158 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_prepare()
2159 if (!rme9652->running) in snd_rme9652_prepare()
2160 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_prepare()
2161 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_prepare()
2223 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels() local
2225 unsigned int list[2] = { rme9652->ds_channels, rme9652->ss_channels }; in snd_rme9652_hw_rule_channels()
2232 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels_rate() local
2237 .min = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2238 .max = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2244 .min = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2245 .max = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2256 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_rate_channels() local
2259 if (c->min >= rme9652->ss_channels) { in snd_rme9652_hw_rule_rate_channels()
2266 } else if (c->max <= rme9652->ds_channels) { in snd_rme9652_hw_rule_rate_channels()
2279 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_open() local
2282 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2287 runtime->dma_area = rme9652->playback_buffer; in snd_rme9652_playback_open()
2290 if (rme9652->capture_substream == NULL) { in snd_rme9652_playback_open()
2291 rme9652_stop(rme9652); in snd_rme9652_playback_open()
2292 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_playback_open()
2295 rme9652->playback_pid = current->pid; in snd_rme9652_playback_open()
2296 rme9652->playback_substream = substream; in snd_rme9652_playback_open()
2298 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2303 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_playback_open()
2306 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_playback_open()
2309 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_playback_open()
2312 rme9652->creg_spdif_stream = rme9652->creg_spdif; in snd_rme9652_playback_open()
2313 rme9652->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_open()
2314 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_open()
2315 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_open()
2321 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_release() local
2323 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2325 rme9652->playback_pid = -1; in snd_rme9652_playback_release()
2326 rme9652->playback_substream = NULL; in snd_rme9652_playback_release()
2328 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2330 rme9652->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_release()
2331 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_release()
2332 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_release()
2339 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_open() local
2342 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2347 runtime->dma_area = rme9652->capture_buffer; in snd_rme9652_capture_open()
2350 if (rme9652->playback_substream == NULL) { in snd_rme9652_capture_open()
2351 rme9652_stop(rme9652); in snd_rme9652_capture_open()
2352 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_capture_open()
2355 rme9652->capture_pid = current->pid; in snd_rme9652_capture_open()
2356 rme9652->capture_substream = substream; in snd_rme9652_capture_open()
2358 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2363 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_capture_open()
2366 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_capture_open()
2369 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_capture_open()
2376 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_release() local
2378 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2380 rme9652->capture_pid = -1; in snd_rme9652_capture_release()
2381 rme9652->capture_substream = NULL; in snd_rme9652_capture_release()
2383 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2413 struct snd_rme9652 *rme9652) in snd_rme9652_create_pcm() argument
2419 rme9652->card_name, in snd_rme9652_create_pcm()
2424 rme9652->pcm = pcm; in snd_rme9652_create_pcm()
2425 pcm->private_data = rme9652; in snd_rme9652_create_pcm()
2426 strcpy(pcm->name, rme9652->card_name); in snd_rme9652_create_pcm()
2437 struct snd_rme9652 *rme9652, in snd_rme9652_create() argument
2440 struct pci_dev *pci = rme9652->pci; in snd_rme9652_create()
2445 rme9652->irq = -1; in snd_rme9652_create()
2446 rme9652->card = card; in snd_rme9652_create()
2448 pci_read_config_word(rme9652->pci, PCI_CLASS_REVISION, &rev); in snd_rme9652_create()
2465 spin_lock_init(&rme9652->lock); in snd_rme9652_create()
2469 rme9652->port = pci_resource_start(pci, 0); in snd_rme9652_create()
2470 rme9652->iobase = ioremap(rme9652->port, RME9652_IO_EXTENT); in snd_rme9652_create()
2471 if (rme9652->iobase == NULL) { in snd_rme9652_create()
2473 rme9652->port, rme9652->port + RME9652_IO_EXTENT - 1); in snd_rme9652_create()
2478 KBUILD_MODNAME, rme9652)) { in snd_rme9652_create()
2482 rme9652->irq = pci->irq; in snd_rme9652_create()
2483 card->sync_irq = rme9652->irq; in snd_rme9652_create()
2484 rme9652->precise_ptr = precise_ptr; in snd_rme9652_create()
2491 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_create()
2493 rme9652->hw_rev = 15; in snd_rme9652_create()
2495 rme9652->hw_rev = 11; in snd_rme9652_create()
2508 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2509 rme9652->card_name = "RME Digi9636 (Rev 1.5)"; in snd_rme9652_create()
2511 rme9652->card_name = "RME Digi9636"; in snd_rme9652_create()
2513 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2517 rme9652->card_name = "RME Digi9636 (Rev G)"; in snd_rme9652_create()
2518 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2522 rme9652->card_name = "RME Digi9652 (Rev G)"; in snd_rme9652_create()
2523 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2527 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2528 rme9652->card_name = "RME Digi9652 (Rev 1.5)"; in snd_rme9652_create()
2530 rme9652->card_name = "RME Digi9652"; in snd_rme9652_create()
2532 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2536 rme9652->ds_channels = (rme9652->ss_channels - 2) / 2 + 2; in snd_rme9652_create()
2538 pci_set_master(rme9652->pci); in snd_rme9652_create()
2540 if ((err = snd_rme9652_initialize_memory(rme9652)) < 0) { in snd_rme9652_create()
2544 if ((err = snd_rme9652_create_pcm(card, rme9652)) < 0) { in snd_rme9652_create()
2548 if ((err = snd_rme9652_create_controls(card, rme9652)) < 0) { in snd_rme9652_create()
2552 snd_rme9652_proc_init(rme9652); in snd_rme9652_create()
2554 rme9652->last_spdif_sample_rate = -1; in snd_rme9652_create()
2555 rme9652->last_adat_sample_rate = -1; in snd_rme9652_create()
2556 rme9652->playback_pid = -1; in snd_rme9652_create()
2557 rme9652->capture_pid = -1; in snd_rme9652_create()
2558 rme9652->capture_substream = NULL; in snd_rme9652_create()
2559 rme9652->playback_substream = NULL; in snd_rme9652_create()
2561 snd_rme9652_set_defaults(rme9652); in snd_rme9652_create()
2563 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2564 rme9652_initialize_spdif_receiver (rme9652); in snd_rme9652_create()
2572 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_card_free() local
2574 if (rme9652) in snd_rme9652_card_free()
2575 snd_rme9652_free(rme9652); in snd_rme9652_card_free()
2582 struct snd_rme9652 *rme9652; in snd_rme9652_probe() local
2599 rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_probe()
2601 rme9652->dev = dev; in snd_rme9652_probe()
2602 rme9652->pci = pci; in snd_rme9652_probe()
2603 err = snd_rme9652_create(card, rme9652, precise_ptr[dev]); in snd_rme9652_probe()
2607 strcpy(card->shortname, rme9652->card_name); in snd_rme9652_probe()
2610 card->shortname, rme9652->port, rme9652->irq); in snd_rme9652_probe()