Brettschneider Falk <[EMAIL PROTECTED]> writes:
>I've done some measuring based on the DMA-copy driver sources you've
>provided to us and I saw a strange collapse of the DMA speed at transfer
>size = 0x1fff6 bytes. Have you noticed that too, and do you have an
>explanation? I don't get it why that happened.

>            do {
>                a.len = (len >= 0x10000) ? (0x10000-1) : len;
>                //printf("a.len=0x%x ", a.len);
>                //printf("a.dst=0x%08x ", a.dst);
>                //printf("a.addr=0x%08x\n", a.addr);
>                ioctl(fd, MEMIO_DMA, &a);
>                a.dst  += a.len;
>                a.addr += a.len;
>                len -= a.len;
>            } while (len);

Never transfer odd numbers of bytes by DMA unless you have a darn good
reason to (or to odd addresses).  DMA engines like nice, aligned sources,
destinations, and counts.  _Sometimes_ they can optimize the start and end
and use internal FIFOs to work well in those cases (ones used in
bit-blitters and 3d-texturing, for example) but the 64x DMA engine is not
optimized for that, and I assume the davinci is similar.  Try -8 or -16
instead of -1.

-- 
Randell Jesup
[EMAIL PROTECTED]

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to