parisc: provide pci_mmap_page_range() for parisc
Helge Deller
maintainerPATCH 1/1 parisc: provide pci_mmap_page_range() for parisc
From: Thomas Bogendoerfer <[email protected]>
pci_mmap_page_range() is needed for X11-server support on C8000 with ATI FireGL card.
Signed-off-by Helge Deller <[email protected]>
arch/parisc/include/asm/pci.h +5 -0
@@ -225,4 +225,9 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) return channel ? 15 : 14; } +#define HAVE_PCI_MMAP + +extern int pci_mmap_page_range (struct pci_dev *dev,struct vm_area_struct *vma, +enum pci_mmap_state mmap_state,int write_combine); +#endif /* __ASM_PARISC_PCI_H */
arch/parisc/kernel/pci.c +27 -0
@@ -220,6 +220,33 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res, } +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 ; + +if (write_combine) +return -EINVAL ; + +/* +* Ignore write-combine; for now only return uncached mappings. +*/ + prot =pgprot_val (vma->vm_page_prot); + prot |= _PAGE_NO_CACHE; + 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); +} +/* * A driver is enabling the device. We make sure that all the appropriate * bits are set to allow the device to operate as the driver is expecting.
Quoted 6 lines · Helge Deller
From: Thomas Bogendoerfer <[email protected]>
pci_mmap_page_range()is needed for X11-server support on C8000 with ATI FireGL card.Signed-off-by Helge Deller <[email protected]>
You could add my Acked-By or Signed-off-by whatever fits your needs.
Thomas.
Signature · 2 lines
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]