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.warl...@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@kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to