Lines Matching refs:s
41 void (*transfer_samples)(struct amdtp_stream *s,
60 int amdtp_am824_set_parameters(struct amdtp_stream *s, unsigned int rate, in amdtp_am824_set_parameters() argument
65 struct amdtp_am824 *p = s->protocol; in amdtp_am824_set_parameters()
70 if (amdtp_stream_running(s)) in amdtp_am824_set_parameters()
80 if (WARN_ON(amdtp_stream_running(s)) || in amdtp_am824_set_parameters()
85 err = amdtp_stream_set_parameters(s, rate, in amdtp_am824_set_parameters()
90 s->fdf = AMDTP_FDF_AM824 | s->sfc; in amdtp_am824_set_parameters()
116 p->midi_fifo_limit = rate - MIDI_BYTES_PER_SECOND * s->syt_interval + 1; in amdtp_am824_set_parameters()
129 void amdtp_am824_set_pcm_position(struct amdtp_stream *s, unsigned int index, in amdtp_am824_set_pcm_position() argument
132 struct amdtp_am824 *p = s->protocol; in amdtp_am824_set_pcm_position()
145 void amdtp_am824_set_midi_position(struct amdtp_stream *s, in amdtp_am824_set_midi_position() argument
148 struct amdtp_am824 *p = s->protocol; in amdtp_am824_set_midi_position()
154 static void write_pcm_s32(struct amdtp_stream *s, in write_pcm_s32() argument
158 struct amdtp_am824 *p = s->protocol; in write_pcm_s32()
165 frames_to_bytes(runtime, s->pcm_buffer_pointer); in write_pcm_s32()
166 remaining_frames = runtime->buffer_size - s->pcm_buffer_pointer; in write_pcm_s32()
174 buffer += s->data_block_quadlets; in write_pcm_s32()
180 static void write_pcm_s16(struct amdtp_stream *s, in write_pcm_s16() argument
184 struct amdtp_am824 *p = s->protocol; in write_pcm_s16()
191 frames_to_bytes(runtime, s->pcm_buffer_pointer); in write_pcm_s16()
192 remaining_frames = runtime->buffer_size - s->pcm_buffer_pointer; in write_pcm_s16()
200 buffer += s->data_block_quadlets; in write_pcm_s16()
206 static void read_pcm_s32(struct amdtp_stream *s, in read_pcm_s32() argument
210 struct amdtp_am824 *p = s->protocol; in read_pcm_s32()
217 frames_to_bytes(runtime, s->pcm_buffer_pointer); in read_pcm_s32()
218 remaining_frames = runtime->buffer_size - s->pcm_buffer_pointer; in read_pcm_s32()
225 buffer += s->data_block_quadlets; in read_pcm_s32()
231 static void write_pcm_silence(struct amdtp_stream *s, in write_pcm_silence() argument
234 struct amdtp_am824 *p = s->protocol; in write_pcm_silence()
240 buffer += s->data_block_quadlets; in write_pcm_silence()
253 void amdtp_am824_set_pcm_format(struct amdtp_stream *s, snd_pcm_format_t format) in amdtp_am824_set_pcm_format() argument
255 struct amdtp_am824 *p = s->protocol; in amdtp_am824_set_pcm_format()
257 if (WARN_ON(amdtp_stream_pcm_running(s))) in amdtp_am824_set_pcm_format()
265 if (s->direction == AMDTP_OUT_STREAM) { in amdtp_am824_set_pcm_format()
272 if (s->direction == AMDTP_OUT_STREAM) in amdtp_am824_set_pcm_format()
287 int amdtp_am824_add_pcm_hw_constraints(struct amdtp_stream *s, in amdtp_am824_add_pcm_hw_constraints() argument
292 err = amdtp_stream_add_pcm_hw_constraints(s, runtime); in amdtp_am824_add_pcm_hw_constraints()
311 void amdtp_am824_midi_trigger(struct amdtp_stream *s, unsigned int port, in amdtp_am824_midi_trigger() argument
314 struct amdtp_am824 *p = s->protocol; in amdtp_am824_midi_trigger()
331 static bool midi_ratelimit_per_packet(struct amdtp_stream *s, unsigned int port) in midi_ratelimit_per_packet() argument
333 struct amdtp_am824 *p = s->protocol; in midi_ratelimit_per_packet()
340 used -= MIDI_BYTES_PER_SECOND * s->syt_interval; in midi_ratelimit_per_packet()
347 static void midi_rate_use_one_byte(struct amdtp_stream *s, unsigned int port) in midi_rate_use_one_byte() argument
349 struct amdtp_am824 *p = s->protocol; in midi_rate_use_one_byte()
351 p->midi_fifo_used[port] += amdtp_rate_table[s->sfc]; in midi_rate_use_one_byte()
354 static void write_midi_messages(struct amdtp_stream *s, __be32 *buffer, in write_midi_messages() argument
357 struct amdtp_am824 *p = s->protocol; in write_midi_messages()
364 port = (s->data_block_counter + f) % 8; in write_midi_messages()
366 midi_ratelimit_per_packet(s, port) && in write_midi_messages()
369 midi_rate_use_one_byte(s, port); in write_midi_messages()
378 buffer += s->data_block_quadlets; in write_midi_messages()
382 static void read_midi_messages(struct amdtp_stream *s, in read_midi_messages() argument
385 struct amdtp_am824 *p = s->protocol; in read_midi_messages()
391 port = (s->data_block_counter + f) % 8; in read_midi_messages()
398 buffer += s->data_block_quadlets; in read_midi_messages()
402 static unsigned int process_rx_data_blocks(struct amdtp_stream *s, __be32 *buffer, in process_rx_data_blocks() argument
405 struct amdtp_am824 *p = s->protocol; in process_rx_data_blocks()
406 struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm); in process_rx_data_blocks()
410 p->transfer_samples(s, pcm, buffer, data_blocks); in process_rx_data_blocks()
413 write_pcm_silence(s, buffer, data_blocks); in process_rx_data_blocks()
418 write_midi_messages(s, buffer, data_blocks); in process_rx_data_blocks()
423 static unsigned int process_tx_data_blocks(struct amdtp_stream *s, __be32 *buffer, in process_tx_data_blocks() argument
426 struct amdtp_am824 *p = s->protocol; in process_tx_data_blocks()
427 struct snd_pcm_substream *pcm = ACCESS_ONCE(s->pcm); in process_tx_data_blocks()
431 p->transfer_samples(s, pcm, buffer, data_blocks); in process_tx_data_blocks()
438 read_midi_messages(s, buffer, data_blocks); in process_tx_data_blocks()
451 int amdtp_am824_init(struct amdtp_stream *s, struct fw_unit *unit, in amdtp_am824_init() argument
461 return amdtp_stream_init(s, unit, dir, flags, CIP_FMT_AM, in amdtp_am824_init()