Lines Matching refs:rme9652
322 static inline void rme9652_write(struct snd_rme9652 *rme9652, int reg, int val) in rme9652_write() argument
324 writel(val, rme9652->iobase + reg); in rme9652_write()
327 static inline unsigned int rme9652_read(struct snd_rme9652 *rme9652, int reg) in rme9652_read() argument
329 return readl(rme9652->iobase + reg); in rme9652_read()
332 static inline int snd_rme9652_use_is_exclusive(struct snd_rme9652 *rme9652) in snd_rme9652_use_is_exclusive() argument
337 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
338 if ((rme9652->playback_pid != rme9652->capture_pid) && in snd_rme9652_use_is_exclusive()
339 (rme9652->playback_pid >= 0) && (rme9652->capture_pid >= 0)) { in snd_rme9652_use_is_exclusive()
342 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_use_is_exclusive()
346 static inline int rme9652_adat_sample_rate(struct snd_rme9652 *rme9652) in rme9652_adat_sample_rate() argument
348 if (rme9652_running_double_speed(rme9652)) { in rme9652_adat_sample_rate()
349 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
352 return (rme9652_read(rme9652, RME9652_status_register) & in rme9652_adat_sample_rate()
357 static inline void rme9652_compute_period_size(struct snd_rme9652 *rme9652) in rme9652_compute_period_size() argument
361 i = rme9652->control_register & RME9652_latency; in rme9652_compute_period_size()
362 rme9652->period_bytes = 1 << ((rme9652_decode_latency(i) + 8)); in rme9652_compute_period_size()
363 rme9652->hw_offsetmask = in rme9652_compute_period_size()
364 (rme9652->period_bytes * 2 - 1) & RME9652_buf_pos; in rme9652_compute_period_size()
365 rme9652->max_jitter = 80; in rme9652_compute_period_size()
368 static snd_pcm_uframes_t rme9652_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_hw_pointer() argument
372 snd_pcm_uframes_t period_size = rme9652->period_bytes / 4; in rme9652_hw_pointer()
375 status = rme9652_read(rme9652, RME9652_status_register); in rme9652_hw_pointer()
376 if (!rme9652->precise_ptr) in rme9652_hw_pointer()
384 delta = rme9652->prev_hw_offset - offset; in rme9652_hw_pointer()
386 if (delta <= (snd_pcm_sframes_t)rme9652->max_jitter * 4) in rme9652_hw_pointer()
387 offset = rme9652->prev_hw_offset; in rme9652_hw_pointer()
389 rme9652->prev_hw_offset = offset; in rme9652_hw_pointer()
390 offset &= rme9652->hw_offsetmask; in rme9652_hw_pointer()
395 if (offset > rme9652->max_jitter) { in rme9652_hw_pointer()
397 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
402 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
406 if (offset > period_size + rme9652->max_jitter) { in rme9652_hw_pointer()
408 dev_err(rme9652->card->dev, in rme9652_hw_pointer()
413 offset -= rme9652->max_jitter; in rme9652_hw_pointer()
419 static inline void rme9652_reset_hw_pointer(struct snd_rme9652 *rme9652) in rme9652_reset_hw_pointer() argument
430 rme9652_write(rme9652, i * 4, 0); in rme9652_reset_hw_pointer()
433 rme9652->prev_hw_offset = 0; in rme9652_reset_hw_pointer()
482 static int rme9652_set_rate(struct snd_rme9652 *rme9652, int rate) in rme9652_set_rate() argument
488 if (!snd_rme9652_use_is_exclusive (rme9652)) { in rme9652_set_rate()
503 spin_lock_irq(&rme9652->lock); in rme9652_set_rate()
504 xrate = rme9652_adat_sample_rate(rme9652); in rme9652_set_rate()
532 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
536 if (reject_if_open && (rme9652->capture_pid >= 0 || rme9652->playback_pid >= 0)) { in rme9652_set_rate()
537 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
541 if ((restart = rme9652->running)) { in rme9652_set_rate()
542 rme9652_stop(rme9652); in rme9652_set_rate()
544 rme9652->control_register &= ~(RME9652_freq | RME9652_DS); in rme9652_set_rate()
545 rme9652->control_register |= rate; in rme9652_set_rate()
546 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_rate()
549 rme9652_start(rme9652); in rme9652_set_rate()
553 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
554 rme9652->channel_map = channel_map_9652_ds; in rme9652_set_rate()
556 rme9652->channel_map = channel_map_9636_ds; in rme9652_set_rate()
559 if (rme9652->ss_channels == RME9652_NCHANNELS) { in rme9652_set_rate()
560 rme9652->channel_map = channel_map_9652_ss; in rme9652_set_rate()
562 rme9652->channel_map = channel_map_9636_ss; in rme9652_set_rate()
566 spin_unlock_irq(&rme9652->lock); in rme9652_set_rate()
570 static void rme9652_set_thru(struct snd_rme9652 *rme9652, int channel, int enable) in rme9652_set_thru() argument
574 rme9652->passthru = 0; in rme9652_set_thru()
582 rme9652->thru_bits |= (1 << i); in rme9652_set_thru()
583 rme9652_write(rme9652, RME9652_thru_base + i * 4, 1); in rme9652_set_thru()
587 rme9652->thru_bits &= ~(1 << i); in rme9652_set_thru()
588 rme9652_write(rme9652, RME9652_thru_base + i * 4, 0); in rme9652_set_thru()
595 mapped_channel = rme9652->channel_map[channel]; in rme9652_set_thru()
598 rme9652->thru_bits |= (1 << mapped_channel); in rme9652_set_thru()
600 rme9652->thru_bits &= ~(1 << mapped_channel); in rme9652_set_thru()
603 rme9652_write(rme9652, in rme9652_set_thru()
609 static int rme9652_set_passthru(struct snd_rme9652 *rme9652, int onoff) in rme9652_set_passthru() argument
612 rme9652_set_thru(rme9652, -1, 1); in rme9652_set_passthru()
618 rme9652->control_register = in rme9652_set_passthru()
623 rme9652_reset_hw_pointer(rme9652); in rme9652_set_passthru()
625 rme9652_write(rme9652, RME9652_control_register, in rme9652_set_passthru()
626 rme9652->control_register); in rme9652_set_passthru()
627 rme9652->passthru = 1; in rme9652_set_passthru()
629 rme9652_set_thru(rme9652, -1, 0); in rme9652_set_passthru()
630 rme9652_stop(rme9652); in rme9652_set_passthru()
631 rme9652->passthru = 0; in rme9652_set_passthru()
637 static void rme9652_spdif_set_bit (struct snd_rme9652 *rme9652, int mask, int onoff) in rme9652_spdif_set_bit() argument
640 rme9652->control_register |= mask; in rme9652_spdif_set_bit()
642 rme9652->control_register &= ~mask; in rme9652_spdif_set_bit()
644 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_spdif_set_bit()
647 static void rme9652_spdif_write_byte (struct snd_rme9652 *rme9652, const int val) in rme9652_spdif_write_byte() argument
654 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 1); in rme9652_spdif_write_byte()
656 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_WRITE, 0); in rme9652_spdif_write_byte()
658 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_write_byte()
659 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_write_byte()
663 static int rme9652_spdif_read_byte (struct snd_rme9652 *rme9652) in rme9652_spdif_read_byte() argument
672 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 1); in rme9652_spdif_read_byte()
673 if (rme9652_read (rme9652, RME9652_status_register) & RME9652_SPDIF_READ) in rme9652_spdif_read_byte()
675 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_CLOCK, 0); in rme9652_spdif_read_byte()
681 static void rme9652_write_spdif_codec (struct snd_rme9652 *rme9652, const int address, const int da… in rme9652_write_spdif_codec() argument
683 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_write_spdif_codec()
684 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_write_spdif_codec()
685 rme9652_spdif_write_byte (rme9652, address); in rme9652_write_spdif_codec()
686 rme9652_spdif_write_byte (rme9652, data); in rme9652_write_spdif_codec()
687 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_write_spdif_codec()
691 static int rme9652_spdif_read_codec (struct snd_rme9652 *rme9652, const int address) in rme9652_spdif_read_codec() argument
695 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
696 rme9652_spdif_write_byte (rme9652, 0x20); in rme9652_spdif_read_codec()
697 rme9652_spdif_write_byte (rme9652, address); in rme9652_spdif_read_codec()
698 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
699 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 1); in rme9652_spdif_read_codec()
701 rme9652_spdif_write_byte (rme9652, 0x21); in rme9652_spdif_read_codec()
702 ret = rme9652_spdif_read_byte (rme9652); in rme9652_spdif_read_codec()
703 rme9652_spdif_set_bit (rme9652, RME9652_SPDIF_SELECT, 0); in rme9652_spdif_read_codec()
708 static void rme9652_initialize_spdif_receiver (struct snd_rme9652 *rme9652) in rme9652_initialize_spdif_receiver() argument
712 rme9652->control_register |= RME9652_SPDIF_RESET; in rme9652_initialize_spdif_receiver()
714 rme9652_write_spdif_codec (rme9652, 4, 0x40); in rme9652_initialize_spdif_receiver()
715 rme9652_write_spdif_codec (rme9652, 17, 0x13); in rme9652_initialize_spdif_receiver()
716 rme9652_write_spdif_codec (rme9652, 6, 0x02); in rme9652_initialize_spdif_receiver()
819 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_get() local
821 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif); in snd_rme9652_control_spdif_get()
827 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_put() local
832 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
833 change = val != rme9652->creg_spdif; in snd_rme9652_control_spdif_put()
834 rme9652->creg_spdif = val; in snd_rme9652_control_spdif_put()
835 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_put()
848 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_get() local
850 snd_rme9652_convert_to_aes(&ucontrol->value.iec958, rme9652->creg_spdif_stream); in snd_rme9652_control_spdif_stream_get()
856 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_control_spdif_stream_put() local
861 spin_lock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
862 change = val != rme9652->creg_spdif_stream; in snd_rme9652_control_spdif_stream_put()
863 rme9652->creg_spdif_stream = val; in snd_rme9652_control_spdif_stream_put()
864 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_control_spdif_stream_put()
865 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= val); in snd_rme9652_control_spdif_stream_put()
866 spin_unlock_irq(&rme9652->lock); in snd_rme9652_control_spdif_stream_put()
889 static unsigned int rme9652_adat1_in(struct snd_rme9652 *rme9652) in rme9652_adat1_in() argument
891 if (rme9652->control_register & RME9652_ADAT1_INTERNAL) in rme9652_adat1_in()
896 static int rme9652_set_adat1_input(struct snd_rme9652 *rme9652, int internal) in rme9652_set_adat1_input() argument
901 rme9652->control_register |= RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
903 rme9652->control_register &= ~RME9652_ADAT1_INTERNAL; in rme9652_set_adat1_input()
908 if ((restart = rme9652->running)) { in rme9652_set_adat1_input()
909 rme9652_stop(rme9652); in rme9652_set_adat1_input()
912 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_adat1_input()
915 rme9652_start(rme9652); in rme9652_set_adat1_input()
930 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat1_in() local
932 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
933 ucontrol->value.enumerated.item[0] = rme9652_adat1_in(rme9652); in snd_rme9652_get_adat1_in()
934 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_adat1_in()
940 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_adat1_in() local
944 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_adat1_in()
947 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
948 change = val != rme9652_adat1_in(rme9652); in snd_rme9652_put_adat1_in()
950 rme9652_set_adat1_input(rme9652, val); in snd_rme9652_put_adat1_in()
951 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_adat1_in()
960 static unsigned int rme9652_spdif_in(struct snd_rme9652 *rme9652) in rme9652_spdif_in() argument
962 return rme9652_decode_spdif_in(rme9652->control_register & in rme9652_spdif_in()
966 static int rme9652_set_spdif_input(struct snd_rme9652 *rme9652, int in) in rme9652_set_spdif_input() argument
970 rme9652->control_register &= ~RME9652_inp; in rme9652_set_spdif_input()
971 rme9652->control_register |= rme9652_encode_spdif_in(in); in rme9652_set_spdif_input()
973 if ((restart = rme9652->running)) { in rme9652_set_spdif_input()
974 rme9652_stop(rme9652); in rme9652_set_spdif_input()
977 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_input()
980 rme9652_start(rme9652); in rme9652_set_spdif_input()
995 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_in() local
997 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
998 ucontrol->value.enumerated.item[0] = rme9652_spdif_in(rme9652); in snd_rme9652_get_spdif_in()
999 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_in()
1005 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_in() local
1009 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_in()
1012 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
1013 change = val != rme9652_spdif_in(rme9652); in snd_rme9652_put_spdif_in()
1015 rme9652_set_spdif_input(rme9652, val); in snd_rme9652_put_spdif_in()
1016 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_in()
1025 static int rme9652_spdif_out(struct snd_rme9652 *rme9652) in rme9652_spdif_out() argument
1027 return (rme9652->control_register & RME9652_opt_out) ? 1 : 0; in rme9652_spdif_out()
1030 static int rme9652_set_spdif_output(struct snd_rme9652 *rme9652, int out) in rme9652_set_spdif_output() argument
1035 rme9652->control_register |= RME9652_opt_out; in rme9652_set_spdif_output()
1037 rme9652->control_register &= ~RME9652_opt_out; in rme9652_set_spdif_output()
1040 if ((restart = rme9652->running)) { in rme9652_set_spdif_output()
1041 rme9652_stop(rme9652); in rme9652_set_spdif_output()
1044 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_spdif_output()
1047 rme9652_start(rme9652); in rme9652_set_spdif_output()
1057 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_out() local
1059 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1060 ucontrol->value.integer.value[0] = rme9652_spdif_out(rme9652); in snd_rme9652_get_spdif_out()
1061 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_out()
1067 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_spdif_out() local
1071 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_spdif_out()
1074 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1075 change = (int)val != rme9652_spdif_out(rme9652); in snd_rme9652_put_spdif_out()
1076 rme9652_set_spdif_output(rme9652, val); in snd_rme9652_put_spdif_out()
1077 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_spdif_out()
1086 static int rme9652_sync_mode(struct snd_rme9652 *rme9652) in rme9652_sync_mode() argument
1088 if (rme9652->control_register & RME9652_wsel) { in rme9652_sync_mode()
1090 } else if (rme9652->control_register & RME9652_Master) { in rme9652_sync_mode()
1097 static int rme9652_set_sync_mode(struct snd_rme9652 *rme9652, int mode) in rme9652_set_sync_mode() argument
1103 rme9652->control_register &= in rme9652_set_sync_mode()
1107 rme9652->control_register = in rme9652_set_sync_mode()
1108 (rme9652->control_register & ~RME9652_wsel) | RME9652_Master; in rme9652_set_sync_mode()
1111 rme9652->control_register |= in rme9652_set_sync_mode()
1116 if ((restart = rme9652->running)) { in rme9652_set_sync_mode()
1117 rme9652_stop(rme9652); in rme9652_set_sync_mode()
1120 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_mode()
1123 rme9652_start(rme9652); in rme9652_set_sync_mode()
1140 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_mode() local
1142 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1143 ucontrol->value.enumerated.item[0] = rme9652_sync_mode(rme9652); in snd_rme9652_get_sync_mode()
1144 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_mode()
1150 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_mode() local
1155 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1156 change = (int)val != rme9652_sync_mode(rme9652); in snd_rme9652_put_sync_mode()
1157 rme9652_set_sync_mode(rme9652, val); in snd_rme9652_put_sync_mode()
1158 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_mode()
1167 static int rme9652_sync_pref(struct snd_rme9652 *rme9652) in rme9652_sync_pref() argument
1169 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in rme9652_sync_pref()
1183 static int rme9652_set_sync_pref(struct snd_rme9652 *rme9652, int pref) in rme9652_set_sync_pref() argument
1187 rme9652->control_register &= ~RME9652_SyncPref_Mask; in rme9652_set_sync_pref()
1190 rme9652->control_register |= RME9652_SyncPref_ADAT1; in rme9652_set_sync_pref()
1193 rme9652->control_register |= RME9652_SyncPref_ADAT2; in rme9652_set_sync_pref()
1196 rme9652->control_register |= RME9652_SyncPref_ADAT3; in rme9652_set_sync_pref()
1199 rme9652->control_register |= RME9652_SyncPref_SPDIF; in rme9652_set_sync_pref()
1203 if ((restart = rme9652->running)) { in rme9652_set_sync_pref()
1204 rme9652_stop(rme9652); in rme9652_set_sync_pref()
1207 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in rme9652_set_sync_pref()
1210 rme9652_start(rme9652); in rme9652_set_sync_pref()
1221 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_sync_pref() local
1224 rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3, in snd_rme9652_info_sync_pref()
1230 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_sync_pref() local
1232 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1233 ucontrol->value.enumerated.item[0] = rme9652_sync_pref(rme9652); in snd_rme9652_get_sync_pref()
1234 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_sync_pref()
1240 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_sync_pref() local
1244 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_sync_pref()
1246 max = rme9652->ss_channels == RME9652_NCHANNELS ? 4 : 3; in snd_rme9652_put_sync_pref()
1248 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1249 change = (int)val != rme9652_sync_pref(rme9652); in snd_rme9652_put_sync_pref()
1250 rme9652_set_sync_pref(rme9652, val); in snd_rme9652_put_sync_pref()
1251 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_sync_pref()
1257 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_info_thru() local
1259 uinfo->count = rme9652->ss_channels; in snd_rme9652_info_thru()
1267 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_thru() local
1269 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_get_thru()
1271 for (k = 0; k < rme9652->ss_channels; ++k) { in snd_rme9652_get_thru()
1279 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_thru() local
1284 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_thru()
1287 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1292 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1293 change = thru_bits ^ rme9652->thru_bits; in snd_rme9652_put_thru()
1295 for (chn = 0; chn < rme9652->ss_channels; ++chn) { in snd_rme9652_put_thru()
1298 rme9652_set_thru(rme9652,chn,thru_bits&(1<<chn)); in snd_rme9652_put_thru()
1301 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_thru()
1315 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_passthru() local
1317 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1318 ucontrol->value.integer.value[0] = rme9652->passthru; in snd_rme9652_get_passthru()
1319 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_passthru()
1325 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_put_passthru() local
1330 if (!snd_rme9652_use_is_exclusive(rme9652)) in snd_rme9652_put_passthru()
1334 spin_lock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1335 change = (ucontrol->value.integer.value[0] != rme9652->passthru); in snd_rme9652_put_passthru()
1337 err = rme9652_set_passthru(rme9652, val); in snd_rme9652_put_passthru()
1338 spin_unlock_irq(&rme9652->lock); in snd_rme9652_put_passthru()
1361 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_spdif_rate() local
1363 spin_lock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1364 ucontrol->value.integer.value[0] = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_get_spdif_rate()
1365 spin_unlock_irq(&rme9652->lock); in snd_rme9652_get_spdif_rate()
1386 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_adat_sync() local
1395 val = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_get_adat_sync()
1411 struct snd_rme9652 *rme9652 = snd_kcontrol_chip(kcontrol); in snd_rme9652_get_tc_valid() local
1414 (rme9652_read(rme9652, RME9652_status_register) & RME9652_tc_valid) ? 1 : 0; in snd_rme9652_get_tc_valid()
1536 static int snd_rme9652_create_controls(struct snd_card *card, struct snd_rme9652 *rme9652) in snd_rme9652_create_controls() argument
1543 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_controls[idx], rme9652))) < 0) in snd_rme9652_create_controls()
1546 rme9652->spdif_ctl = kctl; in snd_rme9652_create_controls()
1549 if (rme9652->ss_channels == RME9652_NCHANNELS) in snd_rme9652_create_controls()
1550 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat3_check, rme9652))) < 0) in snd_rme9652_create_controls()
1553 if (rme9652->hw_rev >= 15) in snd_rme9652_create_controls()
1554 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme9652_adat1_input, rme9652))) < 0) in snd_rme9652_create_controls()
1567 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) entry->private_data; in snd_rme9652_proc_read() local
1568 u32 thru_bits = rme9652->thru_bits; in snd_rme9652_proc_read()
1574 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_proc_read()
1576 snd_iprintf(buffer, "%s (Card #%d)\n", rme9652->card_name, rme9652->card->number + 1); in snd_rme9652_proc_read()
1578 rme9652->capture_buffer, rme9652->playback_buffer); in snd_rme9652_proc_read()
1580 rme9652->irq, rme9652->port, (unsigned long)rme9652->iobase); in snd_rme9652_proc_read()
1581 snd_iprintf(buffer, "Control register: %x\n", rme9652->control_register); in snd_rme9652_proc_read()
1585 x = 1 << (6 + rme9652_decode_latency(rme9652->control_register & in snd_rme9652_proc_read()
1589 x, (unsigned long) rme9652->period_bytes); in snd_rme9652_proc_read()
1591 rme9652_hw_pointer(rme9652)); in snd_rme9652_proc_read()
1593 rme9652->passthru ? "yes" : "no"); in snd_rme9652_proc_read()
1595 if ((rme9652->control_register & (RME9652_Master | RME9652_wsel)) == 0) { in snd_rme9652_proc_read()
1598 } else if (rme9652->control_register & RME9652_wsel) { in snd_rme9652_proc_read()
1609 switch (rme9652->control_register & RME9652_SyncPref_Mask) { in snd_rme9652_proc_read()
1627 if (rme9652->hw_rev >= 15) in snd_rme9652_proc_read()
1629 (rme9652->control_register & RME9652_ADAT1_INTERNAL) ? in snd_rme9652_proc_read()
1634 switch (rme9652_decode_spdif_in(rme9652->control_register & in snd_rme9652_proc_read()
1650 if (rme9652->control_register & RME9652_opt_out) { in snd_rme9652_proc_read()
1656 if (rme9652->control_register & RME9652_PRO) { in snd_rme9652_proc_read()
1662 if (rme9652->control_register & RME9652_EMP) { in snd_rme9652_proc_read()
1668 if (rme9652->control_register & RME9652_Dolby) { in snd_rme9652_proc_read()
1674 i = rme9652_spdif_sample_rate(rme9652); in snd_rme9652_proc_read()
1688 rme9652_adat_sample_rate(rme9652)); in snd_rme9652_proc_read()
1722 for (i = 0; i < rme9652->ss_channels; i++) { in snd_rme9652_proc_read()
1737 static void snd_rme9652_proc_init(struct snd_rme9652 *rme9652) in snd_rme9652_proc_init() argument
1741 if (! snd_card_proc_new(rme9652->card, "rme9652", &entry)) in snd_rme9652_proc_init()
1742 snd_info_set_text_ops(entry, rme9652, snd_rme9652_proc_read); in snd_rme9652_proc_init()
1745 static void snd_rme9652_free_buffers(struct snd_rme9652 *rme9652) in snd_rme9652_free_buffers() argument
1747 snd_hammerfall_free_buffer(&rme9652->capture_dma_buf, rme9652->pci); in snd_rme9652_free_buffers()
1748 snd_hammerfall_free_buffer(&rme9652->playback_dma_buf, rme9652->pci); in snd_rme9652_free_buffers()
1751 static int snd_rme9652_free(struct snd_rme9652 *rme9652) in snd_rme9652_free() argument
1753 if (rme9652->irq >= 0) in snd_rme9652_free()
1754 rme9652_stop(rme9652); in snd_rme9652_free()
1755 snd_rme9652_free_buffers(rme9652); in snd_rme9652_free()
1757 if (rme9652->irq >= 0) in snd_rme9652_free()
1758 free_irq(rme9652->irq, (void *)rme9652); in snd_rme9652_free()
1759 iounmap(rme9652->iobase); in snd_rme9652_free()
1760 if (rme9652->port) in snd_rme9652_free()
1761 pci_release_regions(rme9652->pci); in snd_rme9652_free()
1763 pci_disable_device(rme9652->pci); in snd_rme9652_free()
1767 static int snd_rme9652_initialize_memory(struct snd_rme9652 *rme9652) in snd_rme9652_initialize_memory() argument
1771 …if (snd_hammerfall_get_buffer(rme9652->pci, &rme9652->capture_dma_buf, RME9652_DMA_AREA_BYTES) < 0… in snd_rme9652_initialize_memory()
1772 … snd_hammerfall_get_buffer(rme9652->pci, &rme9652->playback_dma_buf, RME9652_DMA_AREA_BYTES) < 0) { in snd_rme9652_initialize_memory()
1773 if (rme9652->capture_dma_buf.area) in snd_rme9652_initialize_memory()
1774 snd_dma_free_pages(&rme9652->capture_dma_buf); in snd_rme9652_initialize_memory()
1775 dev_err(rme9652->card->dev, in snd_rme9652_initialize_memory()
1776 "%s: no buffers available\n", rme9652->card_name); in snd_rme9652_initialize_memory()
1782 cb_bus = ALIGN(rme9652->capture_dma_buf.addr, 0x10000ul); in snd_rme9652_initialize_memory()
1783 pb_bus = ALIGN(rme9652->playback_dma_buf.addr, 0x10000ul); in snd_rme9652_initialize_memory()
1787 rme9652_write(rme9652, RME9652_rec_buffer, cb_bus); in snd_rme9652_initialize_memory()
1788 rme9652_write(rme9652, RME9652_play_buffer, pb_bus); in snd_rme9652_initialize_memory()
1790 rme9652->capture_buffer = rme9652->capture_dma_buf.area + (cb_bus - rme9652->capture_dma_buf.addr); in snd_rme9652_initialize_memory()
1791 …rme9652->playback_buffer = rme9652->playback_dma_buf.area + (pb_bus - rme9652->playback_dma_buf.ad… in snd_rme9652_initialize_memory()
1796 static void snd_rme9652_set_defaults(struct snd_rme9652 *rme9652) in snd_rme9652_set_defaults() argument
1816 rme9652->control_register = in snd_rme9652_set_defaults()
1819 rme9652_write(rme9652, RME9652_control_register, rme9652->control_register); in snd_rme9652_set_defaults()
1821 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_set_defaults()
1822 rme9652_compute_period_size(rme9652); in snd_rme9652_set_defaults()
1827 rme9652_write(rme9652, RME9652_thru_base + k * 4, 0); in snd_rme9652_set_defaults()
1829 rme9652->thru_bits = 0; in snd_rme9652_set_defaults()
1830 rme9652->passthru = 0; in snd_rme9652_set_defaults()
1834 rme9652_set_rate(rme9652, 48000); in snd_rme9652_set_defaults()
1839 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id; in snd_rme9652_interrupt() local
1841 if (!(rme9652_read(rme9652, RME9652_status_register) & RME9652_IRQ)) { in snd_rme9652_interrupt()
1845 rme9652_write(rme9652, RME9652_irq_clear, 0); in snd_rme9652_interrupt()
1847 if (rme9652->capture_substream) { in snd_rme9652_interrupt()
1848 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream); in snd_rme9652_interrupt()
1851 if (rme9652->playback_substream) { in snd_rme9652_interrupt()
1852 snd_pcm_period_elapsed(rme9652->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); in snd_rme9652_interrupt()
1859 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_pointer() local
1860 return rme9652_hw_pointer(rme9652); in snd_rme9652_hw_pointer()
1863 static char *rme9652_channel_buffer_location(struct snd_rme9652 *rme9652, in rme9652_channel_buffer_location() argument
1873 if ((mapped_channel = rme9652->channel_map[channel]) < 0) { in rme9652_channel_buffer_location()
1878 return rme9652->capture_buffer + in rme9652_channel_buffer_location()
1881 return rme9652->playback_buffer + in rme9652_channel_buffer_location()
1889 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_copy() local
1895 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_playback_copy()
1908 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_copy() local
1914 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_hw_silence() local
1930 channel_buf = rme9652_channel_buffer_location (rme9652, in snd_rme9652_hw_silence()
1942 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_reset() local
1945 other = rme9652->capture_substream; in snd_rme9652_reset()
1947 other = rme9652->playback_substream; in snd_rme9652_reset()
1948 if (rme9652->running) in snd_rme9652_reset()
1949 runtime->status->hw_ptr = rme9652_hw_pointer(rme9652); in snd_rme9652_reset()
1968 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_hw_params() local
1973 spin_lock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1976 rme9652->control_register &= ~(RME9652_PRO | RME9652_Dolby | RME9652_EMP); in snd_rme9652_hw_params()
1977 …rme9652_write(rme9652, RME9652_control_register, rme9652->control_register |= rme9652->creg_spdif_… in snd_rme9652_hw_params()
1978 this_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
1979 other_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1981 this_pid = rme9652->capture_pid; in snd_rme9652_hw_params()
1982 other_pid = rme9652->playback_pid; in snd_rme9652_hw_params()
1993 rme9652_adat_sample_rate(rme9652)) { in snd_rme9652_hw_params()
1994 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
1999 if (params_period_size(params) != rme9652->period_bytes / 4) { in snd_rme9652_hw_params()
2000 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2007 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2011 spin_unlock_irq(&rme9652->lock); in snd_rme9652_hw_params()
2017 if ((err = rme9652_set_rate(rme9652, params_rate(params))) < 0) { in snd_rme9652_hw_params()
2022 if ((err = rme9652_set_interrupt_interval(rme9652, params_period_size(params))) < 0) { in snd_rme9652_hw_params()
2033 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_channel_info() local
2039 if ((chn = rme9652->channel_map[info->channel]) < 0) { in snd_rme9652_channel_info()
2069 static void rme9652_silence_playback(struct snd_rme9652 *rme9652) in rme9652_silence_playback() argument
2071 memset(rme9652->playback_buffer, 0, RME9652_DMA_AREA_BYTES); in rme9652_silence_playback()
2077 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_trigger() local
2080 spin_lock(&rme9652->lock); in snd_rme9652_trigger()
2081 running = rme9652->running; in snd_rme9652_trigger()
2091 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2095 other = rme9652->capture_substream; in snd_rme9652_trigger()
2097 other = rme9652->playback_substream; in snd_rme9652_trigger()
2114 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2118 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2122 rme9652_silence_playback(rme9652); in snd_rme9652_trigger()
2126 if (!rme9652->running && running) in snd_rme9652_trigger()
2127 rme9652_start(rme9652); in snd_rme9652_trigger()
2128 else if (rme9652->running && !running) in snd_rme9652_trigger()
2129 rme9652_stop(rme9652); in snd_rme9652_trigger()
2130 rme9652->running = running; in snd_rme9652_trigger()
2131 spin_unlock(&rme9652->lock); in snd_rme9652_trigger()
2138 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_prepare() local
2142 spin_lock_irqsave(&rme9652->lock, flags); in snd_rme9652_prepare()
2143 if (!rme9652->running) in snd_rme9652_prepare()
2144 rme9652_reset_hw_pointer(rme9652); in snd_rme9652_prepare()
2145 spin_unlock_irqrestore(&rme9652->lock, flags); in snd_rme9652_prepare()
2207 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels() local
2209 unsigned int list[2] = { rme9652->ds_channels, rme9652->ss_channels }; in snd_rme9652_hw_rule_channels()
2216 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_channels_rate() local
2221 .min = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2222 .max = rme9652->ds_channels, in snd_rme9652_hw_rule_channels_rate()
2228 .min = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2229 .max = rme9652->ss_channels, in snd_rme9652_hw_rule_channels_rate()
2240 struct snd_rme9652 *rme9652 = rule->private; in snd_rme9652_hw_rule_rate_channels() local
2243 if (c->min >= rme9652->ss_channels) { in snd_rme9652_hw_rule_rate_channels()
2250 } else if (c->max <= rme9652->ds_channels) { in snd_rme9652_hw_rule_rate_channels()
2263 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_open() local
2266 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2271 runtime->dma_area = rme9652->playback_buffer; in snd_rme9652_playback_open()
2274 if (rme9652->capture_substream == NULL) { in snd_rme9652_playback_open()
2275 rme9652_stop(rme9652); in snd_rme9652_playback_open()
2276 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_playback_open()
2279 rme9652->playback_pid = current->pid; in snd_rme9652_playback_open()
2280 rme9652->playback_substream = substream; in snd_rme9652_playback_open()
2282 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_open()
2287 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_playback_open()
2290 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_playback_open()
2293 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_playback_open()
2296 rme9652->creg_spdif_stream = rme9652->creg_spdif; in snd_rme9652_playback_open()
2297 rme9652->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_open()
2298 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_open()
2299 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_open()
2305 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_playback_release() local
2307 spin_lock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2309 rme9652->playback_pid = -1; in snd_rme9652_playback_release()
2310 rme9652->playback_substream = NULL; in snd_rme9652_playback_release()
2312 spin_unlock_irq(&rme9652->lock); in snd_rme9652_playback_release()
2314 rme9652->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; in snd_rme9652_playback_release()
2315 snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE | in snd_rme9652_playback_release()
2316 SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id); in snd_rme9652_playback_release()
2323 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_open() local
2326 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2331 runtime->dma_area = rme9652->capture_buffer; in snd_rme9652_capture_open()
2334 if (rme9652->playback_substream == NULL) { in snd_rme9652_capture_open()
2335 rme9652_stop(rme9652); in snd_rme9652_capture_open()
2336 rme9652_set_thru(rme9652, -1, 0); in snd_rme9652_capture_open()
2339 rme9652->capture_pid = current->pid; in snd_rme9652_capture_open()
2340 rme9652->capture_substream = substream; in snd_rme9652_capture_open()
2342 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_open()
2347 snd_rme9652_hw_rule_channels, rme9652, in snd_rme9652_capture_open()
2350 snd_rme9652_hw_rule_channels_rate, rme9652, in snd_rme9652_capture_open()
2353 snd_rme9652_hw_rule_rate_channels, rme9652, in snd_rme9652_capture_open()
2360 struct snd_rme9652 *rme9652 = snd_pcm_substream_chip(substream); in snd_rme9652_capture_release() local
2362 spin_lock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2364 rme9652->capture_pid = -1; in snd_rme9652_capture_release()
2365 rme9652->capture_substream = NULL; in snd_rme9652_capture_release()
2367 spin_unlock_irq(&rme9652->lock); in snd_rme9652_capture_release()
2395 struct snd_rme9652 *rme9652) in snd_rme9652_create_pcm() argument
2401 rme9652->card_name, in snd_rme9652_create_pcm()
2406 rme9652->pcm = pcm; in snd_rme9652_create_pcm()
2407 pcm->private_data = rme9652; in snd_rme9652_create_pcm()
2408 strcpy(pcm->name, rme9652->card_name); in snd_rme9652_create_pcm()
2419 struct snd_rme9652 *rme9652, in snd_rme9652_create() argument
2422 struct pci_dev *pci = rme9652->pci; in snd_rme9652_create()
2427 rme9652->irq = -1; in snd_rme9652_create()
2428 rme9652->card = card; in snd_rme9652_create()
2430 pci_read_config_word(rme9652->pci, PCI_CLASS_REVISION, &rev); in snd_rme9652_create()
2447 spin_lock_init(&rme9652->lock); in snd_rme9652_create()
2451 rme9652->port = pci_resource_start(pci, 0); in snd_rme9652_create()
2452 rme9652->iobase = ioremap_nocache(rme9652->port, RME9652_IO_EXTENT); in snd_rme9652_create()
2453 if (rme9652->iobase == NULL) { in snd_rme9652_create()
2455 rme9652->port, rme9652->port + RME9652_IO_EXTENT - 1); in snd_rme9652_create()
2460 KBUILD_MODNAME, rme9652)) { in snd_rme9652_create()
2464 rme9652->irq = pci->irq; in snd_rme9652_create()
2465 rme9652->precise_ptr = precise_ptr; in snd_rme9652_create()
2472 status = rme9652_read(rme9652, RME9652_status_register); in snd_rme9652_create()
2474 rme9652->hw_rev = 15; in snd_rme9652_create()
2476 rme9652->hw_rev = 11; in snd_rme9652_create()
2489 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2490 rme9652->card_name = "RME Digi9636 (Rev 1.5)"; in snd_rme9652_create()
2492 rme9652->card_name = "RME Digi9636"; in snd_rme9652_create()
2494 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2498 rme9652->card_name = "RME Digi9636 (Rev G)"; in snd_rme9652_create()
2499 rme9652->ss_channels = RME9636_NCHANNELS; in snd_rme9652_create()
2503 rme9652->card_name = "RME Digi9652 (Rev G)"; in snd_rme9652_create()
2504 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2508 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2509 rme9652->card_name = "RME Digi9652 (Rev 1.5)"; in snd_rme9652_create()
2511 rme9652->card_name = "RME Digi9652"; in snd_rme9652_create()
2513 rme9652->ss_channels = RME9652_NCHANNELS; in snd_rme9652_create()
2517 rme9652->ds_channels = (rme9652->ss_channels - 2) / 2 + 2; in snd_rme9652_create()
2519 pci_set_master(rme9652->pci); in snd_rme9652_create()
2521 if ((err = snd_rme9652_initialize_memory(rme9652)) < 0) { in snd_rme9652_create()
2525 if ((err = snd_rme9652_create_pcm(card, rme9652)) < 0) { in snd_rme9652_create()
2529 if ((err = snd_rme9652_create_controls(card, rme9652)) < 0) { in snd_rme9652_create()
2533 snd_rme9652_proc_init(rme9652); in snd_rme9652_create()
2535 rme9652->last_spdif_sample_rate = -1; in snd_rme9652_create()
2536 rme9652->last_adat_sample_rate = -1; in snd_rme9652_create()
2537 rme9652->playback_pid = -1; in snd_rme9652_create()
2538 rme9652->capture_pid = -1; in snd_rme9652_create()
2539 rme9652->capture_substream = NULL; in snd_rme9652_create()
2540 rme9652->playback_substream = NULL; in snd_rme9652_create()
2542 snd_rme9652_set_defaults(rme9652); in snd_rme9652_create()
2544 if (rme9652->hw_rev == 15) { in snd_rme9652_create()
2545 rme9652_initialize_spdif_receiver (rme9652); in snd_rme9652_create()
2553 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_card_free() local
2555 if (rme9652) in snd_rme9652_card_free()
2556 snd_rme9652_free(rme9652); in snd_rme9652_card_free()
2563 struct snd_rme9652 *rme9652; in snd_rme9652_probe() local
2580 rme9652 = (struct snd_rme9652 *) card->private_data; in snd_rme9652_probe()
2582 rme9652->dev = dev; in snd_rme9652_probe()
2583 rme9652->pci = pci; in snd_rme9652_probe()
2585 if ((err = snd_rme9652_create(card, rme9652, precise_ptr[dev])) < 0) { in snd_rme9652_probe()
2590 strcpy(card->shortname, rme9652->card_name); in snd_rme9652_probe()
2593 card->shortname, rme9652->port, rme9652->irq); in snd_rme9652_probe()