}
static void write_midi_messages(struct amdtp_stream *s, __be32 *buffer,
- unsigned int frames)
+ unsigned int frames, unsigned int data_block_counter)
{
struct amdtp_am824 *p = s->protocol;
unsigned int f, port;
for (f = 0; f < frames; f++) {
b = (u8 *)&buffer[p->midi_position];
- port = (s->data_block_counter + f) % 8;
+ port = (data_block_counter + f) % 8;
if (f < MAX_MIDI_RX_BLOCKS &&
midi_ratelimit_per_packet(s, port) &&
p->midi[port] != NULL &&
}
}
-static void read_midi_messages(struct amdtp_stream *s,
- __be32 *buffer, unsigned int frames)
+static void read_midi_messages(struct amdtp_stream *s, __be32 *buffer,
+ unsigned int frames, unsigned int data_block_counter)
{
struct amdtp_am824 *p = s->protocol;
int len;
unsigned int port = f;
if (!(s->flags & CIP_UNALIGHED_DBC))
- port += s->data_block_counter;
+ port += data_block_counter;
port %= 8;
b = (u8 *)&buffer[p->midi_position];
}
}
-static unsigned int process_rx_data_blocks(struct amdtp_stream *s, __be32 *buffer,
- unsigned int data_blocks, unsigned int *syt)
+static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct amdtp_am824 *p = s->protocol;
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
}
if (p->midi_ports)
- write_midi_messages(s, buffer, data_blocks);
+ write_midi_messages(s, buffer, data_blocks, data_block_counter);
return pcm_frames;
}
-static unsigned int process_tx_data_blocks(struct amdtp_stream *s, __be32 *buffer,
- unsigned int data_blocks, unsigned int *syt)
+static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct amdtp_am824 *p = s->protocol;
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
}
if (p->midi_ports)
- read_midi_messages(s, buffer, data_blocks);
+ read_midi_messages(s, buffer, data_blocks, data_block_counter);
return pcm_frames;
}
data_blocks = calculate_data_blocks(s, syt);
buffer = s->buffer.packets[s->packet_index].buffer;
pcm_frames = s->process_data_blocks(s, buffer, data_blocks,
- &syt);
+ s->data_block_counter, &syt);
build_it_pkt_header(s, cycle, &template.params, data_blocks,
syt, i);
if (err >= 0) {
buffer = s->buffer.packets[s->packet_index].buffer;
pcm_frames = s->process_data_blocks(s, buffer,
- data_blocks, &syt);
+ data_blocks, s->data_block_counter, &syt);
if (!(s->flags & CIP_DBC_IS_END_EVENT)) {
s->data_block_counter += data_blocks;
struct amdtp_stream *s,
__be32 *buffer,
unsigned int data_blocks,
+ unsigned int data_block_counter,
unsigned int *syt);
struct amdtp_stream {
struct fw_unit *unit;
}
static void write_midi_messages(struct amdtp_stream *s, __be32 *buffer,
- unsigned int data_blocks)
+ unsigned int data_blocks, unsigned int data_block_counter)
{
struct amdtp_dot *p = s->protocol;
unsigned int f, port;
u8 *b;
for (f = 0; f < data_blocks; f++) {
- port = (s->data_block_counter + f) % 8;
+ port = (data_block_counter + f) % 8;
b = (u8 *)&buffer[0];
len = 0;
}
static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm;
unsigned int pcm_frames;
}
static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm;
unsigned int pcm_frames;
pcm_frames = 0;
}
- write_midi_messages(s, buffer, data_blocks);
+ write_midi_messages(s, buffer, data_blocks, data_block_counter);
return pcm_frames;
}
}
static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
unsigned int pcm_frames;
}
static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
unsigned int pcm_frames;
}
static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer, unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct amdtp_motu *p = s->protocol;
struct snd_pcm_substream *pcm;
}
static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer, unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct amdtp_motu *p = (struct amdtp_motu *)s->protocol;
struct snd_pcm_substream *pcm;
}
static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm;
}
static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
- __be32 *buffer,
- unsigned int data_blocks,
- unsigned int *syt)
+ __be32 *buffer, unsigned int data_blocks,
+ unsigned int data_block_counter, unsigned int *syt)
{
struct snd_pcm_substream *pcm;