pci_iomap() and pci_ioremap_bar()
From: JAYESH TANK <hidden>
Date: 2013-06-27 08:26:36
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@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