Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/microblaze/pci/iomap.c
10817 views
1
/*
2
* ppc64 "iomap" interface implementation.
3
*
4
* (C) Copyright 2004 Linus Torvalds
5
*/
6
#include <linux/init.h>
7
#include <linux/pci.h>
8
#include <linux/mm.h>
9
#include <asm/io.h>
10
#include <asm/pci-bridge.h>
11
12
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
13
{
14
resource_size_t start = pci_resource_start(dev, bar);
15
resource_size_t len = pci_resource_len(dev, bar);
16
unsigned long flags = pci_resource_flags(dev, bar);
17
18
if (!len)
19
return NULL;
20
if (max && len > max)
21
len = max;
22
if (flags & IORESOURCE_IO)
23
return ioport_map(start, len);
24
if (flags & IORESOURCE_MEM)
25
return ioremap(start, len);
26
/* What? */
27
return NULL;
28
}
29
EXPORT_SYMBOL(pci_iomap);
30
31
void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
32
{
33
if (isa_vaddr_is_ioport(addr))
34
return;
35
if (pcibios_vaddr_is_ioport(addr))
36
return;
37
iounmap(addr);
38
}
39
EXPORT_SYMBOL(pci_iounmap);
40
41