X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fsbus%2Fchar%2Fflash.c;h=2beb3dded087cf5771ae022ad9ee528d2d9d73c5;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=0d42950448f57625a7d4dd4d96061d58b8485ad4;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/drivers/sbus/char/flash.c b/drivers/sbus/char/flash.c index 0d4295044..2beb3dded 100644 --- a/drivers/sbus/char/flash.c +++ b/drivers/sbus/char/flash.c @@ -24,7 +24,7 @@ #include #include -static spinlock_t flash_lock = SPIN_LOCK_UNLOCKED; +static DEFINE_SPINLOCK(flash_lock); static struct { unsigned long read_base; /* Physical read address */ unsigned long write_base; /* Physical write address */ @@ -66,16 +66,15 @@ flash_mmap(struct file *file, struct vm_area_struct *vma) if ((vma->vm_pgoff << PAGE_SHIFT) > size) return -ENXIO; - addr += (vma->vm_pgoff << PAGE_SHIFT); + addr = vma->vm_pgoff + (addr >> PAGE_SHIFT); if (vma->vm_end - (vma->vm_start + (vma->vm_pgoff << PAGE_SHIFT)) > size) size = vma->vm_end - (vma->vm_start + (vma->vm_pgoff << PAGE_SHIFT)); - pgprot_val(vma->vm_page_prot) &= ~(_PAGE_CACHE); - pgprot_val(vma->vm_page_prot) |= _PAGE_E; vma->vm_flags |= (VM_SHM | VM_LOCKED); + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - if (remap_page_range(vma, vma->vm_start, addr, size, vma->vm_page_prot)) + if (io_remap_pfn_range(vma, vma->vm_start, addr, size, vma->vm_page_prot)) return -EAGAIN; return 0;