summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLionel Xu <r63889@freescale.com>2009-07-21 13:28:28 +0800
committerJustin Waters <justin.waters@timesys.com>2009-10-13 11:04:38 -0400
commit84d89243205f2a561801c31f4ab95287c2a09dce (patch)
treeb939bd4b2721e8f720578c79eb8ea71784d5e010 /drivers
parent18b5fc50e77747db212a4e4e2c89c89aa78e0540 (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-xdrivers/char/mxs_viim.c16
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;
}