amdtp-stream.c (a8520f3e9314edddf95479c4796f05b7d594be32) amdtp-stream.c (8d3f1fdf521165cac96a21e35f5a1630147d91b1)
1/*
2 * Audio and Music Data Transmission Protocol (IEC 61883-6) streams
3 * with Common Isochronous Packet (IEC 61883-1) headers
4 *
5 * Copyright (c) Clemens Ladisch <clemens@ladisch.de>
6 * Licensed under the terms of the GNU General Public License, version 2.
7 */
8

--- 479 unchanged lines hidden (view full) ---

488 ((s->fdf << CIP_FDF_SHIFT) & CIP_FDF_MASK) |
489 (syt & CIP_SYT_MASK));
490
491 if (!(s->flags & CIP_DBC_IS_END_EVENT))
492 s->data_block_counter =
493 (s->data_block_counter + data_blocks) & 0xff;
494 payload_length = 8 + data_blocks * 4 * s->data_block_quadlets;
495
1/*
2 * Audio and Music Data Transmission Protocol (IEC 61883-6) streams
3 * with Common Isochronous Packet (IEC 61883-1) headers
4 *
5 * Copyright (c) Clemens Ladisch <clemens@ladisch.de>
6 * Licensed under the terms of the GNU General Public License, version 2.
7 */
8

--- 479 unchanged lines hidden (view full) ---

488 ((s->fdf << CIP_FDF_SHIFT) & CIP_FDF_MASK) |
489 (syt & CIP_SYT_MASK));
490
491 if (!(s->flags & CIP_DBC_IS_END_EVENT))
492 s->data_block_counter =
493 (s->data_block_counter + data_blocks) & 0xff;
494 payload_length = 8 + data_blocks * 4 * s->data_block_quadlets;
495
496 trace_out_packet(s, cycle, buffer, payload_length, data_blocks, index);
496 trace_amdtp_packet(s, cycle, buffer, payload_length, data_blocks, index);
497
498 if (queue_out_packet(s, payload_length) < 0)
499 return -EIO;
500
501 pcm = READ_ONCE(s->pcm);
502 if (pcm && pcm_frames > 0)
503 update_pcm_pointers(s, pcm, pcm_frames);
504

--- 14 unchanged lines hidden (view full) ---

519 buffer = s->buffer.packets[s->packet_index].buffer;
520 syt = calculate_syt(s, cycle);
521 data_blocks = calculate_data_blocks(s, syt);
522 pcm_frames = s->process_data_blocks(s, buffer, data_blocks, &syt);
523 s->data_block_counter = (s->data_block_counter + data_blocks) & 0xff;
524
525 payload_length = data_blocks * 4 * s->data_block_quadlets;
526
497
498 if (queue_out_packet(s, payload_length) < 0)
499 return -EIO;
500
501 pcm = READ_ONCE(s->pcm);
502 if (pcm && pcm_frames > 0)
503 update_pcm_pointers(s, pcm, pcm_frames);
504

--- 14 unchanged lines hidden (view full) ---

519 buffer = s->buffer.packets[s->packet_index].buffer;
520 syt = calculate_syt(s, cycle);
521 data_blocks = calculate_data_blocks(s, syt);
522 pcm_frames = s->process_data_blocks(s, buffer, data_blocks, &syt);
523 s->data_block_counter = (s->data_block_counter + data_blocks) & 0xff;
524
525 payload_length = data_blocks * 4 * s->data_block_quadlets;
526
527 trace_out_packet_without_header(s, cycle, payload_length, data_blocks,
528 index);
527 trace_amdtp_packet(s, cycle, NULL, payload_length, data_blocks, index);
529
530 if (queue_out_packet(s, payload_length) < 0)
531 return -EIO;
532
533 pcm = READ_ONCE(s->pcm);
534 if (pcm && pcm_frames > 0)
535 update_pcm_pointers(s, pcm, pcm_frames);
536

--- 91 unchanged lines hidden (view full) ---

628
629 if (lost) {
630 dev_err(&s->unit->device,
631 "Detect discontinuity of CIP: %02X %02X\n",
632 s->data_block_counter, data_block_counter);
633 return -EIO;
634 }
635
528
529 if (queue_out_packet(s, payload_length) < 0)
530 return -EIO;
531
532 pcm = READ_ONCE(s->pcm);
533 if (pcm && pcm_frames > 0)
534 update_pcm_pointers(s, pcm, pcm_frames);
535

--- 91 unchanged lines hidden (view full) ---

627
628 if (lost) {
629 dev_err(&s->unit->device,
630 "Detect discontinuity of CIP: %02X %02X\n",
631 s->data_block_counter, data_block_counter);
632 return -EIO;
633 }
634
636 trace_in_packet(s, cycle, buffer, payload_length, data_blocks, index);
635 trace_amdtp_packet(s, cycle, buffer, payload_length, data_blocks, index);
637
638 syt = be32_to_cpu(buffer[1]) & CIP_SYT_MASK;
639 pcm_frames = s->process_data_blocks(s, buffer + 2, data_blocks, &syt);
640
641 if (s->flags & CIP_DBC_IS_END_EVENT)
642 s->data_block_counter = data_block_counter;
643 else
644 s->data_block_counter =

--- 16 unchanged lines hidden (view full) ---

661 __be32 *buffer;
662 unsigned int data_blocks;
663 struct snd_pcm_substream *pcm;
664 unsigned int pcm_frames;
665
666 buffer = s->buffer.packets[s->packet_index].buffer;
667 data_blocks = payload_length / sizeof(__be32) / s->data_block_quadlets;
668
636
637 syt = be32_to_cpu(buffer[1]) & CIP_SYT_MASK;
638 pcm_frames = s->process_data_blocks(s, buffer + 2, data_blocks, &syt);
639
640 if (s->flags & CIP_DBC_IS_END_EVENT)
641 s->data_block_counter = data_block_counter;
642 else
643 s->data_block_counter =

--- 16 unchanged lines hidden (view full) ---

660 __be32 *buffer;
661 unsigned int data_blocks;
662 struct snd_pcm_substream *pcm;
663 unsigned int pcm_frames;
664
665 buffer = s->buffer.packets[s->packet_index].buffer;
666 data_blocks = payload_length / sizeof(__be32) / s->data_block_quadlets;
667
669 trace_in_packet_without_header(s, cycle, payload_length, data_blocks,
670 index);
668 trace_amdtp_packet(s, cycle, NULL, payload_length, data_blocks, index);
671
672 pcm_frames = s->process_data_blocks(s, buffer, data_blocks, NULL);
673 s->data_block_counter = (s->data_block_counter + data_blocks) & 0xff;
674
675 if (queue_in_packet(s) < 0)
676 return -EIO;
677
678 pcm = READ_ONCE(s->pcm);

--- 370 unchanged lines hidden ---
669
670 pcm_frames = s->process_data_blocks(s, buffer, data_blocks, NULL);
671 s->data_block_counter = (s->data_block_counter + data_blocks) & 0xff;
672
673 if (queue_in_packet(s) < 0)
674 return -EIO;
675
676 pcm = READ_ONCE(s->pcm);

--- 370 unchanged lines hidden ---