Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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>
+3 −0
Original line number Original line Diff line number Diff line
@@ -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)
+14 −1
Original line number Original line Diff line number Diff line
@@ -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);