Stefano D'Angelo wrote: > urb->transfer_dma = runtime->dma_addr; This will always play the data at the beginning of the buffer. > urb->transfer_buffer = usb_buffer_alloc (urb->dev, > LINE6_TP_UX1_48000_16_PACKET_SIZE_OUT * 2, GFP_KERNEL, &urb->transfer_dma); This buffer should be allocated when the URB is allocated. > memcpy (urb->transfer_buffer, runtime->dma_area + chip->playback_pos * > 2, LINE6_TP_UX1_48000_16_PACKET_SIZE_OUT * 2); I hope the buffer size is a multiple of PACKET_SIZE_OUT * 2. > urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; Why the NO_TRANSFER_DMA_MAP? You shouldn't need to do such optimizations in the first version of the driver. > snd_pcm_period_elapsed (substream); What is the period size? Regards, Clemens _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel