Lines Matching refs:ff

2 // ff-protocol-latter - a part of driver for RME Fireface series
10 #include "ff.h"
143 static int latter_get_clock(struct snd_ff *ff, unsigned int *rate,
150 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST,
156 return parse_clock_bits(data, rate, src, ff->unit_version);
159 static int latter_switch_fetching_mode(struct snd_ff *ff, bool enable)
170 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
174 static int latter_allocate_resources(struct snd_ff *ff, unsigned int rate)
199 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
210 err = latter_get_clock(ff, &curr_rate, &src);
232 ff->tx_resources.channels_mask = 0x00000000000000ffuLL;
233 err = fw_iso_resources_allocate(&ff->tx_resources,
234 amdtp_stream_get_max_payload(&ff->tx_stream),
235 fw_parent_device(ff->unit)->max_speed);
240 ff->rx_resources.channels_mask = 0x00000000000000ffuLL;
241 err = fw_iso_resources_allocate(&ff->rx_resources,
242 amdtp_stream_get_max_payload(&ff->rx_stream),
243 fw_parent_device(ff->unit)->max_speed);
245 fw_iso_resources_free(&ff->tx_resources);
250 static int latter_begin_session(struct snd_ff *ff, unsigned int rate)
252 unsigned int generation = ff->rx_resources.generation;
258 if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) {
283 if (generation != fw_parent_device(ff->unit)->card->generation) {
284 err = fw_iso_resources_update(&ff->tx_resources);
288 err = fw_iso_resources_update(&ff->rx_resources);
293 data = (ff->tx_resources.channel << 8) | ff->rx_resources.channel;
295 err = snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
301 return snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
305 static void latter_finish_session(struct snd_ff *ff)
310 snd_fw_transaction(ff->unit, TCODE_WRITE_QUADLET_REQUEST,
314 static void latter_dump_status(struct snd_ff *ff, struct snd_info_buffer *buffer)
339 err = snd_fw_transaction(ff->unit, TCODE_READ_QUADLET_REQUEST,
347 if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) {
368 err = parse_clock_bits(data, &rate, &src, ff->unit_version);
398 static void latter_handle_midi_msg(struct snd_ff *ff, unsigned int offset,
407 if (index >= ff->spec->midi_in_ports)
433 substream = READ_ONCE(ff->tx_midi_substreams[index]);
488 static int latter_fill_midi_msg(struct snd_ff *ff,
501 if (!ff->on_sysex[port]) {
507 ff->on_sysex[port] = true;
521 ff->on_sysex[port] = false;
527 ff->msg_buf[port][0] = cpu_to_le32(data);
528 ff->rx_bytes[port] = consumed;