<div dir="ltr">AFAIK, <span style="font-family:arial,sans-serif;font-size:13px">pci_ioremap_bar api</span><span style="color:rgb(0,0,0)"> provides an error-proof way (relative to pci_ioremap) for PCI memory remap.</span><div>
<span style="color:rgb(0,0,0)"><br></span></div><div style><span style="color:rgb(0,0,0)">After the mapping is successful, in case you are writing a portable code, use </span><span style="font-family:arial,sans-serif;font-size:13px">ioread8 api which provides platform abstraction to the re mapped registers.</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">Hope that helps.</span></div><div style><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">BR,</span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">Jayesh </span></div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Wed, Jun 26, 2013 at 12:42 PM, Warlich, Christof <span dir="ltr">&lt;<a href="mailto:christof.warlich@siemens.com" target="_blank">christof.warlich@siemens.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
can anyone explain when I should use<br>
<br>
void __iomem *regs = pci_iomap(device, barNumber, 0);<br>
<br>
and when<br>
<br>
void __iomem *regs = pci_ioremap_bar(device, barNumber);<br>
<br>
is more appropriate to map PCI memory?<br>
<br>
Furthermore, after the mapping succeeded, when may I<br>
directly access the mapped memory, e.g.:<br>
<br>
char firstByte = *regs;<br>
<br>
and when should I better use ioread8() instead?:<br>
<br>
char firstBype = ioread8(regs);<br>
<br>
All listed alternatives from above seems to work equally<br>
well for me (on x86), so I&#39;m curious to learn what might<br>
be the difference. A guess: Does ioread8() work for both<br>
memory mapped _and_ IO mapped registers, while the direct<br>
access only works for the memory mapped case?<br>
<br>
Thanks for any clarification.<br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</blockquote></div><br></div>