Commit 5ca24814 authored by Rolf Eike Beer's avatar Rolf Eike Beer Committed by Greg Kroah-Hartman

PCI: Document pci_iomap()

This useful interface is hardly mentioned anywhere in the in-tree
documentation.
Signed-off-by: default avatarRolf Eike Beer <eike-kernel@sf-tec.de>
Cc: Tejun Heo <htejun@gmail.com>
Acked-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4e68fc97
...@@ -316,7 +316,8 @@ CPU B: spin_unlock_irqrestore(&amp;dev_lock, flags) ...@@ -316,7 +316,8 @@ CPU B: spin_unlock_irqrestore(&amp;dev_lock, flags)
<chapter id="pubfunctions"> <chapter id="pubfunctions">
<title>Public Functions Provided</title> <title>Public Functions Provided</title>
!Einclude/asm-i386/io.h !Iinclude/asm-i386/io.h
!Elib/iomap.c
</chapter> </chapter>
</book> </book>
...@@ -112,6 +112,9 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign ...@@ -112,6 +112,9 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign
* writew/writel functions and the other mmio helpers. The returned * writew/writel functions and the other mmio helpers. The returned
* address is not guaranteed to be usable directly as a virtual * address is not guaranteed to be usable directly as a virtual
* address. * address.
*
* If the area you are trying to map is a PCI BAR you should have a
* look at pci_iomap().
*/ */
static inline void __iomem * ioremap(unsigned long offset, unsigned long size) static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
......
...@@ -240,7 +240,20 @@ void ioport_unmap(void __iomem *addr) ...@@ -240,7 +240,20 @@ void ioport_unmap(void __iomem *addr)
EXPORT_SYMBOL(ioport_map); EXPORT_SYMBOL(ioport_map);
EXPORT_SYMBOL(ioport_unmap); EXPORT_SYMBOL(ioport_unmap);
/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ /**
* pci_iomap - create a virtual mapping cookie for a PCI BAR
* @dev: PCI device that owns the BAR
* @bar: BAR number
* @maxlen: length of the memory to map
*
* Using this function you will get a __iomem address to your device BAR.
* You can access it using ioread*() and iowrite*(). These functions hide
* the details if this is a MMIO or PIO address space and will just do what
* you expect from them in the correct way.
*
* @maxlen specifies the maximum length to map. If you want to get access to
* the complete BAR without checking for its length first, pass %0 here.
* */
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
{ {
unsigned long start = pci_resource_start(dev, bar); unsigned long start = pci_resource_start(dev, bar);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment