|
@@ -1003,13 +1003,15 @@ static int vmlfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
|
|
struct vml_info *vinfo = container_of(info, struct vml_info, info);
|
|
struct vml_info *vinfo = container_of(info, struct vml_info, info);
|
|
unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
|
|
unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
|
|
int ret;
|
|
int ret;
|
|
|
|
+ unsigned long prot;
|
|
|
|
|
|
ret = vmlfb_vram_offset(vinfo, offset);
|
|
ret = vmlfb_vram_offset(vinfo, offset);
|
|
if (ret)
|
|
if (ret)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
|
|
|
|
- pgprot_val(vma->vm_page_prot) &= ~_PAGE_PWT;
|
|
|
|
|
|
+ prot = pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK;
|
|
|
|
+ pgprot_val(vma->vm_page_prot) =
|
|
|
|
+ prot | cachemode2protval(_PAGE_CACHE_MODE_UC_MINUS);
|
|
|
|
|
|
return vm_iomap_memory(vma, vinfo->vram_start,
|
|
return vm_iomap_memory(vma, vinfo->vram_start,
|
|
vinfo->vram_contig_size);
|
|
vinfo->vram_contig_size);
|