PPC PCI bus registers
Eddie Dawydiuk
eddie at embeddedarm.com
Thu Sep 17 04:58:24 EST 2009
Benjamin,
> Also, if you're going to access a PCI device directly, beware of other
> issues such as ordering. PPC is an out of order architecture, you need
> to ensure you add the appropriate memory barriers if you want to ensure
> you accesses are done in the order you write them in your program.
>
> For "standard" stuff that doesn't involve DMA or locks, an eieio after
> both MMIO loads and stores should do the trick.
I'm not sure I understand. To clarify I have an FPGA connected via the PCI bus
which implements several peripherals, I've implemented device drivers for.
Currently I am calling ioremap() to get a virtual address corresponding to the
PCI devices. Then I use ___raw_writeN / ___raw_readN for reading/writing data
via the PCI bus to the FPGA registers. From looking at io.h I believe this
method is safe with regard to out of order execution.
"* ioremap is the standard one and provides non-cacheable guarded mappings
* and can be hooked by the platform via ppc_md "
Can you verify if my understanding is correct, or let me know if I need to add
memory barriers?
--
Best Regards,
________________________________________________________________
Eddie Dawydiuk, Technologic Systems | voice: (480) 837-5200
16525 East Laser Drive | fax: (480) 837-5300
Fountain Hills, AZ 85268 | web: www.embeddedARM.com
More information about the Linuxppc-dev
mailing list