On Wed, Aug 27, 2014 at 12:20 PM, Daniel Mack <daniel@xxxxxxxxxx> wrote: > On 08/27/2014 06:08 AM, Jassi Brar wrote: >> On Wed, Aug 27, 2014 at 3:23 AM, Daniel Mack <zonque@xxxxxxxxx> wrote: > >>> + uac2->p_interval = (1 << (ep_desc->bInterval - 1)) * factor; >>> + req_len = rate / uac2->p_interval; >>> >> + if (opts->p_srate % uac2->p_interval) >> + req_len += fsz; >> ..... >> >>> + uac2->p_residue = 0; >>> } else { >>> dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); >>> return -EINVAL; >>> @@ -1128,7 +1188,7 @@ afunc_set_alt(struct usb_function *fn, unsigned intf, unsigned alt) >>> >>> req->zero = 0; >>> req->context = &prm->ureq[i]; >>> - req->length = prm->max_psize; >>> + req->length = req_len; >>> req->complete = agdev_iso_complete; >>> req->buf = prm->rbuf + i * req->length; >>> >> .... otherwise req[0]->buf might overlap req[1]->buf's first frame >> for when we need to send an extra frame. > > Hmm? The first USB_XFERS packets will only contain zeros, and we're only > preparing those here. For every successive packet, the length is > recalculated and the audio material is copied in accordingly before the > requets is requeued. What buffers should overlap here? > For 44100/2/S16, req_len is 176 or 44 frames. But we need to send 45 frames in a packet occasionally. req[0]->buf = rbuf + 0 and req[1]->buf = rbuf + 176. But what if we req[0] needed to carry the packet with 45 frames? -jassi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html