Lines Matching full:ff
2 // ff-protocol-latter - a part of driver for RME Fireface series
10 #include "ff.h"
75 static int latter_get_clock(struct snd_ff *ff, unsigned int *rate, in latter_get_clock() argument
82 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST, in latter_get_clock()
88 return parse_clock_bits(data, rate, src, ff->unit_version); in latter_get_clock()
91 static int latter_switch_fetching_mode(struct snd_ff *ff, bool enable) in latter_switch_fetching_mode() argument
102 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST, in latter_switch_fetching_mode()
106 static int latter_allocate_resources(struct snd_ff *ff, unsigned int rate) in latter_allocate_resources() argument
131 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST, in latter_allocate_resources()
142 err = latter_get_clock(ff, &curr_rate, &src); in latter_allocate_resources()
164 ff->tx_resources.channels_mask = 0x00000000000000ffuLL; in latter_allocate_resources()
165 err = fw_iso_resources_allocate(&ff->tx_resources, in latter_allocate_resources()
166 amdtp_stream_get_max_payload(&ff->tx_stream), in latter_allocate_resources()
167 fw_parent_device(ff->unit)->max_speed); in latter_allocate_resources()
172 ff->rx_resources.channels_mask = 0x00000000000000ffuLL; in latter_allocate_resources()
173 err = fw_iso_resources_allocate(&ff->rx_resources, in latter_allocate_resources()
174 amdtp_stream_get_max_payload(&ff->rx_stream), in latter_allocate_resources()
175 fw_parent_device(ff->unit)->max_speed); in latter_allocate_resources()
177 fw_iso_resources_free(&ff->tx_resources); in latter_allocate_resources()
182 static int latter_begin_session(struct snd_ff *ff, unsigned int rate) in latter_begin_session() argument
184 unsigned int generation = ff->rx_resources.generation; in latter_begin_session()
190 if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) { in latter_begin_session()
215 if (generation != fw_parent_device(ff->unit)->card->generation) { in latter_begin_session()
216 err = fw_iso_resources_update(&ff->tx_resources); in latter_begin_session()
220 err = fw_iso_resources_update(&ff->rx_resources); in latter_begin_session()
225 data = (ff->tx_resources.channel << 8) | ff->rx_resources.channel; in latter_begin_session()
227 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST, in latter_begin_session()
233 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST, in latter_begin_session()
237 static void latter_finish_session(struct snd_ff *ff) in latter_finish_session() argument
242 snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST, in latter_finish_session()
246 static void latter_dump_status(struct snd_ff *ff, struct snd_info_buffer *buffer) in latter_dump_status() argument
265 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST, in latter_dump_status()
286 err = parse_clock_bits(data, &rate, &src, ff->unit_version); in latter_dump_status()
316 static void latter_handle_midi_msg(struct snd_ff *ff, unsigned int offset, in latter_handle_midi_msg() argument
325 if (index >= ff->spec->midi_in_ports) in latter_handle_midi_msg()
351 substream = READ_ONCE(ff->tx_midi_substreams[index]); in latter_handle_midi_msg()
406 static int latter_fill_midi_msg(struct snd_ff *ff, in latter_fill_midi_msg() argument
419 if (!ff->on_sysex[port]) { in latter_fill_midi_msg()
425 ff->on_sysex[port] = true; in latter_fill_midi_msg()
439 ff->on_sysex[port] = false; in latter_fill_midi_msg()
445 ff->msg_buf[port][0] = cpu_to_le32(data); in latter_fill_midi_msg()
446 ff->rx_bytes[port] = consumed; in latter_fill_midi_msg()