|
@@ -354,6 +354,30 @@ EXPORT_SYMBOL(PCIBIOS_MIN_IO);
|
|
EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
|
|
EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
|
|
|
|
+ enum pci_mmap_state mmap_state, int write_combine)
|
|
|
|
+{
|
|
|
|
+ unsigned long prot;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * I/O space can be accessed via normal processor loads and stores on
|
|
|
|
+ * this platform but for now we elect not to do this and portable
|
|
|
|
+ * drivers should not do this anyway.
|
|
|
|
+ */
|
|
|
|
+ if (mmap_state == pci_mmap_io)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Ignore write-combine; for now only return uncached mappings.
|
|
|
|
+ */
|
|
|
|
+ prot = pgprot_val(vma->vm_page_prot);
|
|
|
|
+ prot = (prot & ~_CACHE_MASK) | _CACHE_UNCACHED;
|
|
|
|
+ vma->vm_page_prot = __pgprot(prot);
|
|
|
|
+
|
|
|
|
+ return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
|
|
|
|
+ vma->vm_end - vma->vm_start, vma->vm_page_prot);
|
|
|
|
+}
|
|
|
|
+
|
|
char * (*pcibios_plat_setup)(char *str) __devinitdata;
|
|
char * (*pcibios_plat_setup)(char *str) __devinitdata;
|
|
|
|
|
|
char *__devinit pcibios_setup(char *str)
|
|
char *__devinit pcibios_setup(char *str)
|