init_waitqueue_head(&s->callback_wait);
        s->callbacked = false;
-       s->sync_slave = NULL;
 
        s->fmt = fmt;
        s->process_data_blocks = process_data_blocks;
                        dev_err(&s->unit->device,
                                "Detect jumbo payload: %02x %02x\n",
                                payload_quadlets, max_payload_quadlets);
-                       s->packet_index = -1;
                        break;
                }
 
                syt = be32_to_cpu(buffer[1]) & CIP_SYT_MASK;
                if (handle_in_packet(s, payload_quadlets, buffer,
-                                               &data_blocks, cycle, syt) < 0) {
-                       s->packet_index = -1;
+                                               &data_blocks, cycle, syt) < 0)
                        break;
-               }
-
-               /* Process sync slave stream */
-               if (s->sync_slave && s->sync_slave->callbacked) {
-                       if (handle_out_packet(s->sync_slave,
-                                             data_blocks, cycle, syt) < 0) {
-                               s->packet_index = -1;
-                               break;
-                       }
-               }
        }
 
-       /* Queueing error or detecting discontinuity */
-       if (s->packet_index < 0) {
+       /* Queueing error or detecting invalid payload. */
+       if (p < packets) {
+               s->packet_index = -1;
                amdtp_stream_pcm_abort(s);
-
-               /* Abort sync slave. */
-               if (s->sync_slave) {
-                       s->sync_slave->packet_index = -1;
-                       amdtp_stream_pcm_abort(s->sync_slave);
-               }
                return;
        }
 
-       /* when sync to device, flush the packets for slave stream */
-       if (s->sync_slave && s->sync_slave->callbacked)
-               fw_iso_context_queue_flush(s->sync_slave->context);
-
        fw_iso_context_queue_flush(s->context);
 }
 
-/* processing is done by master callback */
-static void slave_stream_callback(struct fw_iso_context *context, u32 tstamp,
-                                 size_t header_length, void *header,
-                                 void *private_data)
-{
-       return;
-}
-
 /* this is executed one time */
 static void amdtp_stream_first_callback(struct fw_iso_context *context,
                                        u32 tstamp, size_t header_length,
 
        if (s->direction == AMDTP_IN_STREAM)
                context->callback.sc = in_stream_callback;
-       else if (s->flags & CIP_SYNC_TO_DEVICE)
-               context->callback.sc = slave_stream_callback;
        else
                context->callback.sc = out_stream_callback;
 
 
  * @CIP_BLOCKING: In blocking mode, each packet contains either zero or
  *     SYT_INTERVAL samples, with these two types alternating so that
  *     the overall sample rate comes out right.
- * @CIP_SYNC_TO_DEVICE: In sync to device mode, time stamp in out packets is
- *     generated by in packets. Defaultly this driver generates timestamp.
  * @CIP_EMPTY_WITH_TAG0: Only for in-stream. Empty in-packets have TAG0.
  * @CIP_DBC_IS_END_EVENT: Only for in-stream. The value of dbc in an in-packet
  *     corresponds to the end of event in the packet. Out of IEC 61883.
 enum cip_flags {
        CIP_NONBLOCKING         = 0x00,
        CIP_BLOCKING            = 0x01,
-       CIP_SYNC_TO_DEVICE      = 0x02,
-       CIP_EMPTY_WITH_TAG0     = 0x04,
-       CIP_DBC_IS_END_EVENT    = 0x08,
-       CIP_WRONG_DBS           = 0x10,
-       CIP_SKIP_DBC_ZERO_CHECK = 0x20,
-       CIP_SKIP_INIT_DBC_CHECK = 0x40,
-       CIP_EMPTY_HAS_WRONG_DBC = 0x80,
-       CIP_JUMBO_PAYLOAD       = 0x100,
+       CIP_EMPTY_WITH_TAG0     = 0x02,
+       CIP_DBC_IS_END_EVENT    = 0x04,
+       CIP_WRONG_DBS           = 0x08,
+       CIP_SKIP_DBC_ZERO_CHECK = 0x10,
+       CIP_SKIP_INIT_DBC_CHECK = 0x20,
+       CIP_EMPTY_HAS_WRONG_DBC = 0x40,
+       CIP_JUMBO_PAYLOAD       = 0x80,
 };
 
 /**
        /* To wait for first packet. */
        bool callbacked;
        wait_queue_head_t callback_wait;
-       struct amdtp_stream *sync_slave;
 
        /* For backends to process data blocks. */
        void *protocol;
        return sfc & 1;
 }
 
-static inline void amdtp_stream_set_sync(enum cip_flags sync_mode,
-                                        struct amdtp_stream *master,
-                                        struct amdtp_stream *slave)
-{
-       if (sync_mode == CIP_SYNC_TO_DEVICE) {
-               master->flags |= CIP_SYNC_TO_DEVICE;
-               slave->flags |= CIP_SYNC_TO_DEVICE;
-               master->sync_slave = slave;
-       } else {
-               master->flags &= ~CIP_SYNC_TO_DEVICE;
-               slave->flags &= ~CIP_SYNC_TO_DEVICE;
-               master->sync_slave = NULL;
-       }
-
-       slave->sync_slave = NULL;
-}
-
 /**
  * amdtp_stream_wait_callback - sleep till callbacked or timeout
  * @s: the AMDTP stream