June 26, 2013
7:12 a.m.
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.