mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-28 12:25:31 +00:00
[media] tw68: simplify tw68_buffer_count
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>
This commit is contained in:
parent
f1b6a73532
commit
947b38bb11
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user