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