
Hi Larry,
On Monday 14 January 2008, Larry Johnson wrote:
I'm not convinced about in_be32() et al. yet. Section 2.10.3 of the AMCC PPC440 User's manual says that an "msync" (sync) is required between the memory access and the control-register access. ("mbar" (eieio) is not sufficient because the control-register access is not treated as I/O.)
If I'm reading these correctly, in_be32() does a "sync", load, "twi" (which I don't understand), and "isync". out_be32() does a "sync" and a store. Thus, neither force completion of the I/O before exiting.
Am I right then that I should include a specific sync before accessing the SDRAM control registers?
From your explanation above, it could make sense to add an additional sync between the memory access and the control register access. This would depend on the control register type and how it is accessed in the code. If it is a memory mapped register and accessed via the in_be32() functions, the additional sync is not needed. But if it is a SPR/DCR type of register, the sync makes sense to me.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================