diff options
author | Lionel Xu <r63889@freescale.com> | 2009-07-21 13:28:28 +0800 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2009-10-13 11:04:38 -0400 |
commit | 84d89243205f2a561801c31f4ab95287c2a09dce (patch) | |
tree | b939bd4b2721e8f720578c79eb8ea71784d5e010 /drivers | |
parent | 18b5fc50e77747db212a4e4e2c89c89aa78e0540 (diff) |
ENGR00114343 MX233: Make virtual IIM driver more robust
Only map out memory space of DCOCR when size of mmap less than or equal to
0x1000, to avoid the kernel page request error.
Signed-off-by: Lionel Xu <r63889@freescale.com>
Diffstat (limited to 'drivers')
-rwxr-xr-x | drivers/char/mxs_viim.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/char/mxs_viim.c b/drivers/char/mxs_viim.c index 5411f1e76b53..09d3e80540bf 100755 --- a/drivers/char/mxs_viim.c +++ b/drivers/char/mxs_viim.c @@ -32,6 +32,8 @@ static struct device *iim_dev; */ static int mxs_viim_mmap(struct file *file, struct vm_area_struct *vma) { + size_t size = vma->vm_end - vma->vm_start; + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); /* Remap-pfn-range will mark the range VM_IO and VM_RESERVED */ @@ -42,12 +44,14 @@ static int mxs_viim_mmap(struct file *file, struct vm_area_struct *vma) vma->vm_page_prot)) return -EAGAIN; - if (remap_pfn_range(vma, - vma->vm_start + iim_reg_size0, - iim_reg_base1 >> PAGE_SHIFT, - iim_reg_size1, - vma->vm_page_prot)) - return -EAGAIN; + if (size > iim_reg_size0) { + if (remap_pfn_range(vma, + vma->vm_start + iim_reg_size0, + iim_reg_base1 >> PAGE_SHIFT, + iim_reg_size1, + vma->vm_page_prot)) + return -EAGAIN; + } return 0; } |