]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[media] tw68: simplify tw68_buffer_count
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 4 Sep 2014 16:26:52 +0000 (13:26 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Mon, 8 Sep 2014 19:40:16 +0000 (16:40 -0300)
The code to calculate the maximum number of buffers allowed in 4 MB
is 1) wrong if PAGE_SIZE != 4096 and 2) unnecessarily complex.

Fix and simplify the code.

Reported-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/pci/tw68/tw68-video.c

index 66fae2345fdd9a5642353ccec95639651e4d52f4..498ead9a956db304fb494c52c786b44942b7caf9 100644 (file)
@@ -361,22 +361,13 @@ int tw68_video_start_dma(struct tw68_dev *dev, struct tw68_buf *buf)
 
 /* ------------------------------------------------------------------ */
 
-/* nr of (tw68-)pages for the given buffer size */
-static int tw68_buffer_pages(int size)
-{
-       size  = PAGE_ALIGN(size);
-       size += PAGE_SIZE; /* for non-page-aligned buffers */
-       size /= 4096;
-       return size;
-}
-
 /* calc max # of buffers from size (must not exceed the 4MB virtual
  * address space per DMA channel) */
 static int tw68_buffer_count(unsigned int size, unsigned int count)
 {
        unsigned int maxcount;
 
-       maxcount = 1024 / tw68_buffer_pages(size);
+       maxcount = (4 * 1024 * 1024) / roundup(size, PAGE_SIZE);
        if (count > maxcount)
                count = maxcount;
        return count;