tscm              132 sound/firewire/tascam/amdtp-tascam.c 	struct snd_tscm *tscm = container_of(s, struct snd_tscm, tx_stream);
tscm              133 sound/firewire/tascam/amdtp-tascam.c 	bool used = READ_ONCE(tscm->hwdep->used);
tscm              142 sound/firewire/tascam/amdtp-tascam.c 		before = tscm->state[index];
tscm              159 sound/firewire/tascam/amdtp-tascam.c 						&tscm->queue[tscm->push_pos];
tscm              162 sound/firewire/tascam/amdtp-tascam.c 				spin_lock_irqsave(&tscm->lock, flag);
tscm              166 sound/firewire/tascam/amdtp-tascam.c 				if (++tscm->push_pos >= SND_TSCM_QUEUE_COUNT)
tscm              167 sound/firewire/tascam/amdtp-tascam.c 					tscm->push_pos = 0;
tscm              168 sound/firewire/tascam/amdtp-tascam.c 				spin_unlock_irqrestore(&tscm->lock, flag);
tscm              170 sound/firewire/tascam/amdtp-tascam.c 				wake_up(&tscm->hwdep_wait);
tscm              174 sound/firewire/tascam/amdtp-tascam.c 		tscm->state[index] = after;
tscm               18 sound/firewire/tascam/tascam-hwdep.c static long tscm_hwdep_read_locked(struct snd_tscm *tscm, char __user *buf,
tscm               25 sound/firewire/tascam/tascam-hwdep.c 	event.status = (tscm->dev_lock_count > 0);
tscm               26 sound/firewire/tascam/tascam-hwdep.c 	tscm->dev_lock_changed = false;
tscm               29 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm               37 sound/firewire/tascam/tascam-hwdep.c static long tscm_hwdep_read_queue(struct snd_tscm *tscm, char __user *buf,
tscm               42 sound/firewire/tascam/tascam-hwdep.c 	struct snd_firewire_tascam_change *entries = tscm->queue;
tscm               47 sound/firewire/tascam/tascam-hwdep.c 		spin_unlock_irq(&tscm->lock);
tscm               61 sound/firewire/tascam/tascam-hwdep.c 		if (tscm->pull_pos == tscm->push_pos)
tscm               63 sound/firewire/tascam/tascam-hwdep.c 		else if (tscm->pull_pos < tscm->push_pos)
tscm               64 sound/firewire/tascam/tascam-hwdep.c 			tail_pos = tscm->push_pos;
tscm               67 sound/firewire/tascam/tascam-hwdep.c 		head_pos = tscm->pull_pos;
tscm               75 sound/firewire/tascam/tascam-hwdep.c 		spin_unlock_irq(&tscm->lock);
tscm               79 sound/firewire/tascam/tascam-hwdep.c 		spin_lock_irq(&tscm->lock);
tscm               81 sound/firewire/tascam/tascam-hwdep.c 		tscm->pull_pos = tail_pos % SND_TSCM_QUEUE_COUNT;
tscm               88 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm               99 sound/firewire/tascam/tascam-hwdep.c 	struct snd_tscm *tscm = hwdep->private_data;
tscm              102 sound/firewire/tascam/tascam-hwdep.c 	spin_lock_irq(&tscm->lock);
tscm              104 sound/firewire/tascam/tascam-hwdep.c 	while (!tscm->dev_lock_changed && tscm->push_pos == tscm->pull_pos) {
tscm              105 sound/firewire/tascam/tascam-hwdep.c 		prepare_to_wait(&tscm->hwdep_wait, &wait, TASK_INTERRUPTIBLE);
tscm              106 sound/firewire/tascam/tascam-hwdep.c 		spin_unlock_irq(&tscm->lock);
tscm              108 sound/firewire/tascam/tascam-hwdep.c 		finish_wait(&tscm->hwdep_wait, &wait);
tscm              111 sound/firewire/tascam/tascam-hwdep.c 		spin_lock_irq(&tscm->lock);
tscm              115 sound/firewire/tascam/tascam-hwdep.c 	if (tscm->dev_lock_changed) {
tscm              116 sound/firewire/tascam/tascam-hwdep.c 		count = tscm_hwdep_read_locked(tscm, buf, count, offset);
tscm              117 sound/firewire/tascam/tascam-hwdep.c 	} else if (tscm->push_pos != tscm->pull_pos) {
tscm              118 sound/firewire/tascam/tascam-hwdep.c 		count = tscm_hwdep_read_queue(tscm, buf, count, offset);
tscm              120 sound/firewire/tascam/tascam-hwdep.c 		spin_unlock_irq(&tscm->lock);
tscm              130 sound/firewire/tascam/tascam-hwdep.c 	struct snd_tscm *tscm = hwdep->private_data;
tscm              133 sound/firewire/tascam/tascam-hwdep.c 	poll_wait(file, &tscm->hwdep_wait, wait);
tscm              135 sound/firewire/tascam/tascam-hwdep.c 	spin_lock_irq(&tscm->lock);
tscm              136 sound/firewire/tascam/tascam-hwdep.c 	if (tscm->dev_lock_changed || tscm->push_pos != tscm->pull_pos)
tscm              140 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm              145 sound/firewire/tascam/tascam-hwdep.c static int hwdep_get_info(struct snd_tscm *tscm, void __user *arg)
tscm              147 sound/firewire/tascam/tascam-hwdep.c 	struct fw_device *dev = fw_parent_device(tscm->unit);
tscm              164 sound/firewire/tascam/tascam-hwdep.c static int hwdep_lock(struct snd_tscm *tscm)
tscm              168 sound/firewire/tascam/tascam-hwdep.c 	spin_lock_irq(&tscm->lock);
tscm              170 sound/firewire/tascam/tascam-hwdep.c 	if (tscm->dev_lock_count == 0) {
tscm              171 sound/firewire/tascam/tascam-hwdep.c 		tscm->dev_lock_count = -1;
tscm              177 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm              182 sound/firewire/tascam/tascam-hwdep.c static int hwdep_unlock(struct snd_tscm *tscm)
tscm              186 sound/firewire/tascam/tascam-hwdep.c 	spin_lock_irq(&tscm->lock);
tscm              188 sound/firewire/tascam/tascam-hwdep.c 	if (tscm->dev_lock_count == -1) {
tscm              189 sound/firewire/tascam/tascam-hwdep.c 		tscm->dev_lock_count = 0;
tscm              195 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm              200 sound/firewire/tascam/tascam-hwdep.c static int tscm_hwdep_state(struct snd_tscm *tscm, void __user *arg)
tscm              202 sound/firewire/tascam/tascam-hwdep.c 	if (copy_to_user(arg, tscm->state, sizeof(tscm->state)))
tscm              210 sound/firewire/tascam/tascam-hwdep.c 	struct snd_tscm *tscm = hwdep->private_data;
tscm              212 sound/firewire/tascam/tascam-hwdep.c 	spin_lock_irq(&tscm->lock);
tscm              213 sound/firewire/tascam/tascam-hwdep.c 	if (tscm->dev_lock_count == -1)
tscm              214 sound/firewire/tascam/tascam-hwdep.c 		tscm->dev_lock_count = 0;
tscm              215 sound/firewire/tascam/tascam-hwdep.c 	spin_unlock_irq(&tscm->lock);
tscm              223 sound/firewire/tascam/tascam-hwdep.c 	struct snd_tscm *tscm = hwdep->private_data;
tscm              227 sound/firewire/tascam/tascam-hwdep.c 		return hwdep_get_info(tscm, (void __user *)arg);
tscm              229 sound/firewire/tascam/tascam-hwdep.c 		return hwdep_lock(tscm);
tscm              231 sound/firewire/tascam/tascam-hwdep.c 		return hwdep_unlock(tscm);
tscm              233 sound/firewire/tascam/tascam-hwdep.c 		return tscm_hwdep_state(tscm, (void __user *)arg);
tscm              250 sound/firewire/tascam/tascam-hwdep.c int snd_tscm_create_hwdep_device(struct snd_tscm *tscm)
tscm              262 sound/firewire/tascam/tascam-hwdep.c 	err = snd_hwdep_new(tscm->card, "Tascam", 0, &hwdep);
tscm              269 sound/firewire/tascam/tascam-hwdep.c 	hwdep->private_data = tscm;
tscm              272 sound/firewire/tascam/tascam-hwdep.c 	tscm->hwdep = hwdep;
tscm               18 sound/firewire/tascam/tascam-midi.c 	struct snd_tscm *tscm = substream->rmidi->private_data;
tscm               20 sound/firewire/tascam/tascam-midi.c 	snd_fw_async_midi_port_init(&tscm->out_ports[substream->number]);
tscm               38 sound/firewire/tascam/tascam-midi.c 	struct snd_tscm *tscm = substream->rmidi->private_data;
tscm               40 sound/firewire/tascam/tascam-midi.c 	snd_fw_async_midi_port_finish(&tscm->out_ports[substream->number]);
tscm               45 sound/firewire/tascam/tascam-midi.c 	struct snd_tscm *tscm = substrm->rmidi->private_data;
tscm               48 sound/firewire/tascam/tascam-midi.c 	spin_lock_irqsave(&tscm->lock, flags);
tscm               51 sound/firewire/tascam/tascam-midi.c 		tscm->tx_midi_substreams[substrm->number] = substrm;
tscm               53 sound/firewire/tascam/tascam-midi.c 		tscm->tx_midi_substreams[substrm->number] = NULL;
tscm               55 sound/firewire/tascam/tascam-midi.c 	spin_unlock_irqrestore(&tscm->lock, flags);
tscm               60 sound/firewire/tascam/tascam-midi.c 	struct snd_tscm *tscm = substrm->rmidi->private_data;
tscm               63 sound/firewire/tascam/tascam-midi.c 	spin_lock_irqsave(&tscm->lock, flags);
tscm               66 sound/firewire/tascam/tascam-midi.c 		snd_fw_async_midi_port_run(&tscm->out_ports[substrm->number],
tscm               69 sound/firewire/tascam/tascam-midi.c 	spin_unlock_irqrestore(&tscm->lock, flags);
tscm               72 sound/firewire/tascam/tascam-midi.c int snd_tscm_create_midi_devices(struct snd_tscm *tscm)
tscm               90 sound/firewire/tascam/tascam-midi.c 	err = snd_rawmidi_new(tscm->card, tscm->card->driver, 0,
tscm               91 sound/firewire/tascam/tascam-midi.c 			      tscm->spec->midi_playback_ports,
tscm               92 sound/firewire/tascam/tascam-midi.c 			      tscm->spec->midi_capture_ports,
tscm               98 sound/firewire/tascam/tascam-midi.c 		 "%s MIDI", tscm->card->shortname);
tscm               99 sound/firewire/tascam/tascam-midi.c 	rmidi->private_data = tscm;
tscm              109 sound/firewire/tascam/tascam-midi.c 		if (subs->number < tscm->spec->midi_capture_ports) {
tscm              113 sound/firewire/tascam/tascam-midi.c 				 tscm->card->shortname, subs->number + 1);
tscm              124 sound/firewire/tascam/tascam-midi.c 		if (subs->number < tscm->spec->midi_playback_ports) {
tscm              128 sound/firewire/tascam/tascam-midi.c 				 tscm->card->shortname, subs->number + 1);
tscm               10 sound/firewire/tascam/tascam-pcm.c static int pcm_init_hw_params(struct snd_tscm *tscm,
tscm               20 sound/firewire/tascam/tascam-pcm.c 		stream = &tscm->tx_stream;
tscm               21 sound/firewire/tascam/tascam-pcm.c 		pcm_channels = tscm->spec->pcm_capture_analog_channels;
tscm               24 sound/firewire/tascam/tascam-pcm.c 		stream = &tscm->rx_stream;
tscm               25 sound/firewire/tascam/tascam-pcm.c 		pcm_channels = tscm->spec->pcm_playback_analog_channels;
tscm               28 sound/firewire/tascam/tascam-pcm.c 	if (tscm->spec->has_adat)
tscm               30 sound/firewire/tascam/tascam-pcm.c 	if (tscm->spec->has_spdif)
tscm               45 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm               50 sound/firewire/tascam/tascam-pcm.c 	err = snd_tscm_stream_lock_try(tscm);
tscm               54 sound/firewire/tascam/tascam-pcm.c 	err = pcm_init_hw_params(tscm, substream);
tscm               58 sound/firewire/tascam/tascam-pcm.c 	err = snd_tscm_stream_get_clock(tscm, &clock);
tscm               63 sound/firewire/tascam/tascam-pcm.c 	    amdtp_stream_pcm_running(&tscm->rx_stream) ||
tscm               64 sound/firewire/tascam/tascam-pcm.c 	    amdtp_stream_pcm_running(&tscm->tx_stream)) {
tscm               65 sound/firewire/tascam/tascam-pcm.c 		err = snd_tscm_stream_get_rate(tscm, &rate);
tscm               76 sound/firewire/tascam/tascam-pcm.c 	snd_tscm_stream_lock_release(tscm);
tscm               82 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm               84 sound/firewire/tascam/tascam-pcm.c 	snd_tscm_stream_lock_release(tscm);
tscm               92 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              103 sound/firewire/tascam/tascam-pcm.c 		mutex_lock(&tscm->mutex);
tscm              104 sound/firewire/tascam/tascam-pcm.c 		err = snd_tscm_stream_reserve_duplex(tscm, rate);
tscm              106 sound/firewire/tascam/tascam-pcm.c 			++tscm->substreams_counter;
tscm              107 sound/firewire/tascam/tascam-pcm.c 		mutex_unlock(&tscm->mutex);
tscm              115 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              117 sound/firewire/tascam/tascam-pcm.c 	mutex_lock(&tscm->mutex);
tscm              120 sound/firewire/tascam/tascam-pcm.c 		--tscm->substreams_counter;
tscm              122 sound/firewire/tascam/tascam-pcm.c 	snd_tscm_stream_stop_duplex(tscm);
tscm              124 sound/firewire/tascam/tascam-pcm.c 	mutex_unlock(&tscm->mutex);
tscm              131 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              135 sound/firewire/tascam/tascam-pcm.c 	mutex_lock(&tscm->mutex);
tscm              137 sound/firewire/tascam/tascam-pcm.c 	err = snd_tscm_stream_start_duplex(tscm, runtime->rate);
tscm              139 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_prepare(&tscm->tx_stream);
tscm              141 sound/firewire/tascam/tascam-pcm.c 	mutex_unlock(&tscm->mutex);
tscm              148 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              152 sound/firewire/tascam/tascam-pcm.c 	mutex_lock(&tscm->mutex);
tscm              154 sound/firewire/tascam/tascam-pcm.c 	err = snd_tscm_stream_start_duplex(tscm, runtime->rate);
tscm              156 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_prepare(&tscm->rx_stream);
tscm              158 sound/firewire/tascam/tascam-pcm.c 	mutex_unlock(&tscm->mutex);
tscm              165 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              169 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_trigger(&tscm->tx_stream, substream);
tscm              172 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_trigger(&tscm->tx_stream, NULL);
tscm              183 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              187 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_trigger(&tscm->rx_stream, substream);
tscm              190 sound/firewire/tascam/tascam-pcm.c 		amdtp_stream_pcm_trigger(&tscm->rx_stream, NULL);
tscm              201 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = sbstrm->private_data;
tscm              203 sound/firewire/tascam/tascam-pcm.c 	return amdtp_stream_pcm_pointer(&tscm->tx_stream);
tscm              208 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = sbstrm->private_data;
tscm              210 sound/firewire/tascam/tascam-pcm.c 	return amdtp_stream_pcm_pointer(&tscm->rx_stream);
tscm              215 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              217 sound/firewire/tascam/tascam-pcm.c 	return amdtp_stream_pcm_ack(&tscm->tx_stream);
tscm              222 sound/firewire/tascam/tascam-pcm.c 	struct snd_tscm *tscm = substream->private_data;
tscm              224 sound/firewire/tascam/tascam-pcm.c 	return amdtp_stream_pcm_ack(&tscm->rx_stream);
tscm              227 sound/firewire/tascam/tascam-pcm.c int snd_tscm_create_pcm_devices(struct snd_tscm *tscm)
tscm              256 sound/firewire/tascam/tascam-pcm.c 	err = snd_pcm_new(tscm->card, tscm->card->driver, 0, 1, 1, &pcm);
tscm              260 sound/firewire/tascam/tascam-pcm.c 	pcm->private_data = tscm;
tscm              262 sound/firewire/tascam/tascam-pcm.c 		 "%s PCM", tscm->card->shortname);
tscm               13 sound/firewire/tascam/tascam-proc.c 	struct snd_tscm *tscm = entry->private_data;
tscm               18 sound/firewire/tascam/tascam-proc.c 	err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST,
tscm               25 sound/firewire/tascam/tascam-proc.c 	err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST,
tscm               32 sound/firewire/tascam/tascam-proc.c 	err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST,
tscm               39 sound/firewire/tascam/tascam-proc.c 	err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST,
tscm               52 sound/firewire/tascam/tascam-proc.c static void add_node(struct snd_tscm *tscm, struct snd_info_entry *root,
tscm               59 sound/firewire/tascam/tascam-proc.c 	entry = snd_info_create_card_entry(tscm->card, name, root);
tscm               61 sound/firewire/tascam/tascam-proc.c 		snd_info_set_text_ops(entry, tscm, op);
tscm               64 sound/firewire/tascam/tascam-proc.c void snd_tscm_proc_init(struct snd_tscm *tscm)
tscm               72 sound/firewire/tascam/tascam-proc.c 	root = snd_info_create_card_entry(tscm->card, "firewire",
tscm               73 sound/firewire/tascam/tascam-proc.c 					  tscm->card->proc_root);
tscm               78 sound/firewire/tascam/tascam-proc.c 	add_node(tscm, root, "firmware", proc_read_firmware);
tscm               16 sound/firewire/tascam/tascam-stream.c static int get_clock(struct snd_tscm *tscm, u32 *data)
tscm               23 sound/firewire/tascam/tascam-stream.c 		err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST,
tscm               44 sound/firewire/tascam/tascam-stream.c static int set_clock(struct snd_tscm *tscm, unsigned int rate,
tscm               51 sound/firewire/tascam/tascam-stream.c 	err = get_clock(tscm, &data);
tscm               81 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm               92 sound/firewire/tascam/tascam-stream.c 	return snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm               97 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_get_rate(struct snd_tscm *tscm, unsigned int *rate)
tscm              102 sound/firewire/tascam/tascam-stream.c 	err = get_clock(tscm, &data);
tscm              125 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_get_clock(struct snd_tscm *tscm, enum snd_tscm_clock *clock)
tscm              130 sound/firewire/tascam/tascam-stream.c 	err = get_clock(tscm, &data);
tscm              141 sound/firewire/tascam/tascam-stream.c static int enable_data_channels(struct snd_tscm *tscm)
tscm              149 sound/firewire/tascam/tascam-stream.c 	for (i = 0; i < tscm->spec->pcm_capture_analog_channels; ++i)
tscm              151 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_adat)
tscm              153 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_spdif)
tscm              157 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              164 sound/firewire/tascam/tascam-stream.c 	for (i = 0; i < tscm->spec->pcm_playback_analog_channels; ++i)
tscm              166 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_adat)
tscm              168 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_spdif)
tscm              172 sound/firewire/tascam/tascam-stream.c 	return snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              177 sound/firewire/tascam/tascam-stream.c static int set_stream_formats(struct snd_tscm *tscm, unsigned int rate)
tscm              184 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              190 sound/firewire/tascam/tascam-stream.c 	return enable_data_channels(tscm);
tscm              193 sound/firewire/tascam/tascam-stream.c static void finish_session(struct snd_tscm *tscm)
tscm              198 sound/firewire/tascam/tascam-stream.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              203 sound/firewire/tascam/tascam-stream.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              209 sound/firewire/tascam/tascam-stream.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              213 sound/firewire/tascam/tascam-stream.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              217 sound/firewire/tascam/tascam-stream.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              222 sound/firewire/tascam/tascam-stream.c static int begin_session(struct snd_tscm *tscm)
tscm              228 sound/firewire/tascam/tascam-stream.c 	reg = cpu_to_be32(tscm->tx_resources.channel);
tscm              229 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              237 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              244 sound/firewire/tascam/tascam-stream.c 	reg = cpu_to_be32(tscm->rx_resources.channel);
tscm              245 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              252 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              259 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              267 sound/firewire/tascam/tascam-stream.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              275 sound/firewire/tascam/tascam-stream.c 	return snd_fw_transaction(tscm->unit,
tscm              281 sound/firewire/tascam/tascam-stream.c static int keep_resources(struct snd_tscm *tscm, unsigned int rate,
tscm              287 sound/firewire/tascam/tascam-stream.c 	if (stream == &tscm->tx_stream)
tscm              288 sound/firewire/tascam/tascam-stream.c 		resources = &tscm->tx_resources;
tscm              290 sound/firewire/tascam/tascam-stream.c 		resources = &tscm->rx_resources;
tscm              298 sound/firewire/tascam/tascam-stream.c 				fw_parent_device(tscm->unit)->max_speed);
tscm              301 sound/firewire/tascam/tascam-stream.c static int init_stream(struct snd_tscm *tscm, struct amdtp_stream *s)
tscm              308 sound/firewire/tascam/tascam-stream.c 	if (s == &tscm->tx_stream) {
tscm              309 sound/firewire/tascam/tascam-stream.c 		resources = &tscm->tx_resources;
tscm              311 sound/firewire/tascam/tascam-stream.c 		pcm_channels = tscm->spec->pcm_capture_analog_channels;
tscm              313 sound/firewire/tascam/tascam-stream.c 		resources = &tscm->rx_resources;
tscm              315 sound/firewire/tascam/tascam-stream.c 		pcm_channels = tscm->spec->pcm_playback_analog_channels;
tscm              318 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_adat)
tscm              320 sound/firewire/tascam/tascam-stream.c 	if (tscm->spec->has_spdif)
tscm              323 sound/firewire/tascam/tascam-stream.c 	err = fw_iso_resources_init(resources, tscm->unit);
tscm              327 sound/firewire/tascam/tascam-stream.c 	err = amdtp_tscm_init(s, tscm->unit, dir, pcm_channels);
tscm              334 sound/firewire/tascam/tascam-stream.c static void destroy_stream(struct snd_tscm *tscm, struct amdtp_stream *s)
tscm              338 sound/firewire/tascam/tascam-stream.c 	if (s == &tscm->tx_stream)
tscm              339 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_destroy(&tscm->tx_resources);
tscm              341 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_destroy(&tscm->rx_resources);
tscm              344 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_init_duplex(struct snd_tscm *tscm)
tscm              348 sound/firewire/tascam/tascam-stream.c 	err = init_stream(tscm, &tscm->tx_stream);
tscm              352 sound/firewire/tascam/tascam-stream.c 	err = init_stream(tscm, &tscm->rx_stream);
tscm              354 sound/firewire/tascam/tascam-stream.c 		destroy_stream(tscm, &tscm->tx_stream);
tscm              358 sound/firewire/tascam/tascam-stream.c 	err = amdtp_domain_init(&tscm->domain);
tscm              360 sound/firewire/tascam/tascam-stream.c 		destroy_stream(tscm, &tscm->tx_stream);
tscm              361 sound/firewire/tascam/tascam-stream.c 		destroy_stream(tscm, &tscm->rx_stream);
tscm              368 sound/firewire/tascam/tascam-stream.c void snd_tscm_stream_update_duplex(struct snd_tscm *tscm)
tscm              370 sound/firewire/tascam/tascam-stream.c 	amdtp_domain_stop(&tscm->domain);
tscm              372 sound/firewire/tascam/tascam-stream.c 	amdtp_stream_pcm_abort(&tscm->tx_stream);
tscm              373 sound/firewire/tascam/tascam-stream.c 	amdtp_stream_pcm_abort(&tscm->rx_stream);
tscm              378 sound/firewire/tascam/tascam-stream.c void snd_tscm_stream_destroy_duplex(struct snd_tscm *tscm)
tscm              380 sound/firewire/tascam/tascam-stream.c 	amdtp_domain_destroy(&tscm->domain);
tscm              382 sound/firewire/tascam/tascam-stream.c 	destroy_stream(tscm, &tscm->rx_stream);
tscm              383 sound/firewire/tascam/tascam-stream.c 	destroy_stream(tscm, &tscm->tx_stream);
tscm              386 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_reserve_duplex(struct snd_tscm *tscm, unsigned int rate)
tscm              391 sound/firewire/tascam/tascam-stream.c 	err = snd_tscm_stream_get_rate(tscm, &curr_rate);
tscm              395 sound/firewire/tascam/tascam-stream.c 	if (tscm->substreams_counter == 0 || rate != curr_rate) {
tscm              396 sound/firewire/tascam/tascam-stream.c 		amdtp_domain_stop(&tscm->domain);
tscm              398 sound/firewire/tascam/tascam-stream.c 		finish_session(tscm);
tscm              400 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_free(&tscm->tx_resources);
tscm              401 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_free(&tscm->rx_resources);
tscm              403 sound/firewire/tascam/tascam-stream.c 		err = set_clock(tscm, rate, INT_MAX);
tscm              407 sound/firewire/tascam/tascam-stream.c 		err = keep_resources(tscm, rate, &tscm->tx_stream);
tscm              411 sound/firewire/tascam/tascam-stream.c 		err = keep_resources(tscm, rate, &tscm->rx_stream);
tscm              413 sound/firewire/tascam/tascam-stream.c 			fw_iso_resources_free(&tscm->tx_resources);
tscm              421 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_start_duplex(struct snd_tscm *tscm, unsigned int rate)
tscm              423 sound/firewire/tascam/tascam-stream.c 	unsigned int generation = tscm->rx_resources.generation;
tscm              426 sound/firewire/tascam/tascam-stream.c 	if (tscm->substreams_counter == 0)
tscm              429 sound/firewire/tascam/tascam-stream.c 	if (amdtp_streaming_error(&tscm->rx_stream) ||
tscm              430 sound/firewire/tascam/tascam-stream.c 	    amdtp_streaming_error(&tscm->tx_stream)) {
tscm              431 sound/firewire/tascam/tascam-stream.c 		amdtp_domain_stop(&tscm->domain);
tscm              432 sound/firewire/tascam/tascam-stream.c 		finish_session(tscm);
tscm              435 sound/firewire/tascam/tascam-stream.c 	if (generation != fw_parent_device(tscm->unit)->card->generation) {
tscm              436 sound/firewire/tascam/tascam-stream.c 		err = fw_iso_resources_update(&tscm->tx_resources);
tscm              440 sound/firewire/tascam/tascam-stream.c 		err = fw_iso_resources_update(&tscm->rx_resources);
tscm              445 sound/firewire/tascam/tascam-stream.c 	if (!amdtp_stream_running(&tscm->rx_stream)) {
tscm              446 sound/firewire/tascam/tascam-stream.c 		int spd = fw_parent_device(tscm->unit)->max_speed;
tscm              448 sound/firewire/tascam/tascam-stream.c 		err = set_stream_formats(tscm, rate);
tscm              452 sound/firewire/tascam/tascam-stream.c 		err = begin_session(tscm);
tscm              456 sound/firewire/tascam/tascam-stream.c 		err = amdtp_domain_add_stream(&tscm->domain, &tscm->rx_stream,
tscm              457 sound/firewire/tascam/tascam-stream.c 					      tscm->rx_resources.channel, spd);
tscm              461 sound/firewire/tascam/tascam-stream.c 		err = amdtp_domain_add_stream(&tscm->domain, &tscm->tx_stream,
tscm              462 sound/firewire/tascam/tascam-stream.c 					      tscm->tx_resources.channel, spd);
tscm              466 sound/firewire/tascam/tascam-stream.c 		err = amdtp_domain_start(&tscm->domain);
tscm              470 sound/firewire/tascam/tascam-stream.c 		if (!amdtp_stream_wait_callback(&tscm->rx_stream,
tscm              472 sound/firewire/tascam/tascam-stream.c 		    !amdtp_stream_wait_callback(&tscm->tx_stream,
tscm              481 sound/firewire/tascam/tascam-stream.c 	amdtp_domain_stop(&tscm->domain);
tscm              482 sound/firewire/tascam/tascam-stream.c 	finish_session(tscm);
tscm              487 sound/firewire/tascam/tascam-stream.c void snd_tscm_stream_stop_duplex(struct snd_tscm *tscm)
tscm              489 sound/firewire/tascam/tascam-stream.c 	if (tscm->substreams_counter == 0) {
tscm              490 sound/firewire/tascam/tascam-stream.c 		amdtp_domain_stop(&tscm->domain);
tscm              491 sound/firewire/tascam/tascam-stream.c 		finish_session(tscm);
tscm              493 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_free(&tscm->tx_resources);
tscm              494 sound/firewire/tascam/tascam-stream.c 		fw_iso_resources_free(&tscm->rx_resources);
tscm              498 sound/firewire/tascam/tascam-stream.c void snd_tscm_stream_lock_changed(struct snd_tscm *tscm)
tscm              500 sound/firewire/tascam/tascam-stream.c 	tscm->dev_lock_changed = true;
tscm              501 sound/firewire/tascam/tascam-stream.c 	wake_up(&tscm->hwdep_wait);
tscm              504 sound/firewire/tascam/tascam-stream.c int snd_tscm_stream_lock_try(struct snd_tscm *tscm)
tscm              508 sound/firewire/tascam/tascam-stream.c 	spin_lock_irq(&tscm->lock);
tscm              511 sound/firewire/tascam/tascam-stream.c 	if (tscm->dev_lock_count < 0) {
tscm              517 sound/firewire/tascam/tascam-stream.c 	if (tscm->dev_lock_count++ == 0)
tscm              518 sound/firewire/tascam/tascam-stream.c 		snd_tscm_stream_lock_changed(tscm);
tscm              521 sound/firewire/tascam/tascam-stream.c 	spin_unlock_irq(&tscm->lock);
tscm              525 sound/firewire/tascam/tascam-stream.c void snd_tscm_stream_lock_release(struct snd_tscm *tscm)
tscm              527 sound/firewire/tascam/tascam-stream.c 	spin_lock_irq(&tscm->lock);
tscm              529 sound/firewire/tascam/tascam-stream.c 	if (WARN_ON(tscm->dev_lock_count <= 0))
tscm              531 sound/firewire/tascam/tascam-stream.c 	if (--tscm->dev_lock_count == 0)
tscm              532 sound/firewire/tascam/tascam-stream.c 		snd_tscm_stream_lock_changed(tscm);
tscm              534 sound/firewire/tascam/tascam-stream.c 	spin_unlock_irq(&tscm->lock);
tscm              250 sound/firewire/tascam/tascam-transaction.c 	struct snd_tscm *tscm = callback_data;
tscm              259 sound/firewire/tascam/tascam-transaction.c 	if (offset != tscm->async_handler.offset)
tscm              268 sound/firewire/tascam/tascam-transaction.c 		if (port >= tscm->spec->midi_capture_ports)
tscm              284 sound/firewire/tascam/tascam-transaction.c 		substream = READ_ONCE(tscm->tx_midi_substreams[port]);
tscm              292 sound/firewire/tascam/tascam-transaction.c int snd_tscm_transaction_register(struct snd_tscm *tscm)
tscm              306 sound/firewire/tascam/tascam-transaction.c 	tscm->async_handler.length = 8 * 8;
tscm              307 sound/firewire/tascam/tascam-transaction.c 	tscm->async_handler.address_callback = handle_midi_tx;
tscm              308 sound/firewire/tascam/tascam-transaction.c 	tscm->async_handler.callback_data = tscm;
tscm              310 sound/firewire/tascam/tascam-transaction.c 	err = fw_core_add_address_handler(&tscm->async_handler,
tscm              315 sound/firewire/tascam/tascam-transaction.c 	err = snd_tscm_transaction_reregister(tscm);
tscm              320 sound/firewire/tascam/tascam-transaction.c 		tscm->out_ports[i].parent = fw_parent_device(tscm->unit);
tscm              321 sound/firewire/tascam/tascam-transaction.c 		tscm->out_ports[i].next_ktime = 0;
tscm              322 sound/firewire/tascam/tascam-transaction.c 		INIT_WORK(&tscm->out_ports[i].work, midi_port_work);
tscm              327 sound/firewire/tascam/tascam-transaction.c 	fw_core_remove_address_handler(&tscm->async_handler);
tscm              328 sound/firewire/tascam/tascam-transaction.c 	tscm->async_handler.callback_data = NULL;
tscm              333 sound/firewire/tascam/tascam-transaction.c int snd_tscm_transaction_reregister(struct snd_tscm *tscm)
tscm              335 sound/firewire/tascam/tascam-transaction.c 	struct fw_device *device = fw_parent_device(tscm->unit);
tscm              341 sound/firewire/tascam/tascam-transaction.c 			  (tscm->async_handler.offset >> 32));
tscm              342 sound/firewire/tascam/tascam-transaction.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              348 sound/firewire/tascam/tascam-transaction.c 	reg = cpu_to_be32(tscm->async_handler.offset);
tscm              349 sound/firewire/tascam/tascam-transaction.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              357 sound/firewire/tascam/tascam-transaction.c 	err = snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              365 sound/firewire/tascam/tascam-transaction.c 	return snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              370 sound/firewire/tascam/tascam-transaction.c void snd_tscm_transaction_unregister(struct snd_tscm *tscm)
tscm              374 sound/firewire/tascam/tascam-transaction.c 	if (tscm->async_handler.callback_data == NULL)
tscm              379 sound/firewire/tascam/tascam-transaction.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              385 sound/firewire/tascam/tascam-transaction.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              390 sound/firewire/tascam/tascam-transaction.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              393 sound/firewire/tascam/tascam-transaction.c 	snd_fw_transaction(tscm->unit, TCODE_WRITE_QUADLET_REQUEST,
tscm              397 sound/firewire/tascam/tascam-transaction.c 	fw_core_remove_address_handler(&tscm->async_handler);
tscm              398 sound/firewire/tascam/tascam-transaction.c 	tscm->async_handler.callback_data = NULL;
tscm               47 sound/firewire/tascam/tascam.c static int identify_model(struct snd_tscm *tscm)
tscm               49 sound/firewire/tascam/tascam.c 	struct fw_device *fw_dev = fw_parent_device(tscm->unit);
tscm               56 sound/firewire/tascam/tascam.c 		dev_err(&tscm->unit->device,
tscm               72 sound/firewire/tascam/tascam.c 			tscm->spec = &model_specs[i];
tscm               76 sound/firewire/tascam/tascam.c 	if (tscm->spec == NULL)
tscm               79 sound/firewire/tascam/tascam.c 	strcpy(tscm->card->driver, "FW-TASCAM");
tscm               80 sound/firewire/tascam/tascam.c 	strcpy(tscm->card->shortname, model);
tscm               81 sound/firewire/tascam/tascam.c 	strcpy(tscm->card->mixername, model);
tscm               82 sound/firewire/tascam/tascam.c 	snprintf(tscm->card->longname, sizeof(tscm->card->longname),
tscm               85 sound/firewire/tascam/tascam.c 		 dev_name(&tscm->unit->device), 100 << fw_dev->max_speed);
tscm               92 sound/firewire/tascam/tascam.c 	struct snd_tscm *tscm = card->private_data;
tscm               94 sound/firewire/tascam/tascam.c 	snd_tscm_transaction_unregister(tscm);
tscm               95 sound/firewire/tascam/tascam.c 	snd_tscm_stream_destroy_duplex(tscm);
tscm              100 sound/firewire/tascam/tascam.c 	struct snd_tscm *tscm = container_of(work, struct snd_tscm, dwork.work);
tscm              103 sound/firewire/tascam/tascam.c 	err = snd_card_new(&tscm->unit->device, -1, NULL, THIS_MODULE, 0,
tscm              104 sound/firewire/tascam/tascam.c 			   &tscm->card);
tscm              107 sound/firewire/tascam/tascam.c 	tscm->card->private_free = tscm_card_free;
tscm              108 sound/firewire/tascam/tascam.c 	tscm->card->private_data = tscm;
tscm              110 sound/firewire/tascam/tascam.c 	err = identify_model(tscm);
tscm              114 sound/firewire/tascam/tascam.c 	err = snd_tscm_transaction_register(tscm);
tscm              118 sound/firewire/tascam/tascam.c 	err = snd_tscm_stream_init_duplex(tscm);
tscm              122 sound/firewire/tascam/tascam.c 	snd_tscm_proc_init(tscm);
tscm              124 sound/firewire/tascam/tascam.c 	err = snd_tscm_create_pcm_devices(tscm);
tscm              128 sound/firewire/tascam/tascam.c 	err = snd_tscm_create_midi_devices(tscm);
tscm              132 sound/firewire/tascam/tascam.c 	err = snd_tscm_create_hwdep_device(tscm);
tscm              136 sound/firewire/tascam/tascam.c 	err = snd_card_register(tscm->card);
tscm              140 sound/firewire/tascam/tascam.c 	tscm->registered = true;
tscm              144 sound/firewire/tascam/tascam.c 	snd_card_free(tscm->card);
tscm              145 sound/firewire/tascam/tascam.c 	dev_info(&tscm->unit->device,
tscm              152 sound/firewire/tascam/tascam.c 	struct snd_tscm *tscm;
tscm              155 sound/firewire/tascam/tascam.c 	tscm = devm_kzalloc(&unit->device, sizeof(struct snd_tscm), GFP_KERNEL);
tscm              156 sound/firewire/tascam/tascam.c 	if (!tscm)
tscm              158 sound/firewire/tascam/tascam.c 	tscm->unit = fw_unit_get(unit);
tscm              159 sound/firewire/tascam/tascam.c 	dev_set_drvdata(&unit->device, tscm);
tscm              161 sound/firewire/tascam/tascam.c 	mutex_init(&tscm->mutex);
tscm              162 sound/firewire/tascam/tascam.c 	spin_lock_init(&tscm->lock);
tscm              163 sound/firewire/tascam/tascam.c 	init_waitqueue_head(&tscm->hwdep_wait);
tscm              166 sound/firewire/tascam/tascam.c 	INIT_DEFERRABLE_WORK(&tscm->dwork, do_registration);
tscm              167 sound/firewire/tascam/tascam.c 	snd_fw_schedule_registration(unit, &tscm->dwork);
tscm              174 sound/firewire/tascam/tascam.c 	struct snd_tscm *tscm = dev_get_drvdata(&unit->device);
tscm              177 sound/firewire/tascam/tascam.c 	if (!tscm->registered)
tscm              178 sound/firewire/tascam/tascam.c 		snd_fw_schedule_registration(unit, &tscm->dwork);
tscm              180 sound/firewire/tascam/tascam.c 	snd_tscm_transaction_reregister(tscm);
tscm              186 sound/firewire/tascam/tascam.c 	if (tscm->registered) {
tscm              187 sound/firewire/tascam/tascam.c 		mutex_lock(&tscm->mutex);
tscm              188 sound/firewire/tascam/tascam.c 		snd_tscm_stream_update_duplex(tscm);
tscm              189 sound/firewire/tascam/tascam.c 		mutex_unlock(&tscm->mutex);
tscm              195 sound/firewire/tascam/tascam.c 	struct snd_tscm *tscm = dev_get_drvdata(&unit->device);
tscm              202 sound/firewire/tascam/tascam.c 	cancel_delayed_work_sync(&tscm->dwork);
tscm              204 sound/firewire/tascam/tascam.c 	if (tscm->registered) {
tscm              206 sound/firewire/tascam/tascam.c 		snd_card_free(tscm->card);
tscm              209 sound/firewire/tascam/tascam.c 	mutex_destroy(&tscm->mutex);
tscm              210 sound/firewire/tascam/tascam.c 	fw_unit_put(tscm->unit);
tscm              165 sound/firewire/tascam/tascam.h int snd_tscm_stream_get_rate(struct snd_tscm *tscm, unsigned int *rate);
tscm              166 sound/firewire/tascam/tascam.h int snd_tscm_stream_get_clock(struct snd_tscm *tscm,
tscm              168 sound/firewire/tascam/tascam.h int snd_tscm_stream_init_duplex(struct snd_tscm *tscm);
tscm              169 sound/firewire/tascam/tascam.h void snd_tscm_stream_update_duplex(struct snd_tscm *tscm);
tscm              170 sound/firewire/tascam/tascam.h void snd_tscm_stream_destroy_duplex(struct snd_tscm *tscm);
tscm              171 sound/firewire/tascam/tascam.h int snd_tscm_stream_reserve_duplex(struct snd_tscm *tscm, unsigned int rate);
tscm              172 sound/firewire/tascam/tascam.h int snd_tscm_stream_start_duplex(struct snd_tscm *tscm, unsigned int rate);
tscm              173 sound/firewire/tascam/tascam.h void snd_tscm_stream_stop_duplex(struct snd_tscm *tscm);
tscm              175 sound/firewire/tascam/tascam.h void snd_tscm_stream_lock_changed(struct snd_tscm *tscm);
tscm              176 sound/firewire/tascam/tascam.h int snd_tscm_stream_lock_try(struct snd_tscm *tscm);
tscm              177 sound/firewire/tascam/tascam.h void snd_tscm_stream_lock_release(struct snd_tscm *tscm);
tscm              199 sound/firewire/tascam/tascam.h int snd_tscm_transaction_register(struct snd_tscm *tscm);
tscm              200 sound/firewire/tascam/tascam.h int snd_tscm_transaction_reregister(struct snd_tscm *tscm);
tscm              201 sound/firewire/tascam/tascam.h void snd_tscm_transaction_unregister(struct snd_tscm *tscm);
tscm              203 sound/firewire/tascam/tascam.h void snd_tscm_proc_init(struct snd_tscm *tscm);
tscm              205 sound/firewire/tascam/tascam.h int snd_tscm_create_pcm_devices(struct snd_tscm *tscm);
tscm              207 sound/firewire/tascam/tascam.h int snd_tscm_create_midi_devices(struct snd_tscm *tscm);
tscm              209 sound/firewire/tascam/tascam.h int snd_tscm_create_hwdep_device(struct snd_tscm *tscm);