int simple_mmap (struct file *filp, struct vm_area_struct *vma) { unsigned long physical = PHYSICAL_ADDRESS ; unsigned long off = 0 ; vma->vm_pgoff = off >> PAGE_SHIFT; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); vma->vm_flags = vma->vm_flags | VM_IO | VM_RESERVED ; /* Memory mapped I/O and DONT Swap out */ printk (KERN_WARNING "Start Address\n", vma -> vm_start) ; if (io_remap_pfn_range (vma, vma->vm_start, physical >> PAGE_SHIFT, vma->vm_end - vma->vm_start, vma->vm_page_prot) ) { printk (KERN_WARNING "io_remap_pfn failed\n") ; return -1 ; } else { printk (KERN_WARNING "io_remap_pfn succeeds\n") ; return 0 ; } }