Lines Matching refs:ff

2 // ff-protocol-latter.c - a part of driver for RME Fireface series
8 #include "ff.h"
141 static int latter_get_clock(struct snd_ff *ff, unsigned int *rate,
148 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST,
154 return parse_clock_bits(data, rate, src, ff->unit_version);
157 static int latter_switch_fetching_mode(struct snd_ff *ff, bool enable)
168 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
172 static int latter_allocate_resources(struct snd_ff *ff, unsigned int rate)
197 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
208 err = latter_get_clock(ff, &curr_rate, &src);
230 ff->tx_resources.channels_mask = 0x00000000000000ffuLL;
231 err = fw_iso_resources_allocate(&ff->tx_resources,
232 amdtp_stream_get_max_payload(&ff->tx_stream),
233 fw_parent_device(ff->unit)->max_speed);
238 ff->rx_resources.channels_mask = 0x00000000000000ffuLL;
239 err = fw_iso_resources_allocate(&ff->rx_resources,
240 amdtp_stream_get_max_payload(&ff->rx_stream),
241 fw_parent_device(ff->unit)->max_speed);
243 fw_iso_resources_free(&ff->tx_resources);
248 static int latter_begin_session(struct snd_ff *ff, unsigned int rate)
250 unsigned int generation = ff->rx_resources.generation;
256 if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) {
281 if (generation != fw_parent_device(ff->unit)->card->generation) {
282 err = fw_iso_resources_update(&ff->tx_resources);
286 err = fw_iso_resources_update(&ff->rx_resources);
291 data = (ff->tx_resources.channel << 8) | ff->rx_resources.channel;
293 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
299 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
303 static void latter_finish_session(struct snd_ff *ff)
308 snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
312 static void latter_dump_status(struct snd_ff *ff, struct snd_info_buffer *buffer)
337 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST,
345 if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) {
366 err = parse_clock_bits(data, &rate, &src, ff->unit_version);
396 static void latter_handle_midi_msg(struct snd_ff *ff, unsigned int offset, const __le32 *buf,
405 if (index >= ff->spec->midi_in_ports)
431 substream = READ_ONCE(ff->tx_midi_substreams[index]);
486 static int latter_fill_midi_msg(struct snd_ff *ff,
499 if (!ff->on_sysex[port]) {
505 ff->on_sysex[port] = true;
519 ff->on_sysex[port] = false;
525 ff->msg_buf[port][0] = cpu_to_le32(data);
526 ff->rx_bytes[port] = consumed;