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