Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 15034
b: refs/heads/master
c: 3639c86
h: refs/heads/master
v: v3
  • Loading branch information
Sascha Sommer authored and Linus Torvalds committed Dec 12, 2005
1 parent 32533e9 commit 9a5f188
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 62 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 225a0cb6716da3aafaeb9ed2f8d9a7a1f2af9f09
refs/heads/master: 3639c8619d50a6dea8fa106a5c61d848ffdcd3d6
49 changes: 4 additions & 45 deletions trunk/drivers/media/video/em28xx/em28xx-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,48 +116,6 @@ void em28xx_print_ioctl(char *name, unsigned int cmd)
}
}

static void *rvmalloc(size_t size)
{
void *mem;
unsigned long adr;

size = PAGE_ALIGN(size);

mem = vmalloc_32((unsigned long)size);
if (!mem)
return NULL;

memset(mem, 0, size);

adr = (unsigned long)mem;
while (size > 0) {
SetPageReserved(vmalloc_to_page((void *)adr));
adr += PAGE_SIZE;
size -= PAGE_SIZE;
}

return mem;
}

static void rvfree(void *mem, size_t size)
{
unsigned long adr;

if (!mem)
return;

size = PAGE_ALIGN(size);

adr = (unsigned long)mem;
while (size > 0) {
ClearPageReserved(vmalloc_to_page((void *)adr));
adr += PAGE_SIZE;
size -= PAGE_SIZE;
}

vfree(mem);
}


/*
* em28xx_request_buffers()
Expand All @@ -174,8 +132,10 @@ u32 em28xx_request_buffers(struct em28xx *dev, u32 count)

dev->num_frames = count;
while (dev->num_frames > 0) {
if ((buff = rvmalloc(dev->num_frames * imagesize)))
if ((buff = vmalloc_32(dev->num_frames * imagesize))) {
memset(buff, 0, dev->num_frames * imagesize);
break;
}
dev->num_frames--;
}

Expand Down Expand Up @@ -218,8 +178,7 @@ void em28xx_queue_unusedframes(struct em28xx *dev)
void em28xx_release_buffers(struct em28xx *dev)
{
if (dev->num_frames) {
rvfree(dev->frame[0].bufmem,
dev->num_frames * PAGE_ALIGN(dev->frame[0].buf.length));
vfree(dev->frame[0].bufmem);
dev->num_frames = 0;
}
}
Expand Down
21 changes: 5 additions & 16 deletions trunk/drivers/media/video/em28xx/em28xx-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,16 +189,6 @@ static DECLARE_RWSEM(em28xx_disconnect);

/********************* v4l2 interface ******************************************/

static inline unsigned long kvirt_to_pa(unsigned long adr)
{
unsigned long kva, ret;

kva = (unsigned long)page_address(vmalloc_to_page((void *)adr));
kva |= adr & (PAGE_SIZE - 1);
ret = __pa(kva);
return ret;
}

/*
* em28xx_config()
* inits registers with sane defaults
Expand Down Expand Up @@ -616,7 +606,8 @@ static struct vm_operations_struct em28xx_vm_ops = {
static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
{
unsigned long size = vma->vm_end - vma->vm_start,
start = vma->vm_start, pos, page;
start = vma->vm_start;
void *pos;
u32 i;

struct em28xx *dev = filp->private_data;
Expand Down Expand Up @@ -657,12 +648,10 @@ static int em28xx_v4l2_mmap(struct file *filp, struct vm_area_struct *vma)
vma->vm_flags |= VM_IO;
vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */

pos = (unsigned long)dev->frame[i].bufmem;
pos = dev->frame[i].bufmem;
while (size > 0) { /* size is page-aligned */
page = vmalloc_to_pfn((void *)pos);
if (remap_pfn_range(vma, start, page, PAGE_SIZE,
vma->vm_page_prot)) {
em28xx_videodbg("mmap: rename page map failed\n");
if (vm_insert_page(vma, start, vmalloc_to_page(pos))) {
em28xx_videodbg("mmap: vm_insert_page failed\n");
up(&dev->fileop_lock);
return -EAGAIN;
}
Expand Down

0 comments on commit 9a5f188

Please sign in to comment.