motu 84 sound/firewire/motu/amdtp-motu-trace.h #define TRACE_INCLUDE_FILE amdtp-motu-trace motu 22 sound/firewire/motu/motu-hwdep.c struct snd_motu *motu = hwdep->private_data; motu 26 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 28 sound/firewire/motu/motu-hwdep.c while (!motu->dev_lock_changed && motu->msg == 0) { motu 29 sound/firewire/motu/motu-hwdep.c prepare_to_wait(&motu->hwdep_wait, &wait, TASK_INTERRUPTIBLE); motu 30 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 32 sound/firewire/motu/motu-hwdep.c finish_wait(&motu->hwdep_wait, &wait); motu 35 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 39 sound/firewire/motu/motu-hwdep.c if (motu->dev_lock_changed) { motu 41 sound/firewire/motu/motu-hwdep.c event.lock_status.status = (motu->dev_lock_count > 0); motu 42 sound/firewire/motu/motu-hwdep.c motu->dev_lock_changed = false; motu 47 sound/firewire/motu/motu-hwdep.c event.motu_notification.message = motu->msg; motu 48 sound/firewire/motu/motu-hwdep.c motu->msg = 0; motu 53 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 64 sound/firewire/motu/motu-hwdep.c struct snd_motu *motu = hwdep->private_data; motu 67 sound/firewire/motu/motu-hwdep.c poll_wait(file, &motu->hwdep_wait, wait); motu 69 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 70 sound/firewire/motu/motu-hwdep.c if (motu->dev_lock_changed || motu->msg) motu 74 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 79 sound/firewire/motu/motu-hwdep.c static int hwdep_get_info(struct snd_motu *motu, void __user *arg) motu 81 sound/firewire/motu/motu-hwdep.c struct fw_device *dev = fw_parent_device(motu->unit); motu 98 sound/firewire/motu/motu-hwdep.c static int hwdep_lock(struct snd_motu *motu) motu 102 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 104 sound/firewire/motu/motu-hwdep.c if (motu->dev_lock_count == 0) { motu 105 sound/firewire/motu/motu-hwdep.c motu->dev_lock_count = -1; motu 111 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 116 sound/firewire/motu/motu-hwdep.c static int hwdep_unlock(struct snd_motu *motu) motu 120 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 122 sound/firewire/motu/motu-hwdep.c if (motu->dev_lock_count == -1) { motu 123 sound/firewire/motu/motu-hwdep.c motu->dev_lock_count = 0; motu 129 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 136 sound/firewire/motu/motu-hwdep.c struct snd_motu *motu = hwdep->private_data; motu 138 sound/firewire/motu/motu-hwdep.c spin_lock_irq(&motu->lock); motu 139 sound/firewire/motu/motu-hwdep.c if (motu->dev_lock_count == -1) motu 140 sound/firewire/motu/motu-hwdep.c motu->dev_lock_count = 0; motu 141 sound/firewire/motu/motu-hwdep.c spin_unlock_irq(&motu->lock); motu 149 sound/firewire/motu/motu-hwdep.c struct snd_motu *motu = hwdep->private_data; motu 153 sound/firewire/motu/motu-hwdep.c return hwdep_get_info(motu, (void __user *)arg); motu 155 sound/firewire/motu/motu-hwdep.c return hwdep_lock(motu); motu 157 sound/firewire/motu/motu-hwdep.c return hwdep_unlock(motu); motu 174 sound/firewire/motu/motu-hwdep.c int snd_motu_create_hwdep_device(struct snd_motu *motu) motu 186 sound/firewire/motu/motu-hwdep.c err = snd_hwdep_new(motu->card, motu->card->driver, 0, &hwdep); motu 193 sound/firewire/motu/motu-hwdep.c hwdep->private_data = motu; motu 11 sound/firewire/motu/motu-midi.c struct snd_motu *motu = substream->rmidi->private_data; motu 14 sound/firewire/motu/motu-midi.c err = snd_motu_stream_lock_try(motu); motu 18 sound/firewire/motu/motu-midi.c mutex_lock(&motu->mutex); motu 20 sound/firewire/motu/motu-midi.c err = snd_motu_stream_reserve_duplex(motu, 0); motu 22 sound/firewire/motu/motu-midi.c ++motu->substreams_counter; motu 23 sound/firewire/motu/motu-midi.c err = snd_motu_stream_start_duplex(motu); motu 25 sound/firewire/motu/motu-midi.c --motu->substreams_counter; motu 28 sound/firewire/motu/motu-midi.c mutex_unlock(&motu->mutex); motu 31 sound/firewire/motu/motu-midi.c snd_motu_stream_lock_release(motu); motu 38 sound/firewire/motu/motu-midi.c struct snd_motu *motu = substream->rmidi->private_data; motu 40 sound/firewire/motu/motu-midi.c mutex_lock(&motu->mutex); motu 42 sound/firewire/motu/motu-midi.c --motu->substreams_counter; motu 43 sound/firewire/motu/motu-midi.c snd_motu_stream_stop_duplex(motu); motu 45 sound/firewire/motu/motu-midi.c mutex_unlock(&motu->mutex); motu 47 sound/firewire/motu/motu-midi.c snd_motu_stream_lock_release(motu); motu 53 sound/firewire/motu/motu-midi.c struct snd_motu *motu = substrm->rmidi->private_data; motu 56 sound/firewire/motu/motu-midi.c spin_lock_irqsave(&motu->lock, flags); motu 59 sound/firewire/motu/motu-midi.c amdtp_motu_midi_trigger(&motu->tx_stream, substrm->number, motu 62 sound/firewire/motu/motu-midi.c amdtp_motu_midi_trigger(&motu->tx_stream, substrm->number, motu 65 sound/firewire/motu/motu-midi.c spin_unlock_irqrestore(&motu->lock, flags); motu 70 sound/firewire/motu/motu-midi.c struct snd_motu *motu = substrm->rmidi->private_data; motu 73 sound/firewire/motu/motu-midi.c spin_lock_irqsave(&motu->lock, flags); motu 76 sound/firewire/motu/motu-midi.c amdtp_motu_midi_trigger(&motu->rx_stream, substrm->number, motu 79 sound/firewire/motu/motu-midi.c amdtp_motu_midi_trigger(&motu->rx_stream, substrm->number, motu 82 sound/firewire/motu/motu-midi.c spin_unlock_irqrestore(&motu->lock, flags); motu 85 sound/firewire/motu/motu-midi.c static void set_midi_substream_names(struct snd_motu *motu, motu 92 sound/firewire/motu/motu-midi.c "%s MIDI %d", motu->card->shortname, subs->number + 1); motu 96 sound/firewire/motu/motu-midi.c int snd_motu_create_midi_devices(struct snd_motu *motu) motu 113 sound/firewire/motu/motu-midi.c err = snd_rawmidi_new(motu->card, motu->card->driver, 0, 1, 1, &rmidi); motu 118 sound/firewire/motu/motu-midi.c "%s MIDI", motu->card->shortname); motu 119 sound/firewire/motu/motu-midi.c rmidi->private_data = motu; motu 128 sound/firewire/motu/motu-midi.c set_midi_substream_names(motu, str); motu 133 sound/firewire/motu/motu-midi.c set_midi_substream_names(motu, str); motu 71 sound/firewire/motu/motu-pcm.c static void limit_channels_and_rates(struct snd_motu *motu, motu 98 sound/firewire/motu/motu-pcm.c static int init_hw_info(struct snd_motu *motu, motu 109 sound/firewire/motu/motu-pcm.c stream = &motu->tx_stream; motu 110 sound/firewire/motu/motu-pcm.c formats = &motu->tx_packet_formats; motu 113 sound/firewire/motu/motu-pcm.c stream = &motu->rx_stream; motu 114 sound/firewire/motu/motu-pcm.c formats = &motu->rx_packet_formats; motu 117 sound/firewire/motu/motu-pcm.c limit_channels_and_rates(motu, runtime, formats); motu 135 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 136 sound/firewire/motu/motu-pcm.c const struct snd_motu_protocol *const protocol = motu->spec->protocol; motu 141 sound/firewire/motu/motu-pcm.c err = snd_motu_stream_lock_try(motu); motu 145 sound/firewire/motu/motu-pcm.c mutex_lock(&motu->mutex); motu 147 sound/firewire/motu/motu-pcm.c err = snd_motu_stream_cache_packet_formats(motu); motu 151 sound/firewire/motu/motu-pcm.c err = init_hw_info(motu, substream); motu 159 sound/firewire/motu/motu-pcm.c err = protocol->get_clock_source(motu, &src); motu 163 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_running(&motu->tx_stream) || motu 164 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_running(&motu->rx_stream)) { motu 165 sound/firewire/motu/motu-pcm.c err = protocol->get_clock_rate(motu, &rate); motu 174 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 178 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 179 sound/firewire/motu/motu-pcm.c snd_motu_stream_lock_release(motu); motu 185 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 187 sound/firewire/motu/motu-pcm.c snd_motu_stream_lock_release(motu); motu 195 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 206 sound/firewire/motu/motu-pcm.c mutex_lock(&motu->mutex); motu 207 sound/firewire/motu/motu-pcm.c err = snd_motu_stream_reserve_duplex(motu, rate); motu 209 sound/firewire/motu/motu-pcm.c ++motu->substreams_counter; motu 210 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 218 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 220 sound/firewire/motu/motu-pcm.c mutex_lock(&motu->mutex); motu 223 sound/firewire/motu/motu-pcm.c --motu->substreams_counter; motu 225 sound/firewire/motu/motu-pcm.c snd_motu_stream_stop_duplex(motu); motu 227 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 234 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 237 sound/firewire/motu/motu-pcm.c mutex_lock(&motu->mutex); motu 238 sound/firewire/motu/motu-pcm.c err = snd_motu_stream_start_duplex(motu); motu 239 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 241 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_prepare(&motu->tx_stream); motu 247 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 250 sound/firewire/motu/motu-pcm.c mutex_lock(&motu->mutex); motu 251 sound/firewire/motu/motu-pcm.c err = snd_motu_stream_start_duplex(motu); motu 252 sound/firewire/motu/motu-pcm.c mutex_unlock(&motu->mutex); motu 254 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_prepare(&motu->rx_stream); motu 261 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 265 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_trigger(&motu->tx_stream, substream); motu 268 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_trigger(&motu->tx_stream, NULL); motu 278 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 282 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_trigger(&motu->rx_stream, substream); motu 285 sound/firewire/motu/motu-pcm.c amdtp_stream_pcm_trigger(&motu->rx_stream, NULL); motu 296 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 298 sound/firewire/motu/motu-pcm.c return amdtp_stream_pcm_pointer(&motu->tx_stream); motu 302 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 304 sound/firewire/motu/motu-pcm.c return amdtp_stream_pcm_pointer(&motu->rx_stream); motu 309 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 311 sound/firewire/motu/motu-pcm.c return amdtp_stream_pcm_ack(&motu->tx_stream); motu 316 sound/firewire/motu/motu-pcm.c struct snd_motu *motu = substream->private_data; motu 318 sound/firewire/motu/motu-pcm.c return amdtp_stream_pcm_ack(&motu->rx_stream); motu 321 sound/firewire/motu/motu-pcm.c int snd_motu_create_pcm_devices(struct snd_motu *motu) motu 350 sound/firewire/motu/motu-pcm.c err = snd_pcm_new(motu->card, motu->card->driver, 0, 1, 1, &pcm); motu 353 sound/firewire/motu/motu-pcm.c pcm->private_data = motu; motu 354 sound/firewire/motu/motu-pcm.c strcpy(pcm->name, motu->card->shortname); motu 28 sound/firewire/motu/motu-proc.c struct snd_motu *motu = entry->private_data; motu 29 sound/firewire/motu/motu-proc.c const struct snd_motu_protocol *const protocol = motu->spec->protocol; motu 33 sound/firewire/motu/motu-proc.c if (protocol->get_clock_rate(motu, &rate) < 0) motu 35 sound/firewire/motu/motu-proc.c if (protocol->get_clock_source(motu, &source) < 0) motu 45 sound/firewire/motu/motu-proc.c struct snd_motu *motu = entry->private_data; motu 46 sound/firewire/motu/motu-proc.c const struct snd_motu_protocol *const protocol = motu->spec->protocol; motu 51 sound/firewire/motu/motu-proc.c if (protocol->cache_packet_formats(motu) < 0) motu 58 sound/firewire/motu/motu-proc.c formats = &motu->tx_packet_formats; motu 71 sound/firewire/motu/motu-proc.c formats = &motu->rx_packet_formats; motu 81 sound/firewire/motu/motu-proc.c static void add_node(struct snd_motu *motu, struct snd_info_entry *root, motu 88 sound/firewire/motu/motu-proc.c entry = snd_info_create_card_entry(motu->card, name, root); motu 90 sound/firewire/motu/motu-proc.c snd_info_set_text_ops(entry, motu, op); motu 93 sound/firewire/motu/motu-proc.c void snd_motu_proc_init(struct snd_motu *motu) motu 101 sound/firewire/motu/motu-proc.c root = snd_info_create_card_entry(motu->card, "firewire", motu 102 sound/firewire/motu/motu-proc.c motu->card->proc_root); motu 107 sound/firewire/motu/motu-proc.c add_node(motu, root, "clock", proc_read_clock); motu 108 sound/firewire/motu/motu-proc.c add_node(motu, root, "format", proc_read_format); motu 29 sound/firewire/motu/motu-protocol-v2.c static int v2_get_clock_rate(struct snd_motu *motu, unsigned int *rate) motu 35 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_CLOCK_STATUS_OFFSET, ®, motu 49 sound/firewire/motu/motu-protocol-v2.c static int v2_set_clock_rate(struct snd_motu *motu, unsigned int rate) motu 63 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_CLOCK_STATUS_OFFSET, ®, motu 72 sound/firewire/motu/motu-protocol-v2.c if (motu->spec == &snd_motu_spec_traveler) { motu 78 sound/firewire/motu/motu-protocol-v2.c return snd_motu_transaction_write(motu, V2_CLOCK_STATUS_OFFSET, ®, motu 82 sound/firewire/motu/motu-protocol-v2.c static int v2_get_clock_source(struct snd_motu *motu, motu 89 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_CLOCK_STATUS_OFFSET, ®, motu 99 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_IN_OUT_CONF_OFFSET, ®, motu 130 sound/firewire/motu/motu-protocol-v2.c static int v2_switch_fetching_mode(struct snd_motu *motu, bool enable) motu 136 sound/firewire/motu/motu-protocol-v2.c if (motu->spec == &snd_motu_spec_traveler || motu 137 sound/firewire/motu/motu-protocol-v2.c motu->spec == &snd_motu_spec_8pre) { motu 138 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_CLOCK_STATUS_OFFSET, motu 144 sound/firewire/motu/motu-protocol-v2.c if (motu->spec == &snd_motu_spec_traveler) { motu 152 sound/firewire/motu/motu-protocol-v2.c } else if (motu->spec == &snd_motu_spec_8pre) { motu 163 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_write(motu, V2_CLOCK_STATUS_OFFSET, motu 252 sound/firewire/motu/motu-protocol-v2.c static int v2_cache_packet_formats(struct snd_motu *motu) motu 258 sound/firewire/motu/motu-protocol-v2.c err = snd_motu_transaction_read(motu, V2_IN_OUT_CONF_OFFSET, ®, motu 264 sound/firewire/motu/motu-protocol-v2.c calculate_fixed_part(&motu->tx_packet_formats, AMDTP_IN_STREAM, motu 265 sound/firewire/motu/motu-protocol-v2.c motu->spec->flags, motu->spec->analog_in_ports); motu 266 sound/firewire/motu/motu-protocol-v2.c calculate_differed_part(&motu->tx_packet_formats, motu->spec->flags, motu 269 sound/firewire/motu/motu-protocol-v2.c calculate_fixed_part(&motu->rx_packet_formats, AMDTP_OUT_STREAM, motu 270 sound/firewire/motu/motu-protocol-v2.c motu->spec->flags, motu->spec->analog_out_ports); motu 271 sound/firewire/motu/motu-protocol-v2.c calculate_differed_part(&motu->rx_packet_formats, motu->spec->flags, motu 274 sound/firewire/motu/motu-protocol-v2.c motu->tx_packet_formats.pcm_byte_offset = 10; motu 275 sound/firewire/motu/motu-protocol-v2.c motu->rx_packet_formats.pcm_byte_offset = 10; motu 27 sound/firewire/motu/motu-protocol-v3.c static int v3_get_clock_rate(struct snd_motu *motu, unsigned int *rate) motu 33 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 48 sound/firewire/motu/motu-protocol-v3.c static int v3_set_clock_rate(struct snd_motu *motu, unsigned int rate) motu 62 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 74 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_write(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 88 sound/firewire/motu/motu-protocol-v3.c static int v3_get_clock_source(struct snd_motu *motu, motu 96 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 110 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_OPT_IFACE_MODE_OFFSET, motu 134 sound/firewire/motu/motu-protocol-v3.c static int v3_switch_fetching_mode(struct snd_motu *motu, bool enable) motu 140 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 152 sound/firewire/motu/motu-protocol-v3.c return snd_motu_transaction_write(motu, V3_CLOCK_STATUS_OFFSET, ®, motu 276 sound/firewire/motu/motu-protocol-v3.c static int v3_cache_packet_formats(struct snd_motu *motu) motu 282 sound/firewire/motu/motu-protocol-v3.c err = snd_motu_transaction_read(motu, V3_OPT_IFACE_MODE_OFFSET, ®, motu 288 sound/firewire/motu/motu-protocol-v3.c calculate_fixed_part(&motu->tx_packet_formats, AMDTP_IN_STREAM, motu 289 sound/firewire/motu/motu-protocol-v3.c motu->spec->flags, motu->spec->analog_in_ports); motu 290 sound/firewire/motu/motu-protocol-v3.c calculate_differed_part(&motu->tx_packet_formats, motu 291 sound/firewire/motu/motu-protocol-v3.c motu->spec->flags, data, motu 295 sound/firewire/motu/motu-protocol-v3.c calculate_fixed_part(&motu->rx_packet_formats, AMDTP_OUT_STREAM, motu 296 sound/firewire/motu/motu-protocol-v3.c motu->spec->flags, motu->spec->analog_out_ports); motu 297 sound/firewire/motu/motu-protocol-v3.c calculate_differed_part(&motu->rx_packet_formats, motu 298 sound/firewire/motu/motu-protocol-v3.c motu->spec->flags, data, motu 302 sound/firewire/motu/motu-protocol-v3.c motu->tx_packet_formats.pcm_byte_offset = 10; motu 303 sound/firewire/motu/motu-protocol-v3.c motu->rx_packet_formats.pcm_byte_offset = 10; motu 28 sound/firewire/motu/motu-stream.c static int keep_resources(struct snd_motu *motu, unsigned int rate, motu 36 sound/firewire/motu/motu-stream.c if (stream == &motu->rx_stream) { motu 37 sound/firewire/motu/motu-stream.c resources = &motu->rx_resources; motu 38 sound/firewire/motu/motu-stream.c packet_format = &motu->rx_packet_formats; motu 40 sound/firewire/motu/motu-stream.c if ((motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_2ND_Q) || motu 41 sound/firewire/motu/motu-stream.c (motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_3RD_Q)) motu 44 sound/firewire/motu/motu-stream.c resources = &motu->tx_resources; motu 45 sound/firewire/motu/motu-stream.c packet_format = &motu->tx_packet_formats; motu 47 sound/firewire/motu/motu-stream.c if ((motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_2ND_Q) || motu 48 sound/firewire/motu/motu-stream.c (motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_3RD_Q)) motu 59 sound/firewire/motu/motu-stream.c fw_parent_device(motu->unit)->max_speed); motu 62 sound/firewire/motu/motu-stream.c static int begin_session(struct snd_motu *motu) motu 69 sound/firewire/motu/motu-stream.c err = snd_motu_transaction_read(motu, ISOC_COMM_CONTROL_OFFSET, ®, motu 76 sound/firewire/motu/motu-stream.c (motu->rx_resources.channel << RX_ISOC_COMM_CHANNEL_SHIFT) | motu 78 sound/firewire/motu/motu-stream.c (motu->tx_resources.channel << TX_ISOC_COMM_CHANNEL_SHIFT); motu 81 sound/firewire/motu/motu-stream.c return snd_motu_transaction_write(motu, ISOC_COMM_CONTROL_OFFSET, ®, motu 85 sound/firewire/motu/motu-stream.c static void finish_session(struct snd_motu *motu) motu 91 sound/firewire/motu/motu-stream.c err = motu->spec->protocol->switch_fetching_mode(motu, false); motu 95 sound/firewire/motu/motu-stream.c err = snd_motu_transaction_read(motu, ISOC_COMM_CONTROL_OFFSET, ®, motu 105 sound/firewire/motu/motu-stream.c snd_motu_transaction_write(motu, ISOC_COMM_CONTROL_OFFSET, ®, motu 109 sound/firewire/motu/motu-stream.c int snd_motu_stream_cache_packet_formats(struct snd_motu *motu) motu 113 sound/firewire/motu/motu-stream.c err = motu->spec->protocol->cache_packet_formats(motu); motu 117 sound/firewire/motu/motu-stream.c if (motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_2ND_Q) { motu 118 sound/firewire/motu/motu-stream.c motu->tx_packet_formats.midi_flag_offset = 4; motu 119 sound/firewire/motu/motu-stream.c motu->tx_packet_formats.midi_byte_offset = 6; motu 120 sound/firewire/motu/motu-stream.c } else if (motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_3RD_Q) { motu 121 sound/firewire/motu/motu-stream.c motu->tx_packet_formats.midi_flag_offset = 8; motu 122 sound/firewire/motu/motu-stream.c motu->tx_packet_formats.midi_byte_offset = 7; motu 125 sound/firewire/motu/motu-stream.c if (motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_2ND_Q) { motu 126 sound/firewire/motu/motu-stream.c motu->rx_packet_formats.midi_flag_offset = 4; motu 127 sound/firewire/motu/motu-stream.c motu->rx_packet_formats.midi_byte_offset = 6; motu 128 sound/firewire/motu/motu-stream.c } else if (motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_3RD_Q) { motu 129 sound/firewire/motu/motu-stream.c motu->rx_packet_formats.midi_flag_offset = 8; motu 130 sound/firewire/motu/motu-stream.c motu->rx_packet_formats.midi_byte_offset = 7; motu 136 sound/firewire/motu/motu-stream.c int snd_motu_stream_reserve_duplex(struct snd_motu *motu, unsigned int rate) motu 141 sound/firewire/motu/motu-stream.c err = motu->spec->protocol->get_clock_rate(motu, &curr_rate); motu 147 sound/firewire/motu/motu-stream.c if (motu->substreams_counter == 0 || curr_rate != rate) { motu 148 sound/firewire/motu/motu-stream.c amdtp_domain_stop(&motu->domain); motu 149 sound/firewire/motu/motu-stream.c finish_session(motu); motu 151 sound/firewire/motu/motu-stream.c fw_iso_resources_free(&motu->tx_resources); motu 152 sound/firewire/motu/motu-stream.c fw_iso_resources_free(&motu->rx_resources); motu 154 sound/firewire/motu/motu-stream.c err = motu->spec->protocol->set_clock_rate(motu, rate); motu 156 sound/firewire/motu/motu-stream.c dev_err(&motu->unit->device, motu 161 sound/firewire/motu/motu-stream.c err = snd_motu_stream_cache_packet_formats(motu); motu 165 sound/firewire/motu/motu-stream.c err = keep_resources(motu, rate, &motu->tx_stream); motu 169 sound/firewire/motu/motu-stream.c err = keep_resources(motu, rate, &motu->rx_stream); motu 171 sound/firewire/motu/motu-stream.c fw_iso_resources_free(&motu->tx_resources); motu 179 sound/firewire/motu/motu-stream.c static int ensure_packet_formats(struct snd_motu *motu) motu 185 sound/firewire/motu/motu-stream.c err = snd_motu_transaction_read(motu, PACKET_FORMAT_OFFSET, ®, motu 194 sound/firewire/motu/motu-stream.c if (motu->tx_packet_formats.differed_part_pcm_chunks[0] == 0) motu 196 sound/firewire/motu/motu-stream.c if (motu->rx_packet_formats.differed_part_pcm_chunks[0] == 0) motu 198 sound/firewire/motu/motu-stream.c data |= fw_parent_device(motu->unit)->max_speed; motu 201 sound/firewire/motu/motu-stream.c return snd_motu_transaction_write(motu, PACKET_FORMAT_OFFSET, ®, motu 205 sound/firewire/motu/motu-stream.c int snd_motu_stream_start_duplex(struct snd_motu *motu) motu 207 sound/firewire/motu/motu-stream.c unsigned int generation = motu->rx_resources.generation; motu 210 sound/firewire/motu/motu-stream.c if (motu->substreams_counter == 0) motu 213 sound/firewire/motu/motu-stream.c if (amdtp_streaming_error(&motu->rx_stream) || motu 214 sound/firewire/motu/motu-stream.c amdtp_streaming_error(&motu->tx_stream)) { motu 215 sound/firewire/motu/motu-stream.c amdtp_domain_stop(&motu->domain); motu 216 sound/firewire/motu/motu-stream.c finish_session(motu); motu 219 sound/firewire/motu/motu-stream.c if (generation != fw_parent_device(motu->unit)->card->generation) { motu 220 sound/firewire/motu/motu-stream.c err = fw_iso_resources_update(&motu->rx_resources); motu 224 sound/firewire/motu/motu-stream.c err = fw_iso_resources_update(&motu->tx_resources); motu 229 sound/firewire/motu/motu-stream.c if (!amdtp_stream_running(&motu->rx_stream)) { motu 230 sound/firewire/motu/motu-stream.c int spd = fw_parent_device(motu->unit)->max_speed; motu 232 sound/firewire/motu/motu-stream.c err = ensure_packet_formats(motu); motu 236 sound/firewire/motu/motu-stream.c err = begin_session(motu); motu 238 sound/firewire/motu/motu-stream.c dev_err(&motu->unit->device, motu 243 sound/firewire/motu/motu-stream.c err = amdtp_domain_add_stream(&motu->domain, &motu->tx_stream, motu 244 sound/firewire/motu/motu-stream.c motu->tx_resources.channel, spd); motu 248 sound/firewire/motu/motu-stream.c err = amdtp_domain_add_stream(&motu->domain, &motu->rx_stream, motu 249 sound/firewire/motu/motu-stream.c motu->rx_resources.channel, spd); motu 253 sound/firewire/motu/motu-stream.c err = amdtp_domain_start(&motu->domain); motu 257 sound/firewire/motu/motu-stream.c if (!amdtp_stream_wait_callback(&motu->tx_stream, motu 259 sound/firewire/motu/motu-stream.c !amdtp_stream_wait_callback(&motu->rx_stream, motu 265 sound/firewire/motu/motu-stream.c err = motu->spec->protocol->switch_fetching_mode(motu, true); motu 267 sound/firewire/motu/motu-stream.c dev_err(&motu->unit->device, motu 276 sound/firewire/motu/motu-stream.c amdtp_domain_stop(&motu->domain); motu 277 sound/firewire/motu/motu-stream.c finish_session(motu); motu 281 sound/firewire/motu/motu-stream.c void snd_motu_stream_stop_duplex(struct snd_motu *motu) motu 283 sound/firewire/motu/motu-stream.c if (motu->substreams_counter == 0) { motu 284 sound/firewire/motu/motu-stream.c amdtp_domain_stop(&motu->domain); motu 285 sound/firewire/motu/motu-stream.c finish_session(motu); motu 287 sound/firewire/motu/motu-stream.c fw_iso_resources_free(&motu->tx_resources); motu 288 sound/firewire/motu/motu-stream.c fw_iso_resources_free(&motu->rx_resources); motu 292 sound/firewire/motu/motu-stream.c static int init_stream(struct snd_motu *motu, struct amdtp_stream *s) motu 298 sound/firewire/motu/motu-stream.c if (s == &motu->tx_stream) { motu 299 sound/firewire/motu/motu-stream.c resources = &motu->tx_resources; motu 302 sound/firewire/motu/motu-stream.c resources = &motu->rx_resources; motu 306 sound/firewire/motu/motu-stream.c err = fw_iso_resources_init(resources, motu->unit); motu 310 sound/firewire/motu/motu-stream.c err = amdtp_motu_init(s, motu->unit, dir, motu->spec->protocol); motu 317 sound/firewire/motu/motu-stream.c static void destroy_stream(struct snd_motu *motu, struct amdtp_stream *s) motu 321 sound/firewire/motu/motu-stream.c if (s == &motu->tx_stream) motu 322 sound/firewire/motu/motu-stream.c fw_iso_resources_destroy(&motu->tx_resources); motu 324 sound/firewire/motu/motu-stream.c fw_iso_resources_destroy(&motu->rx_resources); motu 327 sound/firewire/motu/motu-stream.c int snd_motu_stream_init_duplex(struct snd_motu *motu) motu 331 sound/firewire/motu/motu-stream.c err = init_stream(motu, &motu->tx_stream); motu 335 sound/firewire/motu/motu-stream.c err = init_stream(motu, &motu->rx_stream); motu 337 sound/firewire/motu/motu-stream.c destroy_stream(motu, &motu->tx_stream); motu 341 sound/firewire/motu/motu-stream.c err = amdtp_domain_init(&motu->domain); motu 343 sound/firewire/motu/motu-stream.c destroy_stream(motu, &motu->tx_stream); motu 344 sound/firewire/motu/motu-stream.c destroy_stream(motu, &motu->rx_stream); motu 352 sound/firewire/motu/motu-stream.c void snd_motu_stream_destroy_duplex(struct snd_motu *motu) motu 354 sound/firewire/motu/motu-stream.c amdtp_domain_destroy(&motu->domain); motu 356 sound/firewire/motu/motu-stream.c destroy_stream(motu, &motu->rx_stream); motu 357 sound/firewire/motu/motu-stream.c destroy_stream(motu, &motu->tx_stream); motu 359 sound/firewire/motu/motu-stream.c motu->substreams_counter = 0; motu 362 sound/firewire/motu/motu-stream.c static void motu_lock_changed(struct snd_motu *motu) motu 364 sound/firewire/motu/motu-stream.c motu->dev_lock_changed = true; motu 365 sound/firewire/motu/motu-stream.c wake_up(&motu->hwdep_wait); motu 368 sound/firewire/motu/motu-stream.c int snd_motu_stream_lock_try(struct snd_motu *motu) motu 372 sound/firewire/motu/motu-stream.c spin_lock_irq(&motu->lock); motu 374 sound/firewire/motu/motu-stream.c if (motu->dev_lock_count < 0) { motu 379 sound/firewire/motu/motu-stream.c if (motu->dev_lock_count++ == 0) motu 380 sound/firewire/motu/motu-stream.c motu_lock_changed(motu); motu 383 sound/firewire/motu/motu-stream.c spin_unlock_irq(&motu->lock); motu 387 sound/firewire/motu/motu-stream.c void snd_motu_stream_lock_release(struct snd_motu *motu) motu 389 sound/firewire/motu/motu-stream.c spin_lock_irq(&motu->lock); motu 391 sound/firewire/motu/motu-stream.c if (WARN_ON(motu->dev_lock_count <= 0)) motu 394 sound/firewire/motu/motu-stream.c if (--motu->dev_lock_count == 0) motu 395 sound/firewire/motu/motu-stream.c motu_lock_changed(motu); motu 397 sound/firewire/motu/motu-stream.c spin_unlock_irq(&motu->lock); motu 15 sound/firewire/motu/motu-transaction.c int snd_motu_transaction_read(struct snd_motu *motu, u32 offset, __be32 *reg, motu 27 sound/firewire/motu/motu-transaction.c return snd_fw_transaction(motu->unit, tcode, motu 31 sound/firewire/motu/motu-transaction.c int snd_motu_transaction_write(struct snd_motu *motu, u32 offset, __be32 *reg, motu 43 sound/firewire/motu/motu-transaction.c return snd_fw_transaction(motu->unit, tcode, motu 52 sound/firewire/motu/motu-transaction.c struct snd_motu *motu = callback_data; motu 61 sound/firewire/motu/motu-transaction.c if (offset != motu->async_handler.offset || length != 4) { motu 66 sound/firewire/motu/motu-transaction.c spin_lock_irqsave(&motu->lock, flags); motu 67 sound/firewire/motu/motu-transaction.c motu->msg = be32_to_cpu(*buf); motu 68 sound/firewire/motu/motu-transaction.c spin_unlock_irqrestore(&motu->lock, flags); motu 72 sound/firewire/motu/motu-transaction.c wake_up(&motu->hwdep_wait); motu 75 sound/firewire/motu/motu-transaction.c int snd_motu_transaction_reregister(struct snd_motu *motu) motu 77 sound/firewire/motu/motu-transaction.c struct fw_device *device = fw_parent_device(motu->unit); motu 81 sound/firewire/motu/motu-transaction.c if (motu->async_handler.callback_data == NULL) motu 86 sound/firewire/motu/motu-transaction.c (motu->async_handler.offset >> 32)); motu 87 sound/firewire/motu/motu-transaction.c err = snd_motu_transaction_write(motu, ASYNC_ADDR_HI, &data, motu 92 sound/firewire/motu/motu-transaction.c data = cpu_to_be32(motu->async_handler.offset); motu 93 sound/firewire/motu/motu-transaction.c return snd_motu_transaction_write(motu, ASYNC_ADDR_LO, &data, motu 97 sound/firewire/motu/motu-transaction.c int snd_motu_transaction_register(struct snd_motu *motu) motu 106 sound/firewire/motu/motu-transaction.c motu->async_handler.length = 4; motu 107 sound/firewire/motu/motu-transaction.c motu->async_handler.address_callback = handle_message; motu 108 sound/firewire/motu/motu-transaction.c motu->async_handler.callback_data = motu; motu 110 sound/firewire/motu/motu-transaction.c err = fw_core_add_address_handler(&motu->async_handler, motu 115 sound/firewire/motu/motu-transaction.c err = snd_motu_transaction_reregister(motu); motu 117 sound/firewire/motu/motu-transaction.c fw_core_remove_address_handler(&motu->async_handler); motu 118 sound/firewire/motu/motu-transaction.c motu->async_handler.address_callback = NULL; motu 124 sound/firewire/motu/motu-transaction.c void snd_motu_transaction_unregister(struct snd_motu *motu) motu 128 sound/firewire/motu/motu-transaction.c if (motu->async_handler.address_callback != NULL) motu 129 sound/firewire/motu/motu-transaction.c fw_core_remove_address_handler(&motu->async_handler); motu 130 sound/firewire/motu/motu-transaction.c motu->async_handler.address_callback = NULL; motu 134 sound/firewire/motu/motu-transaction.c snd_motu_transaction_write(motu, ASYNC_ADDR_HI, &data, sizeof(data)); motu 135 sound/firewire/motu/motu-transaction.c snd_motu_transaction_write(motu, ASYNC_ADDR_LO, &data, sizeof(data)); motu 28 sound/firewire/motu/motu.c static void name_card(struct snd_motu *motu) motu 30 sound/firewire/motu/motu.c struct fw_device *fw_dev = fw_parent_device(motu->unit); motu 35 sound/firewire/motu/motu.c fw_csr_iterator_init(&it, motu->unit->directory); motu 44 sound/firewire/motu/motu.c strcpy(motu->card->driver, "FW-MOTU"); motu 45 sound/firewire/motu/motu.c strcpy(motu->card->shortname, motu->spec->name); motu 46 sound/firewire/motu/motu.c strcpy(motu->card->mixername, motu->spec->name); motu 47 sound/firewire/motu/motu.c snprintf(motu->card->longname, sizeof(motu->card->longname), motu 49 sound/firewire/motu/motu.c motu->spec->name, version, motu 51 sound/firewire/motu/motu.c dev_name(&motu->unit->device), 100 << fw_dev->max_speed); motu 56 sound/firewire/motu/motu.c struct snd_motu *motu = card->private_data; motu 58 sound/firewire/motu/motu.c snd_motu_transaction_unregister(motu); motu 59 sound/firewire/motu/motu.c snd_motu_stream_destroy_duplex(motu); motu 64 sound/firewire/motu/motu.c struct snd_motu *motu = container_of(work, struct snd_motu, dwork.work); motu 67 sound/firewire/motu/motu.c if (motu->registered) motu 70 sound/firewire/motu/motu.c err = snd_card_new(&motu->unit->device, -1, NULL, THIS_MODULE, 0, motu 71 sound/firewire/motu/motu.c &motu->card); motu 74 sound/firewire/motu/motu.c motu->card->private_free = motu_card_free; motu 75 sound/firewire/motu/motu.c motu->card->private_data = motu; motu 77 sound/firewire/motu/motu.c name_card(motu); motu 79 sound/firewire/motu/motu.c err = snd_motu_transaction_register(motu); motu 83 sound/firewire/motu/motu.c err = snd_motu_stream_init_duplex(motu); motu 87 sound/firewire/motu/motu.c snd_motu_proc_init(motu); motu 89 sound/firewire/motu/motu.c err = snd_motu_create_pcm_devices(motu); motu 93 sound/firewire/motu/motu.c if ((motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_2ND_Q) || motu 94 sound/firewire/motu/motu.c (motu->spec->flags & SND_MOTU_SPEC_RX_MIDI_3RD_Q) || motu 95 sound/firewire/motu/motu.c (motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_2ND_Q) || motu 96 sound/firewire/motu/motu.c (motu->spec->flags & SND_MOTU_SPEC_TX_MIDI_3RD_Q)) { motu 97 sound/firewire/motu/motu.c err = snd_motu_create_midi_devices(motu); motu 102 sound/firewire/motu/motu.c err = snd_motu_create_hwdep_device(motu); motu 106 sound/firewire/motu/motu.c err = snd_card_register(motu->card); motu 110 sound/firewire/motu/motu.c motu->registered = true; motu 114 sound/firewire/motu/motu.c snd_card_free(motu->card); motu 115 sound/firewire/motu/motu.c dev_info(&motu->unit->device, motu 122 sound/firewire/motu/motu.c struct snd_motu *motu; motu 125 sound/firewire/motu/motu.c motu = devm_kzalloc(&unit->device, sizeof(struct snd_motu), GFP_KERNEL); motu 126 sound/firewire/motu/motu.c if (!motu) motu 128 sound/firewire/motu/motu.c motu->unit = fw_unit_get(unit); motu 129 sound/firewire/motu/motu.c dev_set_drvdata(&unit->device, motu); motu 131 sound/firewire/motu/motu.c motu->spec = (const struct snd_motu_spec *)entry->driver_data; motu 132 sound/firewire/motu/motu.c mutex_init(&motu->mutex); motu 133 sound/firewire/motu/motu.c spin_lock_init(&motu->lock); motu 134 sound/firewire/motu/motu.c init_waitqueue_head(&motu->hwdep_wait); motu 137 sound/firewire/motu/motu.c INIT_DEFERRABLE_WORK(&motu->dwork, do_registration); motu 138 sound/firewire/motu/motu.c snd_fw_schedule_registration(unit, &motu->dwork); motu 145 sound/firewire/motu/motu.c struct snd_motu *motu = dev_get_drvdata(&unit->device); motu 152 sound/firewire/motu/motu.c cancel_delayed_work_sync(&motu->dwork); motu 154 sound/firewire/motu/motu.c if (motu->registered) { motu 156 sound/firewire/motu/motu.c snd_card_free(motu->card); motu 159 sound/firewire/motu/motu.c mutex_destroy(&motu->mutex); motu 160 sound/firewire/motu/motu.c fw_unit_put(motu->unit); motu 165 sound/firewire/motu/motu.c struct snd_motu *motu = dev_get_drvdata(&unit->device); motu 168 sound/firewire/motu/motu.c if (!motu->registered) motu 169 sound/firewire/motu/motu.c snd_fw_schedule_registration(unit, &motu->dwork); motu 172 sound/firewire/motu/motu.c snd_motu_transaction_reregister(motu); motu 111 sound/firewire/motu/motu.h int (*get_clock_rate)(struct snd_motu *motu, unsigned int *rate); motu 112 sound/firewire/motu/motu.h int (*set_clock_rate)(struct snd_motu *motu, unsigned int rate); motu 113 sound/firewire/motu/motu.h int (*get_clock_source)(struct snd_motu *motu, motu 115 sound/firewire/motu/motu.h int (*switch_fetching_mode)(struct snd_motu *motu, bool enable); motu 116 sound/firewire/motu/motu.h int (*cache_packet_formats)(struct snd_motu *motu); motu 146 sound/firewire/motu/motu.h int snd_motu_transaction_read(struct snd_motu *motu, u32 offset, __be32 *reg, motu 148 sound/firewire/motu/motu.h int snd_motu_transaction_write(struct snd_motu *motu, u32 offset, __be32 *reg, motu 150 sound/firewire/motu/motu.h int snd_motu_transaction_register(struct snd_motu *motu); motu 151 sound/firewire/motu/motu.h int snd_motu_transaction_reregister(struct snd_motu *motu); motu 152 sound/firewire/motu/motu.h void snd_motu_transaction_unregister(struct snd_motu *motu); motu 154 sound/firewire/motu/motu.h int snd_motu_stream_init_duplex(struct snd_motu *motu); motu 155 sound/firewire/motu/motu.h void snd_motu_stream_destroy_duplex(struct snd_motu *motu); motu 156 sound/firewire/motu/motu.h int snd_motu_stream_cache_packet_formats(struct snd_motu *motu); motu 157 sound/firewire/motu/motu.h int snd_motu_stream_reserve_duplex(struct snd_motu *motu, unsigned int rate); motu 158 sound/firewire/motu/motu.h int snd_motu_stream_start_duplex(struct snd_motu *motu); motu 159 sound/firewire/motu/motu.h void snd_motu_stream_stop_duplex(struct snd_motu *motu); motu 160 sound/firewire/motu/motu.h int snd_motu_stream_lock_try(struct snd_motu *motu); motu 161 sound/firewire/motu/motu.h void snd_motu_stream_lock_release(struct snd_motu *motu); motu 163 sound/firewire/motu/motu.h void snd_motu_proc_init(struct snd_motu *motu); motu 165 sound/firewire/motu/motu.h int snd_motu_create_pcm_devices(struct snd_motu *motu); motu 167 sound/firewire/motu/motu.h int snd_motu_create_midi_devices(struct snd_motu *motu); motu 169 sound/firewire/motu/motu.h int snd_motu_create_hwdep_device(struct snd_motu *motu);