pci_iomap() and pci_ioremap_bar()

JAYESH TANK jayeshece08 at gmail.com
Thu Jun 27 04:26:36 EDT 2013


AFAIK, pci_ioremap_bar api provides an error-proof way (relative to
pci_ioremap) for PCI memory remap.

After the mapping is successful, in case you are writing a portable code,
use ioread8 api which provides platform abstraction to the re mapped
registers.

Hope that helps.

BR,
Jayesh


On Wed, Jun 26, 2013 at 12:42 PM, Warlich, Christof <
christof.warlich at siemens.com> wrote:

> Hi,
>
> can anyone explain when I should use
>
> void __iomem *regs = pci_iomap(device, barNumber, 0);
>
> and when
>
> void __iomem *regs = pci_ioremap_bar(device, barNumber);
>
> is more appropriate to map PCI memory?
>
> Furthermore, after the mapping succeeded, when may I
> directly access the mapped memory, e.g.:
>
> char firstByte = *regs;
>
> and when should I better use ioread8() instead?:
>
> char firstBype = ioread8(regs);
>
> All listed alternatives from above seems to work equally
> well for me (on x86), so I'm curious to learn what might
> be the difference. A guess: Does ioread8() work for both
> memory mapped _and_ IO mapped registers, while the direct
> access only works for the memory mapped case?
>
> Thanks for any clarification.
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20130627/2e245100/attachment-0001.html 


More information about the Kernelnewbies mailing list